2009-04-27 6 views
2

Est-ce que quelqu'un sait comment obtenir un contenu html, le convertir en pdf et l'enregistrer dans la base de données?Comment obtenir du contenu html et le convertir en PDF avec itextsharp?

J'ai essayé tellement de façons, mais rien ne semble fonctionner. Dans certains articles, il est écrit pour utiliser HTMLParse, dans d'autres HTMLWorker ... parfois jette une erreur "document n'a pas de pages" ... parfois, il jette une exception mais il n'a pas spécifié l'erreur ...

Est-ce que quelqu'un sait un bon moyen de faire cela? J'utilise C# 3.0, ASP.NET MVC et LinQToSQL.

Merci d'avance et beaucoup !!

Répondre

2

Pour HTML vers PDF j'ai tendance à regarder HTMLDoc. C'est un exe et non une bibliothèque, donc ce n'est peut-être pas exactement ce que vous cherchez, mais ça vous fera probablement passer la balle.

regardant le livre iText, Lowagie dit:

« L'une des questions fréquentes sur la liste de diffusion iText est,« Est-ce que iText fournissent des fonctionnalités HTML2PDF? La réponse officielle est non, il est conseillé d'utiliser HtmlDoc ou ICEBrowser. " Il continue ensuite à montrer un exemple de HTMLParser, mais souligne qu'il ne s'agit pas de l'énorme travail d'analyse et de présentation HTML.

0
public class Pdf : IPdf 
    { 
     public FileStreamResult Make(string s) 
     { 
      using (var ms = new MemoryStream()) 
      { 
       using (var document = new Document()) 
       { 
        PdfWriter.GetInstance(document, ms); 
        document.Open(); 
        using (var str = new StringReader(s)) 
        { 

         var htmlWorker = new HTMLWorker(document); 

         htmlWorker.Parse(str); 
        } 
        document.Close(); 
       } 

       HttpContext.Current.Response.ContentType = "application/pdf"; 
       HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=MyPdfName.pdf"); 
       HttpContext.Current.Response.Buffer = true; 
       HttpContext.Current.Response.Clear(); 
       HttpContext.Current.Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
       HttpContext.Current.Response.OutputStream.Flush(); 
       HttpContext.Current.Response.End(); 

       return new FileStreamResult(HttpContext.Current.Response.OutputStream, "application/pdf"); 
      } 
     } 
    } 
Questions connexes