2013-10-31 25 views
5

quando si converte html in pdf utilizzando itextsharp lo stile iam che si applica con css per la pagina Web non funziona nel pdf convertito.Converti HTML in PDF utilizzando itextsharp

Ecco il mio codice css:

<style type="text/css"> 
     .cssformat 
      { 
       width:300px; 
       height:200px; 
       border:2px solid black; 
       background-color:white; 
       border-top-left-radius:60px 90px; 
       border-bottom-right-radius:60px 90px; 
     }     
     </style> 

Ecco il mio codice html:

 <div id="divpdf" runat="server"> 
     <table id="tid" runat="server"> 
     <tr> 
     <td> 
     <asp:Label ID="Label1" runat="server" Text="this is new way of pdf" CssClass="cssformat"></asp:Label> 
     </td> 
     </tr> 
     </table> 
     </div> 

Quello che segue è quello che ho provato con C#:

Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringBuilder sb = new StringBuilder(); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     Document pdfDoc = new Document(PageSize.A4, 60f, 80f, -2f, 35f); 
     divpdf.RenderControl(hw); 
     StringReader sr = new StringReader(sw.ToString()); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     hw1.Parse(new StringReader(sttt)); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.Write(pdfDoc); 
     Response.End(); 
     sw.Close(); 
     sr.Close(); 
     hw.Close(); 

risposta

4

Ho faticato parecchio a convertire da HTML a PDF usando iTextSharp e alla fine ho rinunciato perché non riuscivo a ottenere un PDF convertito che sembrava al 100% uguale alla mia pagina HTML5/CSS3. Quindi ti sto dando l'alternativa che alla fine ha funzionato per me.

Ci sono sorprendentemente poche opzioni disponibili quando non si è disposti a pagare per una biblioteca commerciale. Ho avuto lo stesso requisito da uno dei miei clienti (per convertire da HTML a PDF) che non volevo pagare per gli strumenti di terze parti, quindi ho dovuto fare un piano. Questo è quello che ho fatto, non la soluzione migliore, ma ha svolto il lavoro

Ho scaricato la versione più recente di wkhtmltopdf. Sfortunatamente lo strumento wkhtmltopdf non ha mostrato alcuni dei miei grafici google incorporati nel mio HTML durante la conversione in PDF. Così ho usato lo strumento wkhtmltoimage incluso anche per convertire in un PNG, che si è svegliato come previsto e ha visualizzato tutti i grafici. Ho quindi scaricato la versione più recente di imagemagick e ho convertito il file PNG in PDF. Ho automatizzato questo processo usando C#.

Purtroppo questa non è la soluzione più elegante perché devi eseguire due conversioni e fare un po 'di lavoro per automatizzare tutto, ma questa è la soluzione migliore che ho potuto ottenere e che mi ha dato i risultati e la qualità desiderati.

Ovviamente ci sono molti software commerciali là fuori che faranno un lavoro più veloce e migliore.

Solo una nota a margine:

La pagina Web che ho dovuto convertire stata devloped in HTML5 e CSS3 utilizzando la versione 3 di bootstrap e conteneva alcuni grafici e tabelle di Google. Tutto è stato convertito senza problemi.

-1

Il formato di output di <asp:Lable> è "span", che è il tipo di visualizzazione inline. Quindi cambia il display per bloccare. Enjoy ..

Problemi correlati