Puppeteer - 如何更改文档中某些页面的方向?

Vic*_*tor 5 javascript pdf node.js puppeteer

我正在使用 Puppeteer 创建一个 30 页长的 pdf,其中一些页面需要横向排列。如何仅为页面 x 和页面 y 指定它?

Md.*_*her 6

@page 的伪选择器

根据文档CSS 规范,您可以使用 CSS 为某些页面设置不同的方向。

@page :pseudo-selector{
 size: landscape;
}
Run Code Online (Sandbox Code Playgroud)

可接受且有效的伪选择器(我用 puppeteer 和 google chrome 测试过)包括,

:blank
:first
:left
:right
Run Code Online (Sandbox Code Playgroud)

结果: 在此处输入图片说明

PS:在回答时,:nth-child草稿中提到的其他选择器和页面标识在 chrome 73 版上不起作用。

替代方式

处理此问题的唯一其他方法是单独打印页面,然后稍后将它们合并。您可以打印特定页面pageRanges

page.pdf({pageRanges: '1-5', path: 'first.pdf'})
Run Code Online (Sandbox Code Playgroud)

并使用包pdf-merge来合并两个pdf文件。

const PDFMerge = require('pdf-merge');
PDFMerge(['first.pdf', 'second.pdf'], {output: `${__dirname}/3.pdf`})
Run Code Online (Sandbox Code Playgroud)