將網頁轉化為pdf供打印和下載,是個普遍的功能,項目中遇到整理下。
前台瀏覽器
通過jspdf
javascript庫在瀏覽器端生成pdf
優點: 可用通過前台搞定,不用添加后台方法
缺點:
- pdf布局麻煩
- 不支持
Unicode
,所以不支持中文。(當然也有解決辦法但需要依賴字體文件,文件太大不理想)
后台實現
后台實現的方法有很多種,大概原理為:通過一個瀏覽器內核程序接受HTML內容解析,在生成pdf。所以后台生成pdf支持:
- 根源URL生成pdf
- 根據HTML內容生成pdf
WkHtmlToPdf
該工具的功能就是把html轉為pdf文件用於存檔。 為了使用該工具必須先要下載該工具。該工具為exe
文件。
這里介紹簡單好用的https://www.nrecosite.com/pdf_generator_net.aspx
,.Net
對exe
的調用提供了包裝。不要看到他是郵費的被嚇到,其實用免費的功能就能滿足。
- 引用動態庫
NReco.PdfGenerator.dll
- 代碼操作簡單,這里舉例將html內容轉化為pdf流
private Stream ConvertHtmlToPDF(string htmlContent)
{
MemoryStream pdfStream = new MemoryStream();
var htmlToPdf = new HtmlToPdfConverter();
htmlToPdf.GeneratePdf(htmlContent, null, pdfStream);
return pdfStream;
}