今天看到園友分享的 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();