我正在使用eKoopman的html2pdf.js库https://github.com/eKoopmans/html2pdf.js在评估结束时为用户生成一个推荐列表,这些是基于响应动态生成的。
它在桌面上运行得非常好。但是,当我试图在iOS上输出PDF时,除了我在单独的函数中添加的页眉和页脚外,文档是空白的。
就像它完全忽略了元素一样。
下面是用户单击按钮时触发的代码。
var element = $('#recommendationsdisplay').html();
var opt = {
margin: [.75,0,.75,0],
filename: 'Click_Start_' + Math.floor(Date.now() / 10000) + '.pdf',
enableLinks: true,
image: {
type: 'jpeg',
quality: 1
},
html2canvas: {
scale: 2,
dpi: 300,
letterRendering: true
},
jsPDF: {
unit: 'in',
format: 'letter',
orientation: 'portrait'
},
pagebreak:{
mode: ['avoid-all', 'css', 'legacy'],
avoid: 'div.recgrid-item'
}
};
html2pdf().from(element, 'string').set(opt).toPdf().get('pdf').then(function (pdfObject) {
/* some image related encoding */
var headerTitle = "Recommendations";
var footerCR = "© 2020";
// Header and Footer
for (var i = 1; i < pdf_pages.length; i++) {
pdfObject.setPage(i);
pdfObject.setFontSize(14);
pdfObject.setTextColor('#0090DA');
pdfObject.addImage(headerData, 'PNG', 0, 0, 8.5, .5);
pdfObject.setFontSize(10);
pdfObject.setTextColor('#777777');
pdfObject.text(footerCR, 4, 10.5);
pdfObject.text(' ' + i, 7.375, 10.5);
pdfObject.addImage(logoData, 'PNG', .75, 10.25, 1, .325);
}
}).save();
编辑:看起来问题出在画布的大小限制上。如果元素的高度不超过某个阈值(评估中选择的项目较少),则元素在PDF中可以正确呈现。我的文档只有几页长(〈7页),但我看到其他用户报告说能够创建几十页的PDF,所以我不确定问题出在哪里。
2条答案
按热度按时间djmepvbi1#
pagebreak mode = avoid-all
导致问题。取消“全部避免”。mefy6pfw2#
我已经解决了这个问题,方法是将整个文档拆分为页面,然后将页面逐个传递到html2pdf库,以生成所有页面并将其绑定到单个pdf文件中。
示例代码。