精华内容
下载资源
问答
  • 利用wkhtmltopdf插件做html转换PDF并实行在线打印或下载
    2020-12-20 15:06:23

    最近项目需要使用到html转PDF,如翻阅了很多资料,自己整理了如下的内容做个笔记

    博客:https://www.jianshu.com/p/559c594678b6
    官方下载:https://wkhtmltopdf.org/downloads.html
    我们一起踩过一坑:https://blog.csdn.net/qq_39541254/article/details/107541497
    asp.net转换实例:https://www.cnblogs.com/ztf20/archive/2004/01/13/10414832.html

    1、下载好 默认安装路径:C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
    2、根据情况把你安装wkhtmltopdf目录下的bin子目录加到 PATH 环境变量
    3、导入类pdfconvert.cs  设计web.config 的wkhtmltopdf.exe路径如下 
    <configuration>  
      <appSettings>
        <add key="wkhtmltopdf:path" value="C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"/>
      </appSettings>
    </configuration>  
    4、定义css类分页,增加qrcode.min.js 二维码连接,引入JS jquery.min.js 如下代码  增加生成动态二维码方法
    string str = string.Format(@"<style>div{0}</style> <script src=""Scripts/jquery.min.js""></script><script src=""Scripts/qrcode.min.js""></script><script>{1}</script><div id=""tpdf"">", "{page-break-before:always;font-size:8px;}", "function makeCode(_div,str){var qrcode = new QRCode(document.getElementById(_div),{width:80,height:80});qrcode.makeCode(str);}");
    5、后台动态接拼代码 :
     for (int i = 0; i < 100; i++)
            {
                str += string.Format(@"<div id=""qrcode{0}"" >測試" + i.ToString()+"</div>",i.ToString());
                endstr += string.Format(@"makeCode(""qrcode{0}"",""{1}"");", i.ToString(),i.ToString());
            }
            endstr += "</script>";

    6、调用转pdf方法
     PdfConvert.ConvertHtmlToPdf(
                new PdfDocument { Html = str,
                    Pageheight="80mm", //页面尺码
                    Pagewidth="30mm", //页面尺码
                    marginbottom="0mm", //边距
                    marginleft = "0mm",
                    marginright = "0mm",
                    margintop = "0mm"               
                },
                new PdfOutput { OutputFilePath = outpath }, true
            );

    7、整个调用方法如下

     protected void Button3_Click(object sender, EventArgs e)
        {
            string url = @"https://www.baidu.com";
            string filename = Guid.NewGuid().ToString();
            string pdfpath = filename + ".pdf";
            string outpath = Server.MapPath(pdfpath);
            Console.InputEncoding = Encoding.UTF8;
            PdfConvert.Environment.Debug = false;

            string endstr = "<script>";
            string str = string.Format(@"<style>div{0}</style><script src=""Scripts/jquery.min.js""></script><script src=""Scripts/qrcode.min.js""></script><script>{1}</script>", "{page-break-before:always;font-size:8px;}", "function makeCode(_div,str){var qrcode = new QRCode(document.getElementById(_div),{width:80,height:80});qrcode.makeCode(str);}");
            for (int i = 0; i < 100; i++)
            {
                str += string.Format(@"<div id=""qrcode{0}"" >測試" + i.ToString()+"</div>",i.ToString());
                endstr += string.Format(@"makeCode(""qrcode{0}"",""{1}"");", i.ToString(),i.ToString());
            }
            endstr += "</script>";
            str += endstr;
            str11 = str;
            PdfConvert.ConvertHtmlToPdf(
                new PdfDocument { Html = str,
                    Pageheight="80mm",  
                    Pagewidth="30mm",
                    marginbottom="0mm",
                    marginleft = "0mm",
                    marginright = "0mm",
                    margintop = "0mm"               
                },
                new PdfOutput { OutputFilePath = outpath }, true
            );
          Response.Redirect(pdfpath); //转换后直接打开
        }
    protected void Page_Load(object sender, EventArgs e)
        {
            Button3.Attributes.Add("onclick", "this.form.target='_blank'");
        }
    ###################################################################
    动态数据转换成PDF当方法:
    <script  type="text/javascript">
         document.getElementById("downpdf").onclick = function (){
         var pages = document.querySelector('#divElehtml').children;//转PDF档起始元素divEle ID      
             console.log(pages[1].outerHTML);
             var str = "";
             for (var i = 0; i < pages.length; i++) {
                 str += pages[i].outerHTML;
             }
             console.log(str);
            
             $.ajax({
                 type: "post",
                 url: "./html2pdf/html2pdf.ashx",
                 async: false,//同步
                 data: {
                     Method: 'ExceclPDF2',
                     HtmlStr:encodeURIComponent(str),//注意这里必须要进行转码,负责Ajax会报错 (已经把+号变成空格了) encodeURI会造成空格就成+号,请用encodeURIComponent
                 },
                 success: function (result) {
                     //获取返回参数
                     if (result != undefined && result != "") {
                         //请求下载pdf的url                        
                      // window.location.href = result;
                         window.open(result);
                     }
                 }
             });
         }  
        </script>   

    html2pdf.ashx代码如下
    ----------------------------------------------------------------------------------------------------------
     public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";            
                string ssss = Convert.ToString(context.Request.Params["HtmlStr"]);
                int MaxAndln = Convert.ToInt32(context.Request.Params["MaxAndln"].ToString());//订单编号与裁床单ID
                string htmlStr = HttpUtility.UrlDecode(ssss);            
                string htmlfileName = "html2pdf" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
                string htmlSavPath = context.Request.MapPath("~/slip/print/HtmlFile/" + htmlfileName);                     
                string html = @"<html xmlns=""http://www.w3.org/1999/xhtml"" > <head runat=""server"" ></head><body>" + htmlStr + "</body></html>

    更多相关内容
  • wkhtmltopdf

    2017-07-04 10:44:30
    适用于windows平台,十分强大的html转pdf工具。具体使用方法可自行百度相关博客
  • wkhtmltopdf and wkhtmltoimage wkhtmltopdf and wkhtmltoimage are command line tools to render HTML into PDF and various image formats using the QT Webkit rendering engine. These run entirely "headless...
  • 首先需要安装wkhtmltopdf,不同系统有不同的安装反思,同时这也是它的缺点 第一种方式,写纯的命令,我直接贴实现代码,对原理感兴趣的自己去挖掘 输出流工具 public class HtmlToPdfInterceptor extends Thread { ...

    我在这里推荐两种方式
    首先需要安装wkhtmltopdf,不同系统有不同的安装反思,同时这也是它的缺点

    第一种方式,写纯的命令,我直接贴实现代码,对原理感兴趣的自己去挖掘

    输出流工具

    public class HtmlToPdfInterceptor extends Thread {
        private InputStream is;
        
        public HtmlToPdfInterceptor(InputStream is){
            this.is = is;
        }
        
        public void run(){
            try{
                InputStreamReader isr = new InputStreamReader(is, "utf-8");
                BufferedReader br = new BufferedReader(isr);
                String line = null;
                while ((line = br.readLine()) != null) {
                    //输出内容
                    System.out.println(line.toString());
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
    

    pdf生成工具

    public class HtmlToPdf {
        /**
         * wkhtmltopdf在windows系统中的路径
         */
        private static final String toPdfTool = "D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
        /**
         * wkhtmltopdf在linux系统中的路径
         */
        //private static final String toPdfTool ="//home1//software//wkhtmltopdf//wkhtmltox//bin//wkhtmltopdf";
    
        /**
         * html转pdf
         *
         * @param srcPath  html路径,可以是硬盘上的路径,也可以是网络路径
         * @param destPath pdf保存路径
         * @return 转换成功返回true
         */
        public static boolean convert(String srcPath, String destPath) {
            File file = new File(destPath);
            File parent = file.getParentFile();
            //如果pdf保存路径不存在,则创建路径
            if (!parent.exists()) {
                parent.mkdirs();
            }
    
            StringBuilder cmd = new StringBuilder();
            cmd.append(toPdfTool);
            cmd.append(" ");
            cmd.append("--page-size A4");
            //页眉下面的线
            cmd.append("");
            //页眉中间内容
            cmd.append(" ");
            //cmd.append("  --margin-top 30mm ");//设置页面上边距 (default 10mm)
            //    (设置页眉和内容的距离,默认0)
            cmd.append("");
            cmd.append(srcPath);
            cmd.append(" ");
            cmd.append(destPath);
    
            boolean result = true;
            try {
                Process proc = Runtime.getRuntime().exec(cmd.toString());
                HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream());
                HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream());
                error.start();
                output.start();
                proc.waitFor();
            } catch (Exception e) {
                result = false;
                e.printStackTrace();
            }
    
            return result;
        }
    
        public static void main(String[] args) {
            //HtmlToPdf.convert("http://localhost:8080/TestFtl2/hello", "d:/wkhtmltopdf.pdf");//网页
            //本地
            HtmlToPdf.convert("http://localhost/client-zh/#/resume", "D:简历.pdf");
        }
    }
    

    第二种方式,使用开源的java-wkhtmltopdf-wrapper

    • 引入依赖
     <!--pdf-->
            <dependency>
                <groupId>com.github.jhonnymertz</groupId>
                <artifactId>java-wkhtmltopdf-wrapper</artifactId>
                <version>1.1.12-RELEASE</version>
            </dependency>
    
    • 写代码
      参数
    /**
     * @author maple
     * @date 2020/7/22
     */
    @Data
    @ApiModel("pdf下载")
    public class DownloadPdfBody {
    
        /**
         * 网页路径
         */
        @ApiModelProperty("网页路径")
        private String url;
    
        /**
         * 网页内容
         */
        @ApiModelProperty("网页内容(不可用)")
        private String urlHtmlString;
    
        /**
         * 文件保存路径
         */
        @ApiModelProperty("文件保存路径")
        private String path;
    
        /**
         * 文件名
         */
        @ApiModelProperty("文件名")
        private String fileName;
    
        /**
         * 是否添加目录
         */
        @ApiModelProperty("是否添加目录")
        private Boolean addToc = false;
    
        /**
         * 是否打包下载,根据日期生成目录
         */
        @ApiModelProperty("是否添加目录,根据日期生成目录打包下载")
        private Boolean ispackage = false;
    }
    
    

    pdf工具类

    /**
     * pdf工具类
     *
     * @author maple
     * @date 2020/7/22
     */
    @Component
    public class Wkhtmltopdf {
    
    
        public File downloadResumePdf(DownloadPdfBody downloadPdfBody) throws IOException, InterruptedException {
            String path = downloadPdfBody.getPath()+"/"+downloadPdfBody.getFileName()+".pdf";
            Pdf pdf = new Pdf();
            // 为目录添加样式
            //pdf.addTocParam(new Param("--xsl-style-sheet", "my_toc.xsl"));
    
            // ' wkhtmltopdf ' shell命令接受不同类型的选项,如全局、页面、页眉和页脚,以及toc。详情请参阅“wkhtmltopdf -H”。
            // 所有选项以数组形式传递,例如:
            //pdf.addParam(new Param("--no-footer-line"), new Param("--header-html", "/zhouzhiwengang/article/details/104802815"));
            pdf.addParam(new Param("--no-outline"));
            if (downloadPdfBody.getAddToc()){
                pdf.addToc();
            }
            if (!StringUtils.isEmpty(downloadPdfBody.getUrl())&downloadPdfBody.getUrl().length()>0){
                String url = downloadPdfBody.getUrl();
                pdf.addPageFromUrl(url);
                return saveAsByUrl(pdf,path);
            }
            if (!StringUtils.isEmpty(downloadPdfBody.getUrlHtmlString())&downloadPdfBody.getUrlHtmlString().length()>0){
                String htmlString = downloadPdfBody.getUrlHtmlString();
                pdf.addPageFromString(htmlString);
                return saveAsByHtmlString(pdf,path);
            }
            return null;
        }
    
        public File saveAsByUrl(Pdf pdf,String url){
            try {
                return pdf.saveAs(url);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public File saveAsByHtmlString(Pdf pdf,String htmlString){
            try {
                return pdf.saveAs(htmlString);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
    展开全文
  • wkhtmltopdf0.12.5 64 位.zip

    2020-02-24 10:28:28
    wkhtmltopdf 0.12.5 版本 安装包,的地址能访问但是下载太慢了,经常停止头很大。具体部署看我的博客https://blog.csdn.net/Programmer_FuQiang/article/details/104473280
  • wkhtmltopdf 使用wkhtmltopdf生成pdf并下载

    千次阅读 2019-05-16 05:57:08
    项目中要求导出pdf报告,之前使用的canvas转pdf但是当报告太大的时候会出问题,所以换成了后台去处理。...wkhtmltopdf 可谓是功能强大,漏洞百出,可能不是他的原因,毕竟依赖webkit外部程序。所以在我...

    项目中要求导出pdf报告,之前使用的canvas转pdf但是当报告太大的时候会出问题,所以换成了后台去处理。wkhtmltopdf从名字来看就一目了然,使用webkit把html渲染成pdf。由于水平很菜所以自己在开发过程中不断掉坑,现在总结一下希望能帮助到遇到同样问题的小伙伴。
    1.安装篇
    wkhtmltopdf 可谓是功能强大,漏洞百出,可能不是他的原因,毕竟依赖webkit外部程序。所以在我们下载的时候就要看好版本了,以ubuntu安装为例,命令行输入lsb_release -a
    在这里插入图片描述
    可以看到Codename:bionic,去wkhtmltopdf官网下载指定版本的deb包,如果是远程服务器,直接wget到服务器就好了,然后sudo apt install <download file>安装软件包。下载页面有这么一句话:在这里插入图片描述
    所以让我们遵循规定在下载下来xvfb sudoo apt install xvfb,这样环境就准备好了,我们最后的目的就会在xvfb环境下执行wkhtmltopdf命令。

    2.使用篇 先拿百度做例子如果你人品够好那么简单的很xvfb-run wkhtmltopdf www.baidu.com baidu.pdf,你会在当前目录收获一个pdf文件打开就是百度首页生成的pdf。这时候就万事具备了,但是很多时候我们去转换的页面是一个复杂的动态页面,有复杂的javascript需要在转换前执行,wkhtmltopdf -H查看文档在page options中有个--window-status <...>参数,这个参数的意思就是只有当你的js程序中显式的调用window.status = <…> 只有值相同的时候wkhtmltopdf才会去渲染页面,这是wkhtmltopdf的一个黑科技呀。另外如果你仔细看文档会发现它还支持读写cookies所以遇到有权限的页面也不用怕了。

    3.调用篇
    接下来我们的目的是用golang调用wkhtmltopdf,github上倒是有对应的库但是一条命令完成的事就不要再麻烦的找第三方库了,不要给自己的程序引入太多的依赖,不然容易出问题。下面代码做的事情是根据用户给定的url在本地生成一个pdf文件,并且只有当js中window.status='ready'的时候才去渲染页面

    func generateExec(url string, pdfFile string) error {
    	c := "xvfb-run wkhtmltopdf --window-status ready    " + htmlFile + "  " + pdfFile
    	cmd := exec.Command("sh", "-c", c)
    	if err := cmd.Run(); err != nil {
    		return err
    	}
    	return nil
    }
    
    

    我们调用这个函数generateExec("www.baidu.com","aim.pdf"),所以现在我们本地有了一个名字叫做aim.pdf的文件,现在的目标是把这个文件传给前台程序。在golang中简单的很,三行搞定。

    	c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", fileName))
    	c.Writer.Header().Add("Content-Type", "application/octet-stream")
    	c.File(fileName)
    

    c.File => File writes the specified file into the body stream in a efficient way.
    从c.File的函数注释来看,访问的请求应该是post

    4 前段篇
    现在后台已经Ok了我们只需要创建个请求去访问借口就好了,假设你现在使用的是vue+axios,那么注意两点1.访问方式为post2相应类型设置为arraybuffer,注意在我这个函数中this.$route.param.id 、测试报告.pdf都是我自己的配置,你需要换成自己的。

    axios({
              method: 'post',
              url: process.env.API_BASE + '/version/shared-report-byte',
              data: { id: this.$route.params.id },
              responseType: 'arraybuffer',
              timeout: 300 // request timeout
    
            }).then(function(response) {
              if (!response.data) {
                return
              }
              let url = window.URL.createObjectURL(new Blob([response.data]))
              let link = document.createElement('a')
              link.style.display = 'none'
              link.href = url
              link.setAttribute('download', '测试报告.pdf')
              document.body.appendChild(link)
              link.click()
         
            }).catch(function(error) {
              console.log(error)
            })
    

    最后的一个步骤就是在要导出的html页面中的你喜欢的地方添加windiw.status='ready'去控制wkhtmltopdf什么时候去渲染了。
    说了这么多还是祝顺利。毕竟wkhtmltopdf功能强大,漏洞百出。

    展开全文
  • wkhtmltopdf官方下载.zip

    2020-08-10 14:23:03
    html 转换pdf 工具包 内附工具类 简单易学易上手 可随时联系博主亲手教学
  • 公司最近来了一个需求,需要将网页下载成pdf.在此期间,尝试了很多方法. 有尝试在前台使用html2canvas.js+jsPdf.js生成.不过尝试之后,这种方案就被pass掉了,原因是: 1.生成的pdf品质不高,不够清晰而且有样式丢失的...

      公司最近来了一个需求,需要将网页下载成pdf.在此期间,尝试了很多方法.

      有尝试在前台使用html2canvas.js+jsPdf.js生成.不过尝试之后,这种方案就被pass掉了,原因是:

        1.生成的pdf品质不高,不够清晰而且有样式丢失的情况.

        2.html2canvas.js原理是将网页"截图"(遍历dom将每一个标签画在canvas中)后,再由jspdf.js将其转化成pdf,而生成pdf需要使用canvas.toDataUrl()方法.浏览器对此长度是有限制的.我的页面生成的canvas大概是220000+高度.明显已经超长了.就算使用toBlob()也达不到要求.

      然后转换了思路,查阅了网上很多资料.尝试了用iText等方式进行转换.但是这种方式也不友好,对html页面要求比较严格.比如<br/>这样的标签是无法通过的.而且对中文支持也不太好,以及生成的pdf依旧会有样式丢失的情况存在.所以此方案也pass.

      最后尝试使用wkhtmltopdf这个软件来进行转化.

      1. 首先下载软件 官网:https://wkhtmltopdf.org/.

      2. 选择合适的版本下载后直接进行安装.并配置环境变量.                                                                                                                                         

    3.wkhtmltopdf使用非常简单,windows的cmd窗口输入命令行wkhtmltopdf  z:\firefox\123.html z:\firefox\12345.pdf

    这样就可以将z盘下的firefox文件夹下的123.html转换成12345.pdf文件了.(此命令可以加参数,网站上很多有参数详解的,我就不在赘述了.)

    4. 也可以直接将网页链接直接进行转换: wkhtmltopdf  www.baidu.com z:\firefox\12345.pdf (注:wkhtmltopdf html文件或链接 生成的pdf名.中间都有空格)

    5.在java中实现调用wkhtmltopdf.

    //wkhtmltopdf在系统中的路径
        private static String toPdfTool = "Z:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
    /**
         * html转pdf
         * @param srcPath html路径,可以是硬盘上的路径,也可以是网络路径
         * @param destPath pdf保存路径
         * @return 转换成功返回true
         */
        public static boolean htmlToPdf(String srcPath, String destPath){
            File file = new File(destPath);
            File parent = file.getParentFile();
            //如果pdf保存路径不存在,则创建路径
            if(!parent.exists()){
                parent.mkdirs();
            }
            StringBuilder cmd = new StringBuilder();
            if(System.getProperty("os.name").indexOf("Windows") == -1){
            //linux 系统
           
            }
            cmd.append(toPdfTool);
            cmd.append(" ");
            //cmd.append(" --disable-javascript ");//页眉下面的线
            //cmd.append(" --header-center 这里是页眉这里是页眉这里是页眉这里是页眉 ");//页眉中间内容
            //cmd.append(" --margin-top 3cm ");//设置页面上边距 (default 10mm)
            //cmd.append(" --page-width 30cm ");//设置页面上边距 (default 10mm) 
            //cmd.append(" --header-html file:///"+WebUtil.getServletContext().getRealPath("")+FileUtil.convertSystemFilePath("\\style\\pdf\\head.html"));// (添加一个HTML页眉,后面是网址)
            //cmd.append(" --header-spacing 5 ");// (设置页眉和内容的距离,默认0)
            //cmd.append(" --footer-center (设置在中心位置的页脚内容)");//设置在中心位置的页脚内容
            //cmd.append(" --footer-html file:///"+WebUtil.getServletContext().getRealPath("")+FileUtil.convertSystemFilePath("\\style\\pdf\\foter.html"));// (添加一个HTML页脚,后面是网址)
            //cmd.append(" --footer-line");//* 显示一条线在页脚内容上)
            //cmd.append(" --footer-spacing 5 ");// (设置页脚和内容的距离)
            cmd.append(srcPath);
            cmd.append(" ");
            cmd.append(destPath);
            boolean result = true;
            try{
                Process proc = Runtime.getRuntime().exec(cmd.toString());
                HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream());
                HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream());
                error.start();
                output.start();
                proc.waitFor();
            }catch(Exception e){
                result = false;
                e.printStackTrace();
            }
          return true;
        }

    我们的项目中使用security安全框架,所以直接放链接会有问题.所以采用将网页保存后再进行转换.这样的话,调用是没有问题了.

    6.还有问题就是我需要将网页保存下来.先想使用js模拟按键ctrl+s保存,转念一想是行不通的.因为这种保存只能保存在客户端上.本地跑项目没问题,但是之后到服务器上就有大问题了.所以 多思考一下还是有点用的,至少可以少做点事.哈哈.

       把网页保存下来也废了我不少功夫.从url流访问保存,到htmlunit爬取网页,方法都试了,可是因为项目的jsp使用异步ajax进行页面渲染.所以总是只能拿到初始的界面,htmlunit的等待js执行等方式都试过了,还是没有用.所以就采取了简单粗暴的办法.直接用js获取整个网页的代码.发送到后台.然后直接将string字符串生成一个html文件好了.(不知道会不会挨打)

    7. 上述方式只有html代码,所以还需要将原网页的css文件拉下来先存到html读取的位置上去.后期能想到更好的办法再来替换吧,先出此下策了.

    这样的话,就可以调用上面的方法进行html转换为pdf啦.

    8.pdf生成之后,还需要给前台提供下载.这里又出现一个小问题.ajax方式里没有文件这种类型,所以不能使用ajax方式进行前后台交互.又是麻烦事.于是破罐子破摔.在html上加上一个input输入框.在页面渲染的方法的最后将整个网页的源码赋值给输入框.

    var html=document.getElementsByTagName('html')[0].innerHTML; 
    $("#input").val(html);
    <form method="POST" style="float:right;" target='ifr' action="xxx.do">
     <input id="input" name="html" type="text" style=" display:none;"/>
     <button class="download-button" iconCls="icon-print" id="renderPdf" onclick="downloadPDF();">下载</button>
    </form>
    <iframe name='ifr' id="ifr" style='display: none;'></iframe>

     下面的iframe是为了实现form表单提交时,页面不刷新.网上也有相关方法解释.

    9.这样,终于快要大功告成,要实现html转pdf并下载了.

        /**
         * 下载成pdf
         * @param request
         * @return
         */
        @RequestMapping(value="/xxx")
        @ResponseBody
        public Map<String, Object> downloadPdf(HttpServletRequest request,HttpServletResponse response){
            String html = request.getParameter("html");
            Map<String, Object> returnMap = new HashMap<String, Object>();
            String newDate = new Date().getTime()+"";
            String pdffileName = newDate + ".pdf";
            String htmlfileName = newDate + ".html";
            String pdfPath = PATH + pdffileName;
            String javaScriptStr = "<base href="+"\"http://localhost:8081/crs2/\""+">";
            html = html.replace(javaScriptStr, "");
            FileInputStream input = null;
            try {
                File file = new File(PATH + htmlfileName);
                if(!file.exists()){ 
                    file.createNewFile(); 
                 } 
                byte bytes[]=new byte[1024];
                bytes=html.getBytes(); 
                FileOutputStream fos=new FileOutputStream(file); 
                fos.write(bytes);
                fos.close();
                HtmlToPdf.convert(PATH + htmlfileName,pdfPath);
                //根据文件名获取 MIME 类型
                String contentType = request.getServletContext().getMimeType(pdfPath);
                FileDownloadUtil.download(request, response, contentType, pdffileName, pdfPath);
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                if(input != null){
                    try {
                        input.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            returnMap.put("success", true);
            
            return returnMap;
        }

    运行到HtmlToPdf.convert(PATH + htmlfileName,pdfPath)时,pdf文件已经生成.FileDownLoadUtil类是自己编写的下载类.就不贴出来了.代码亲测可用.不过应该网页超长加上自己电脑配置不高的情况下,从点击下载按钮,到弹出文件下载框的时间是有点久的.

     学而不思则罔,想把自己学的东西记录下来.加油吧码农! 有大佬觉得哪里不合理的话,欢迎指点!!!

    展开全文
  • 一键安装wkhtmltopdf

    2019-03-21 11:32:15
    安装包包含wkhtmltopdf程序、相关的依赖、库文件,自己做的repocreate 仓库 yum一键安装,下载解压后运行yum_wkhtml.sh ,注意权限问题。安装完成后 用测试命令:wkhtmltopdf www.qq.com /tmp/qq.pdf
  • 如需直接下载请点击下载页面 wkhtmltopdf并且wkhtmltoimage是开源 (LGPLv3) 命令行工具,用于使用 Qt WebKit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式。这些完全“无头”运行,不需要显示或显示服务。 支持多个...
  • wkhtmltopdf-0.12.6.tar.gz

    2020-08-11 10:42:35
    可以将HTML转PDF,支持windows和linux系统,此包为linux系统安装包,具体安装流程请自行百度!
  • wkhtmltopdf fonts.zip

    2020-06-10 09:54:22
    下载后复制字体到linux系统 /usr/share/fonts 下 即可
  • wkhtmltopdf 使用与安装

    2021-12-11 17:54:17
    centos8安装wkhtmltopdf 1 https://wkhtmltopdf.org/downloads.html 下载对应centos8系统的版本–wkhtmltox-0.12.6-1.centos8.x86_64.rpm 2 rpm安装前 先下载依赖 yum install -y fontconfig libX11 libXext ...
  • 我刚刚将wkhtmltopdf从0.9.9更新为0.11.0 rc1(下载了二进制文件,只是移动到了/usr/bin/wkhtmltopdf-new in /usr/bin/wkhtmltopdf来自存储库的那个)如果我运行/usr/bin/wkhtmltopdf-new我会得到非常大的字体作为结果/...
  • wkhtmltopdf-nodejs-pdfapi

    2021-05-11 08:39:31
    可以从下载。 原料药 PdfApi具有以下方法: ## createPdf(请求:CreateRequest,outputFilePath:字符串):承诺CreateRequest是wkhtmltopdf-nodejs-options-wrapper包中的一个类,其中包装了wkhtmltopdf选项。 ...
  • wkhtmltox mac版本

    2018-12-30 20:47:51
    这个是wkhtmltox的Mac版本,安装完成以后,wkhtmltopdf默认安装路径为/usr/local/bin/wkhtmltopdf;wkhtmltoimage的默认安装路径为/usr/local/bin/wkhtmltoimage,其他的文件可以进入到/usr/local/路径以后搜索wk
  • wkhtmltopdf.exe

    2022-01-11 13:52:26
    将HTML文件导出为PDF,wkhtmltopdf.exe' # 工具路径
  • wkhtmltopdf工具将html转换为pdf,内容包括下载安装,测试,linux下字体问题,java代码
  • linux下的html转pdf工具,window版本的到处都有,就懒得上传了。如果出现中文乱码和空白,记得下个simsun.ttc字体。
  • 想把jupyter笔记转换为pdf方便查阅,但直接使用jupyter转换需要下载MacTex,太大了,用打印下载的pdf又没有目录不太方便,所以找到了pdfkit+wkhtltopdf的方法。 但是按照网络上找到的方法会报错。 import pdfkit ''...
  • wkhtmltopdf0.12.6.zip

    2021-05-14 12:18:26
    odoo13 报告表印 wkhtmltopdf最新版
  • 官网下载地址:https://wkhtmltopdf.org/downloads.html 安装好了之后,可以打开cmd黑框进行操作 (1)cd 到你安装文件夹里面 (2)然后使用exe命令 wkhtmltopdf https://www.baidu.com C:/temp/32.pdf ...
  • HTML 转 PDF 之 wkhtmltopdf

    2020-08-24 23:13:00
    占用的空间更小 -h, --help 显示帮助信息 --htmldoc 输出程序的html帮助文档 --image-dpi 当页面中有内嵌的图片时, 会下载此命令行参数指定尺寸的图片(默认值是 600) --image-quality 当使用 jpeg 算法压缩图片时...
  • 两种安装方式 ①使用apt-get install wkhtmltopdf 或 yum install wkhtmltopdf安装 ②还是在官网上下载linux版本,放到服务器上,解压,执行三个命令 cp wkhtmltopdf/bin/wkhtmltopdf /usr/bin/ chown root:root /...
  • 3. 常见问题error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or下载安装字体文件(缺少字体会导致生成的PDF文件里的中文都是方块)二、Python生成PDF(pdfkit库...
  • 1.下载wkhtmltopdf 下载地址:http://wkhtmltopdf.org/downloads.html 我下载的7z便携版,64位的,不用安装,挺方便。我成功使用,如果最后测试失败,再尝试installer安装版 官网下载速度感人 快速下载链接 便携版...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,036
精华内容 814
关键字:

wkhtmltopdf下载