今天看到园友分享的 wkhtmtopdf--高分辨率转HTML成PDF(三) javascript
想起我作 一键保存网页为PDF_V1.2 的时候,也研究过一段时间这个,一开始也看的是wkhtmltopdf,不过发现wkhtmltopdf很差用:css
一、中文支持很差
二、组件较大,有20多M吧
后来看到这个(ephtmltopdf.dll) http://www.html-to-pdf.net/
不过这个的试用版有版权信息,通过个人反复折腾,终于破解了它,去掉了版权信息。
有须要的能够去 http://download.csdn.net/detail/bdstjk/6007387
下载,提取破解后的DLL,也能够经过官方试用下载页获取试用DLL,http://www.html-to-pdf.net/Download.aspx html
ephtmltopdf.dll的功能优点:html5
-支持HTML5和CSS3功能,包括画布和SVG java
-支持内联SVG在HTML文档 css3
-支持网络字体 网络
-支持Web开放字体格式WOFF post
-强大的html5/css3/javascript渲染引擎字体
-组件很小,只有1M多,而wkhtmtopdf有20多Murl
效果参见 一键保存网页为PDF_V1.2 ,这里就只介绍一下用法了。
主要代码以下,便可将HTML保存为本地的PDF文件了
public void Use_ephtmltopdf(string URL, string outFile) { PdfConverter pdfConverter = new PdfConverter(); pdfConverter.PdfDocumentOptions.EmbedFonts = false; pdfConverter.PdfDocumentOptions.ShowFooter = false; pdfConverter.PdfDocumentOptions.ShowHeader = false; pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true; pdfConverter.SavePdfFromUrlToFile(URL, outFile); }
固然,该组件还能够直接获取到二进制流,以下示例:
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4; pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Normal; pdfConverter.PdfDocumentOptions.ShowHeader = true; pdfConverter.PdfDocumentOptions.ShowFooter = true; pdfConverter.PdfDocumentOptions.LeftMargin = 5; pdfConverter.PdfDocumentOptions.RightMargin = 5; pdfConverter.PdfDocumentOptions.TopMargin = 5; pdfConverter.PdfDocumentOptions.BottomMargin = 5; pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true; pdfConverter.PdfDocumentOptions.ShowHeader = false; //pdfConverter.PdfHeaderOptions.HeaderText = "Sample header: " + TxtURL.Text; //pdfConverter.PdfHeaderOptions.HeaderTextColor = Color.Blue; //pdfConverter.PdfHeaderOptions.HeaderDescriptionText = string.Empty; //pdfConverter.PdfHeaderOptions.DrawHeaderLine = false; pdfConverter.PdfFooterOptions.FooterText = "Sample footer: " + TxtURL.Text + ". You can change color, font and other options"; pdfConverter.PdfFooterOptions.FooterTextColor = Color.Blue; pdfConverter.PdfFooterOptions.DrawFooterLine = false; pdfConverter.PdfFooterOptions.PageNumberText = "Page"; pdfConverter.PdfFooterOptions.ShowPageNumber = true; //pdfConverter.LicenseKey = "put your serial number here"; byte[] downloadBytes = pdfConverter.GetPdfFromUrlBytes(url); System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; response.Clear(); response.AddHeader("Content-Type", "binary/octet-stream"); response.AddHeader("Content-Disposition", "attachment; filename=" + downloadName + "; size=" + downloadBytes.Length.ToString()); response.Flush(); response.BinaryWrite(downloadBytes); response.Flush(); response.End();