【发布时间】:2020-12-14 18:40:50
【问题描述】:
我在我的 Angular 8 项目中使用 JsPDF 和 HTML2Canvas 将 HTML 转换为 PDF。在本周新的 Chrome 更新 (87.0.xxxx.) 到来之前,它一直运行良好。我注意到的问题是,HTML 中的输入字段(文本框/日期选择器/下拉)中的值没有反映到生成的 PDF 中。此功能适用于 Chrome 版本 86.xxxx。 不确定问题出在 Chrome 或 JSpdf 或 HTML2Canvas 库上
非常感谢任何想法或帮助。
下面是我在这个过程中使用的代码 sn-p。
var data = document.getElementById('myhtmlform');
var HTML_Width = $(".myhtmlform").width();
var HTML_Height = $(".myhtmlform").height() + 10;
var top_left_margin = 15;
var PDF_Width = HTML_Width + (top_left_margin * 2)
var PDF_Height = (PDF_Width * 1.5) + (top_left_margin * 2);
var canvas_image_width = HTML_Width;
var canvas_image_height = HTML_Height;
var totalPDFPages = Math.ceil(HTML_Height / PDF_Height) - 1;
var pdf = new jsPDF('p', 'pt', [PDF_Width, PDF_Height]);
html2canvas(data, { allowTaint: true }).then(canvas => {
canvas.getContext('2d');
var imgData = canvas.toDataURL("image/jpeg", 1.0);
pdf.addImage(imgData, 'JPG', top_left_margin, top_left_margin + 10, canvas_image_width, canvas_image_height);
pdf.setFillColor(255, 255, 255);
for (var i = 1; i <= totalPDFPages; i++) {
pdf.addPage(PDF_Width, PDF_Height);
pdf.addImage(imgData, 'JPG', top_left_margin, -(PDF_Height * i) + (top_left_margin * (2 * i + 1)), canvas_image_width, canvas_image_height);
pdf.setFillColor(255, 255, 255);
pdf.rect(0, 0, PDF_Width, top_left_margin, 'F');
pdf.rect(0, (PDF_Height - top_left_margin) - 15, PDF_Width, top_left_margin + 15, 'F');
}
var file = pdf.output('datauri');
}
【问题讨论】:
标签: angular jspdf html2canvas