从html文件生成pdf而不在浏览器

时间:2016-12-29 07:33:13

标签: javascript jspdf html2canvas xhtml2pdf

我想从pdf模板生成html文件,该文件未在浏览器中加载。基本想法是在html变量中加载javascript并将其转换为canvas/pdf而不在浏览器上显示。

现在我这样做是通过在当前打开的页面上添加一个框架然后在成功生成它的pdf后删除框架。但这显示屏幕和滚动条有一些波动。

当前代码:

$http.get("static/templates/pdf-template.html")
            .then(function (response) {
                var html_string = response.data;
                var iframe = document.createElement('iframe');
                iframe.style.width = '100%';
                document.body.appendChild(iframe);
                setTimeout(function () {
                    var iframedoc = iframe.contentDocument || iframe.contentWindow.document;
                    iframedoc.body.innerHTML = html_string;

                    var divHeight = iframedoc.body.scrollHeight;
                    var divWidth = iframedoc.body.scrollWidth;
                    var ratio = divHeight / divWidth;

                    html2canvas(iframedoc.body, {
                        onrendered: function (canvas) {
                            var pdf = new jsPDF();
                            var width = pdf.internal.pageSize.width;
                            var height = pdf.internal.pageSize.height;
                            height = ratio * width;

                            var imgData = canvas.toDataURL('image/jpeg', 1.0);
                            pdf.addImage(imgData, 'JPEG', 0, 0, width, height);
                            pdf.save('pdf');
                            document.body.removeChild(iframe);
                        }
                    });
                }, 10);
            });

请不要使用iframe建议解决方案。

0 个答案:

没有答案