2013-10-31 107 views
5

使用itextsharp將html轉換爲pdf時,使用CSS的網頁樣式iam不適用於轉換後的pdf。使用itextsharp將HTML轉換爲PDF

這裏是我的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> 

這裏是我的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> 

下面是我用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(); 

回答

4

我掙扎了很多,使用iTextSharp從HTML轉換爲PDF,並最終放棄了,因爲我無法獲得轉換的PDF看起來與我的HTML5/CSS3頁面100%相同。所以我給你最終爲我工作的替代方案。

當您不準備爲商業圖書館付費時,您會驚訝地發現很少的選項。我和我的一個客戶(從HTML轉換爲PDF)有相同的要求,不想爲任何第三方工具支付費用,所以我必須制定計劃。這是我所做的,不是最好的解決方案,但它完成了工作

我下載了最新版本的wkhtmltopdf。不幸的是,當轉換爲PDF時,wkhtmltopdf工具沒有顯示我的HTML中嵌入的一些谷歌圖表。所以我使用wkhtmltoimage工具也包括轉換爲一個PNG,它按預期啓動並顯示所有圖表。 然後我下載了最新版本的imagemagick並將PNG轉換爲PDF。我使用C#自動化了這個過程。

不幸的是,這不是最優雅的解決方案,因爲您必須執行兩次轉換並完成一些工作來自動化所有事情,但這是我能想到的最好的解決方案,它給了我想要的結果和質量。

當然,有很多商業軟件可以做更快更好的工作。

只是一個側面說明:

的網頁,我不得不在HTML5和CSS3使用自舉3版本devloped轉換,它包含了一些谷歌的圖形和圖表。一切都轉換沒有任何問題。

-1

輸出格式<asp:Lable>是「跨度」,這是內聯類型的顯示。所以改變屏幕顯示。享受..