【发布时间】:2015-03-30 19:25:39
【问题描述】:
您好,我正在使用 jsPdf 制作 html 内容的 pdf,它适用于短内容和创建 pdf,但是当我尝试使用 html2canvas.js(用于渲染 css)的大型内容时,它不是创建pdf。 对此的任何建议或示例代码都会有所帮助。谢谢。
【问题讨论】:
标签: javascript html css html2canvas jspdf
您好,我正在使用 jsPdf 制作 html 内容的 pdf,它适用于短内容和创建 pdf,但是当我尝试使用 html2canvas.js(用于渲染 css)的大型内容时,它不是创建pdf。 对此的任何建议或示例代码都会有所帮助。谢谢。
【问题讨论】:
标签: javascript html css html2canvas jspdf
可以为大文件创建 pdf。主要有两种方法可以做到这一点:
1. html -> canvas -> image -> pdf(我假设你正在尝试这种方法)
2。 html -> pdf(如果 html 包含 svg,则不起作用)
我建议您选择 (2),除非您有充分的理由选择 (1)(例如,如果您有 svg 内容)--这对浏览器来说是相当昂贵的操作,而且浏览器也有可能崩溃。
1. html -> 画布 -> 图片 -> pdf
这里描述得非常清楚 - https://github.com/MrRio/jsPDF/issues/339#issuecomment-53327389
我使用此方法时的经验 - 当生成的 pdf 包含超过 2-3 页时崩溃。 (在最新的 chrome 和 firefox 上测试)
2。 html -> pdf
var pdf = new jsPDF('l', 'pt', 'a4');
var options = {
pagesplit: true
};
pdf.addHTML($('body'), 0, 0, options, function(){
pdf.save("test.pdf");
});
与上述方法相比,这要快得多。在 1-2 秒内生成包含 5-6 页的 pdf!
希望这会有所帮助!
【讨论】:
https://www.npmjs.com/package/pdfpy
var data = {
//the key as to be same as below
input: "./test.html",
output: "./output.pdf"
}
pdfpy.file(data, function(err, res) {
if(err) throw err
if(res) console.log("success")
});
【讨论】: