【发布时间】:2020-06-02 22:12:56
【问题描述】:
我需要为最后一个 pdf 页面生成不同的页脚。经过调查,我意识到最好的方法是生成两个不同的 pdf 并将它们组合起来。当我需要更改页脚或为第一页使用不同的模板时,或者当我知道哪些页面应该看起来不同时(使用pageRanges 选项),它工作正常,但我找不到只获得最后一个(最后n) 总页码未知时的页数。有什么想法可以只为最后(最后 n)页生成 pdf 吗?
将不胜感激任何答案。
我正在使用 Puppeteer v 2.1.0 和 node.js v 8.16.0
这是我现在用来生成 pdf 文件的脚本。
const puppeteer = require('puppeteer');
const fs = require('fs');
const DEFAULT_HEADER = '<span></span>';
const DEFAULT_FOOTER_HEIGHT = 90;
const DEFAULT_PAGE_PADDING = 36;
const createPdf = async () => {
let browser;
try {
browser = await puppeteer.launch();
const page = await browser.newPage();
const [, , bodyFilePath, outputFilePath, footerFilePath] = process.argv;
await page.goto(`file:${bodyFilePath}`, { waitUntil: 'networkidle0' });
let footerTemplate = DEFAULT_HEADER;
if (footerFilePath) {
footerTemplate = fs.readFileSync(footerFilePath, 'utf8');
}
await page.pdf({
path: outputFilePath,
format: 'A4',
margin: {
top: DEFAULT_PAGE_PADDING,
right: DEFAULT_PAGE_PADDING,
bottom: DEFAULT_FOOTER_HEIGHT,
left: DEFAULT_PAGE_PADDING,
},
printBackground: true,
displayHeaderFooter: true,
headerTemplate: DEFAULT_HEADER,
footerTemplate,
});
} catch (err) {
console.log(err.message);
} finally {
if (browser) {
browser.close();
}
process.exit();
}
};
createPdf();
我要转换为 pdf 的模板是 .html.erb 文件
【问题讨论】:
-
请分享您当前使用的代码sn-ps。它为您的问题提供了更多背景信息。
-
完全没有问题。如果你不发布代码,你经常会被否决。
标签: node.js ruby-on-rails google-chrome selenium-chromedriver puppeteer