高分辨率转HTML成PDF(ephtmltopdf.dll)
今天看到园友分享的 wkhtmtopdf--高分辨率转HTML成PDF(三)
想起我做 一键保存网页为PDF_V1.2 的时候,也研究过一段时间这个,一开始也看的是wkhtmltopdf,不过发现wkhtmltopdf不好用:
1、中文支持不好
2、组件较大,有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
ephtmltopdf.dll的功能优势:
-支持HTML5和CSS3功能,包括画布和SVG
-支持内联SVG在HTML文档
-支持网络字体
-支持Web开放字体格式WOFF
-强大的html5/css3/javascript渲染引擎
-组件很小,只有1M多,而wkhtmtopdf有20多M
效果参见 一键保存网页为PDF_V1.2 ,这里就只介绍一下用法了。
主要代码如下,即可将HTML保存为本地的PDF文件了
1 2 3 4 5 6 7 8 9 | 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); } |
当然,该组件还可以直接获取到二进制流,如下示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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(); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?