pdf-generation - 用于 PDF 渲染的 Puppeteer 自定义页眉页脚

标签 pdf-generation puppeteer google-chrome-headless

我正在渲染网站的 PDF。我希望第一页的页眉和页脚不同,其余页面的页眉和页脚也不同。有没有办法做到这一点?

const puppeteer = require('puppeteer');

(async() => {
 var t = Date.now();
 console.log('Current time ' + t + ' msec'); 

 const browser = await puppeteer.launch({executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', ignoreHTTPSErrors:true, headless:true, devtools:false});
const page = await browser.newPage();
await page.setViewport({width: 1920, height: 1080});

await page.setExtraHTTPHeaders({'Report-Print-Preview-Mode':'true'});
await page.goto('https://localhost', {waitUntil: 'networkidle2'});
await page.type('#username', 'scott');
await page.type('#password', 'tiger');  
await page.click('[id="login_button"]');

await page.waitForSelector('[id="new_page_table_id"]');
await page.on('console', msg => console.log('PAGE LOG:', msg.text()));

// page.pdf() is currently supported only in headless mode.
// @see https://bugs.chromium.org/p/chromium/issues/detail?id=753118

await page.pdf({
path: 'report.pdf',
displayHeaderFooter: true,
headerTemplate: '<span style="font-size: 30px; width: 50px; height: 50px; background-color: black; color:black; margin: 20px;">Header</span>', 
footerTemplate: '<span style="font-size: 30px; width: 50px; height: 50px; background-color: black; color:black; margin: 20px;">Footer</span>',
printBackground: true,
format: 'A4',
margin:{top:'2cm',right:'2cm',bottom:'2cm',left:'2cm'}
});

await browser.close();

t = Date.now() - t;
console.log('Execution time ' + t + ' msec');
})();

我怎样才能实现它?请帮忙。

最佳答案

您请求的功能没有“开箱即用”的 puppeteer 实现。

同时,在“Ability to prevent header/footer on certain pages”中描述了几种解决方法。第一个建议是使用不同的范围和使用不同的页眉/页脚组合进行多次转换;将结果缓冲区与类似 https://github.com/astefanutti/decktape 的内容合并后.另一个使用 @page:first 的hacky 解决方案CSS样式。

关于pdf-generation - 用于 PDF 渲染的 Puppeteer 自定义页眉页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404672/

相关文章:

ios - CGContextShowTextAtPoint 和欧元符号

python - 如何从二进制字符串创建 PDF?

java - 使用 docx4j 将 Docx 转换为 PDF 时文本对齐丢失

perl - 我可以使用希伯来文和英文文本在 Perl 中生成 PDF 文件吗?

node.js - puppeteer 中的页面 cookie 不适用于保持登录

node.js - Puppeteer:如何处理多个标签?

javascript - Puppeteer 不等待超时

node.js - Puppeteer - 协议(protocol)错误(Page.navigate): Target closed

go - 使用 chrome headless 和 GO 转储 DOM

python - 使用 Selenium Python 客户端在不同浏览器中处理 headless (headless)模式