C#導出HTML到PDF組件 Pechkin


C#導出PDF功能是開發中經常遇到的功能,我們采用第三方的組件,比如 iTextSharp, aspose等,還能搜到一些開源的類庫,

但是對於一些內容復雜樣式豐富的PDF,我們希望通過傳入一個URL直接生成一個PDF,並且不能與網頁原版差異太大,Pechkin倒是不錯,相對來說差異很小。

 

在 Nuget 管理器中搜索“Pechkin”,請選擇 CPechkin For .Net20+,這個組件是作者在 Pechkin 基礎上修改的,剔除了 Common.Loging 依賴,描述中說項目必須是x86編譯,但我發現,設置成 Any CPU也可以,但是如果是Web項目,部署到IIS后,應用程序池高級設置中必須選擇啟用32位應用程序,否則運行會報錯。

包加載完畢后,會在項目根目錄下放置幾個DLL,這些是 Pechkin 依賴的,如果想刪除,請先將這幾個DLL拷貝到bin下

編譯后,BIN下面有7個相關的DLL,這就是 Pechkin 的全部

調用代碼很簡單,兩行就搞定了,SetMargins 設設置PDF的頁邊距。

Pechkin.Synchronized.SynchronizedPechkin sc = new Pechkin.Synchronized.SynchronizedPechkin(new Pechkin.GlobalConfig().SetMargins(new System.Drawing.Printing.Margins(20, 20, 20, 20)));
byte[] buf = sc.Convert(new Uri(previewUrl));

var
ms = new System.IO.MemoryStream(buf); var fn = string.Format("report_{0}.pdf", reportNo); Logger.Instance.WriteLine("Generate a pdf from url {0}", previewUrl); return new List<System.Net.Mail.Attachment> { new System.Net.Mail.Attachment(ms, fn, "application/pdf") };

 

得到一個 byte[]后,你可以寫入一個文件產生一個PDF。我在代碼中寫入一個MemoryStream,然后加入郵件的附件發送,很方便。

Pechkin也支持傳入一段HTML代碼,生成一個PDF。

 

再看生成出來的PDF,左邊是PDF,右邊是原版網頁,差別不大,就是表格的背景色丟失。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM