Puppeteer 视口设置在创建 PDF 时不起作用

drs*_*drs 6 javascript webautomation node.js google-chrome-headless puppeteer

我正在尝试使用 puppeteer 创建 PDF。创建PDF时设置视口根本没有效果。但是,视口设置确实适用于屏幕截图。过去似乎在 github 上发现了一些问题,但它们显然已被关闭。传入 defaultViewport: null 应该是解决方案。

这是我的代码:

browser = await chromium.puppeteer.launch({
    args: chromium.args,
    defaultViewport: null,
    executablePath: await chromium.executablePath,
    ignoreHTTPSErrors: true,
    headless: true,
});

let page = await browser.newPage();

// Set viewport
await page.setViewport({width: 1440, height: 900, deviceScaleFactor: 2});

// Generate pdf
const doc = await page.pdf(options);
Run Code Online (Sandbox Code Playgroud)

我还尝试在启动时传递视口设置。

谢谢!

har*_*ded 2

page.pdf模拟“打印到 PDF”操作。这意味着两件事:首先是媒体打印,其次是您需要将特定的格式或大小传递给函数pdf

文档中:

、和选项接受标有单位的值width。未标记的值被视为像素。heightmargin

一些示例:
* page.pdf({width: 100})- 打印宽度设置为 100 像素。
* page.pdf({width: '100px'})- 打印宽度设置为 100 像素。
* page.pdf({width: '10cm'})- 打印宽度设置为 10 厘米。

所有可能的单位为:
* px- 像素
* in- 英寸
* cm- 厘米
* mm- 毫米

选项format包括:
* Letter: 8.5 英寸 x 11 英寸
* : Legal8.5英寸 x 14 英寸 * : 11 英寸 x 17英寸 * : 17 英寸 x 11 英寸 * : 33.1 英寸 x 46.8 英寸 * : 23.4 英寸 x 33.1英寸 * : 16.54 英寸 x 23.4 英寸 * : 11.7英寸 x 16.54 英寸 * :8.27 英寸 x 11.7 英寸 * :5.83 英寸 x 8.27 英寸 * :4.13 英寸 x 5.83 英寸
Tabloid
Ledger
A0
A1
A2
A3
A4
A5
A6

  • 将尺寸传递给 PDF 选项定义了 PDF 尺寸,不幸的是,这不是我的问题。问题是在渲染之前更改视口。 (4认同)