javascript - Puppeteer 中的整页 PDF

标签 javascript node.js pdf 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使用 Bootstrap,它的集合中有以下规则(你可以找到它 here ):

@page{size:a3}

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

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

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

关于javascript - Puppeteer 中的整页 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55610614/

相关文章:

java - Aspose pdf-viewer 中的俄语字母链接问题

javascript - 容器内的 jQuery 捕捉元素

node.js - 使用 NSSM 作为 Windows 服务启动 NodeJs 进程不起作用

node.js - Express.js 多种方法

node.js - ExpressJS - 使用基于参数的路由和绝对路由

ios - 使用 UIWebView 搜索以突出显示 PDF 中的文本

c++ - 创建并转换为 PDF 的 .. 没有工具包

javascript - 在 NodeJs/Express 的路由处理程序中链接路由

javascript - 将一个div带到:active state via jquery . trigger()方法

javascript - 在 React div 中渲染对象有什么意义吗?