Javascript PDF达到一定大小后无法添加内容
我制作了一个递归函数,用于生成迭代某些div的PDF。当不再有div时,我保存PDF。我使用catpure将每个div的HTML代码压缩到画布中,将画布作为图像并生成PDF。此代码运行良好,除非PDF超过8MB,否则将停止添加内容: 我想知道jsPDF在生成PDF时是否有大小限制Javascript PDF达到一定大小后无法添加内容,javascript,pdf,html2canvas,jspdf,Javascript,Pdf,Html2canvas,Jspdf,我制作了一个递归函数,用于生成迭代某些div的PDF。当不再有div时,我保存PDF。我使用catpure将每个div的HTML代码压缩到画布中,将画布作为图像并生成PDF。此代码运行良好,除非PDF超过8MB,否则将停止添加内容: 我想知道jsPDF在生成PDF时是否有大小限制 var doc = new jsPDF(); appendDataToPDF(some_div, doc, 1); /* calling function below */ function appendDataT
var doc = new jsPDF();
appendDataToPDF(some_div, doc, 1); /* calling function below */
function appendDataToPDF(div, doc, top)
{
html2canvas(div, {
onrendered: function(canvas) {
var img = canvas.toDataURL();
doc.addImage(img, 'JPEG', 10, top, width, height);
if(top > 200 /* some value to detect if limit of page reached */)
{
doc.addPage();
top = 1;
}
else
top += 40;
div = div.nextSibling;
if(div === null)
doc.save('Test.pdf');
else
appendDataToPDF(div, doc, top);
}
});
}
我刚刚意识到问题是什么(讽刺的是,在增加了赏金之后)。我不知道为什么,但我只是在正文中附加了我要转换为PDF的div,它起了作用。现在将div中的所有内容转换为html。除了计算机可用的资源之外,不应该有任何硬限制。我生成的最大值只是一个2.7MiB的21页pdf文件,但我只能将此文件保存在我的机器上。直接在新选项卡中显示会导致FF和Chrome崩溃,可能是因为data:uri太长,因为较小的文件可以正常工作 仅供参考,您实际上可以在当前版本中调用
doc.addHTML()
,该版本使用:
我遇到了类似的问题。似乎为了从DOM元素生成画布(以及PDF),DOM元素必须是呈现的HTML文档的一部分。我想它需要成为文档的一部分来计算所有维度。谢谢,我也不知道这个插件。
function appendDataToPDF(div, doc, top, left) {
doc.addHTML(div, top, left, {w: width, h: height}, function() {
if(top > 200) {
doc.addPage();
top = 1;
}
else
top += 40;
div = div.nextSibling;
if(div === null)
doc.save('Test.pdf');
else
appendDataToPDF(div, doc, top, left);
});
}