高分辨率转HTML成PDF(ephtmltopdf.dll)

BDS 2014-02-08 09:51:12
今天看到博友分享的 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文件了




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();

  



...全文
499 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_30051869 2015-12-24
  • 打赏
  • 举报
回复
这个只是个安装文件啊,PDF_V1.2_Setup (1).exe,不是dll的
shiyuyao1987 2015-12-22
  • 打赏
  • 举报
回复
服务器上中文显示空白,要怎么处理
SomethingJack 2014-11-23
  • 打赏
  • 举报
回复
之前也使用过这个组件做过转换工作。直接用的那个.exe
羽良 2014-11-23
  • 打赏
  • 举报
回复
楼主试过新浪微博吗?新浪微博转成的是空的
prosperwang 2014-08-06
  • 打赏
  • 举报
回复
这个delphi 能用吗
BDS 2014-03-07
  • 打赏
  • 举报
回复
引用 4 楼 boazhan 的回复:
大神能问下是怎么破解的么?!
反编译+反混淆+IL反汇编 这个只能告诉你这么多了,靠自己去尝试了,不同的DLL用的方法肯定不一样,基本的就这几种手段
boazhan 2014-03-06
  • 打赏
  • 举报
回复
大神能问下是怎么破解的么?!
leeya66 2014-02-09
  • 打赏
  • 举报
回复
网页转PDF,不知道在什么场景可以用到,
BDS 2014-02-08
  • 打赏
  • 举报
回复
引用 1 楼 boylee83 的回复:
刚在博客园看到。
哈哈,多发几个地方,多点人看看
  • 打赏
  • 举报
回复
刚在博客园看到。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧