2013-10-29 46 views
3

我正在用C#網站在asp.net中工作。我想轉換一個包含各種HTML元素,如div,標籤,表格和圖像與CSS樣式(背景顏色,cssClass等)的HTML DIV,我希望它的整個內容使用iTextSharp DLL轉換爲PDF,但在這裏我面臨一個問題是css沒有得到應用。任何人都可以通過提供任何示例或代碼片段來幫助我。使用iTextSharp將HTML與CSS轉換爲PDF

+0

你有使用iTextSharp的?我發現http://code.google.com/p/wkhtmltopdf/非常有效地完成了我的HTML - > PDF免費轉換 – DaveDev

+0

是的......但是wkhtmltopdf是否可以使用asp.net和C#? – Superman

+0

我已經在mvc c#.net應用程序中使用iTextXmlWorker完成了此操作。如果它是有用的,讓我知道,我會發布一些信息的答案。 – hutchonoid

回答

0

檢出Pechkin,一個用於wkhtmltopdf的C#包裝器。

特別是在這個時間點(考慮一個掛起的請求),我會檢查出this fork,它解決了幾個bug(在我的經驗中特別有用)。

如果你不用fork /得到其他的穩定性問題,你可能想看看有什麼「渲染隊列」(例如在數據庫中)並且有後臺進程(例如Windows服務)定期運行通過隊列和渲染,然後將二進制內容存儲在某處(無論是在數據庫中還是在文件系統上)。這完全取決於你的用例。

或者the similar solution @DaveDev有評論鏈接到。

0

安裝2的NuGet包iTextSharp的和itextsharp.xmlworker和使用下面的代碼:

using iTextSharp.text; 
using iTextSharp.text.pdf; 
using iTextSharp.tool.xml; 


byte[] pdf; // result will be here 

var cssText = File.ReadAllText(MapPath("~/css/test.css")); 
var html = File.ReadAllText(MapPath("~/css/test.html")); 

using (var memoryStream = new MemoryStream()) 
{ 
      var document = new Document(PageSize.A4, 50, 50, 60, 60); 
      var writer = PdfWriter.GetInstance(document, memoryStream); 
      document.Open(); 

      using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText))) 
      { 
       using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html))) 
       { 
        XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream); 
       } 
      } 

      document.Close(); 

      pdf = memoryStream.ToArray(); 
}