使用jspdf生成pdf时,html2canvas循环浏览器卡顿或卡死解决方案:关于这个问题,我的解决方案是不要用html2canvas

循环卡死当然是有原因的,首先jspdf对canvas也是有最大长度限制的,太长了就转不了。
最后还是用wkhtmltopdf这个组件,先将页面上的canvas都转成图片,然后再循环将html字符串传到后台使用wkhtmltopdf这个组件生成pdf,合成即可。合成的话我用的itext吧,当然可能有更好的,自己网上搜搜。代码就不贴了,也是抄别人的,不过有一点就是有可能会遇到传到后台的html字符串发生了转义,这时候就需要再转回去:

public static String enodeHtml(String html){
     
        html = html.replace("/&","&");
        html = html.replace("<","<");
        html = html.replace(">",">");
        html = html.replace(" "," ");
        html = html.replace("'","\'");
        html = html.replace(""","\"");
        System.out.println(html);
        return html;
 }

这段也是从别人写的js代码拷过来的。
还有就是wkhtmltopdf要加样式得把页面上的样式或者外部链接的样式也加上去,像这样:

htmlStr.append("" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "\t\n" +
                    "");
            htmlStr.append(html);
            htmlStr.append("");

大概就是这样了,其他的就多看看别人的博文吧,不能抢了别人的生意。对吧!:)

你可能感兴趣的:(html2canvas,jspdf,wkhtmltopdf,循环卡死,wkhtmltopdf外部样式)