zoukankan      html  css  js  c++  java
  • 高分辨率转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文件了

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

      

  • 相关阅读:
    oracle过期备份未删除导致磁盘撑爆
    数据文件、监听日志、告警日志、redo日志、归档日志的迁移
    linux软件卸载命令
    Nginx版本平滑升级方案
    rsync 服务搭建
    在node节点部署kubectl管理k8s集群
    源码编译安装nginx及设置开机启动项
    K8S日常运维中关于“ImagePullBackOff”报错的处理思路分析
    查看所有日志命令:journalctl
    Docker编排工具Docker Compose的使用
  • 原文地址:https://www.cnblogs.com/bdstjk/p/3540099.html
Copyright © 2011-2022 走看看