【发布时间】:2021-06-25 18:02:00
【问题描述】:
我正在制作一个简单的 pdf 生成 react 应用程序,
使用的库:
以下是我试过的代码,
index.js:
<div className="App">
<button onClick={exportToPdf}>Export</button>
<div id="toRender">
.
.
.
Some lengthy content
.
.
.
</div>
</div>
所以在这里点击导出按钮,就会生成 pdf。
const exportToPdf = () => {
let elem = document.getElementById("toRender");
elem.scrollIntoView();
h2c(elem).then((canvas) => {
const img = canvas.toDataURL("image/png", 1);
//console.log(`"data:image/png;base64,${img}"`)
const pdf = new jsPDF("p", "mm");
const imgWidth = pdf.internal.pageSize.getWidth();
const pageHeight = pdf.internal.pageSize.getHeight();
const imgHeight = (canvas.height * imgWidth) / canvas.width;
let heightLeft = imgHeight;
let position = 10;
pdf.addImage(img, "PNG", 0, position, imgWidth, imgHeight, 100, 90);
heightLeft -= pageHeight;
// pdf.rect(5, 5, 200, 285).line(5, 45, 205, 45);
// pdf.line(3, 35, imgWidth - 3, 35)
while (heightLeft >= 0) {
position = heightLeft - imgHeight;
pdf.addPage();
pdf.addImage(img, "PNG", 0, position, imgWidth, imgHeight);
// pdf.rect(5, 5, 200, 285).line(5, 45, 205, 45);
heightLeft -= pageHeight;
}
//pdf.addImage(img, 'PNG', 0, 0)
pdf.save("export.pdf");
});
};
pdf 生成工作正常。
我需要为所有动态生成的页面实现标题。我试过添加pdf.text("<header> Some header content </header>"),但它不起作用。
生成pdf时如何在所有页面中添加页眉?
【问题讨论】:
-
可能文字在图片下方。您是在
pdf.addPage()之后还是pdf.addImage()之后添加pdf.text行 -
@dehart,在
pdf.addPage()之后.. -
那么您的图像可能会覆盖您的文本。注释掉
addImage()以确保 -
试过但没有运气.. 你能帮我解决一下我上面的代码框吗?
-
我做到了,text() 函数只适用于 x 和 y 参数。我已经发布了答案。
标签: javascript html reactjs pdf jspdf