Puppeteer 中的整页 PDF

Full page PDF in Puppeteer

我正在尝试使用 puppeteer 获取整页 PDF,我的代码是这样的, 但是结果是多个页面,高度等于页面的高度。

我该如何解决这个问题? TIA.

const puppeteer = require("puppeteer");

function sleep(ms) {
    return new Promise(resolve => {
        setTimeout(resolve, ms);
    });
}

(async () => {
    const browser = await puppeteer.launch({
        headless: true
    });

    const page = await browser.newPage();

    await page.goto("http://localhost:3000/longpage", {
        waitUntil: "networkidle2"
    });

    let height = await page.evaluate(
        () => document.documentElement.offsetHeight
    );

    console.log("Height", height);

    await page.pdf({
        path: "hni.pdf",
        printBackground: true,
        margin: "none",
        height: height + "px"
    });

    await browser.close();
})();

page you linked uses Bootstrap, which has the following rule in its set (you can find it here):

@page{size:a3}

这会将页面的高度限制在 a3 的大小。

您可以从网站上删除该规则(或 Bootstrap 完全删除)或在调用 page.pdf 之前添加以下代码:

await page.addStyleTag({
    content: '@page { size: auto; }',
})