gpt4 book ai didi

javascript - Puppeteer pdf 分页错误

转载 作者:行者123 更新时间:2023-12-04 14:44:10 25 4
gpt4 key购买 nike

我尝试通过 puppetter 生成 pdf 文件。它适用于一页,但是当我尝试生成多页 pdf 文档时,我遇到了分页符错误。 HTML模板用于下面的生成。如果可以,请你帮助我。复制的前提条件:在 100% 高度填充第一页并在下面添加 block 标题。
HTML 模板

function getHTMLTemplate(
height = 'auto',
component = '<div></div>',
style = '<style></style>',
header = '<div></div>',
footer = '<div></div>',
) {
return `
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>HTML to PDF Example</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {margin: 0; padding: 0; border-spacing: 0;}

.page {
width: 210mm;
height: ${height};
overflow: hidden;
background: transparent;
margin-top: -1px !important;
margin-bottom: -1px !important;
}

body>div {
width: 100%;
position: fixed;
}

body>div:first-child {
top: 0;
}

body>div:nth-child(2) {
bottom: 0;
}

@page {
size: 'A4';
margin: 0;
}

@media print {
thead {display: table-header-group;}
tfoot {display: table-footer-group;}

html, body {
width: 210mm;
height: 297mm;
}

tbody::after {
content: '';
display: block;
page-break-after: always;
page-break-inside: avoid;
page-break-before: avoid;
}
}

.block {
top: 0;
width: 210mm;
height: 40px;
position: absolute;
background: #092a4e;
z-index: 1;
}
</style>
</head>
<body>
<div class="block"></div>
${header}
${footer}
<table>
<thead>
<tr>
<td>
${header}
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="page">
${component}
${style}
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>
${footer}
</td>
</tr>
</tfoot>
</table>
</body>
</html>
`;
}
生成 PDF
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
const page = await browser.newPage();
await page.emulateMediaType('print');
await page.setContent(utils.getHTMLTemplate(`calc(891mm - 82px)`, component, sheet.getStyleTags(), template.header, template.footer));
const buffer = await page.pdf({
format: "A4",
margin: { top: 0, bottom: 0, right: 0, left: 0 },
printBackground: true,
});
漏洞
enter image description here

最佳答案

为避免一个 div 分成两个页面,请在 html 中的 div 中添加一个类(例如“myDiv”),并在页面 CSS 中包含以下代码。

@media print {
.myDiv {
break-inside: avoid;
}
}

关于javascript - Puppeteer pdf 分页错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66800629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com