You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Puppeteer下载PDF时Chrome工具栏显示问题求助

解决Puppeteer下载PDF带Chrome工具栏的问题

你遇到的问题是因为用page.goto打开PDF链接后调用page.pdf(),本质是让Chrome把PDF当作网页渲染后再导出,这会带上Chrome默认的打印页眉页脚(即你看到的工具栏相关内容),而非直接获取原始PDF文件。以下是两种解决方法:

方法1:直接下载原始PDF(推荐)

既然目标URL是直接的PDF下载链接,无需通过Chrome渲染,直接用HTTP请求获取原始文件即可得到纯净PDF:

const axios = require('axios');

public async downloadPdf() {
    const url = "https://notability.com/n/download/pdf/1_tGACBM45Y8SBARa88w_J/Note%203.%20Oct%202024.pdf";
    const response = await axios.get(url, { responseType: 'arraybuffer' });
    return Buffer.from(response.data);
}

注:若不想依赖axios,也可使用Node.js内置的http/https模块实现文件下载。

方法2:配置page.pdf()参数去除页眉页脚

若必须通过Puppeteer生成PDF,需在调用page.pdf()时传入参数关闭默认页眉页脚:

public async downloadPdf() {
    const browser = await puppeteer.launch({
        headless: "new",
        args: ['--no-sandbox', '--disable-setuid-sandbox']
    });
    const url = "https://notability.com/n/download/pdf/1_tGACBM45Y8SBARa88w_J/Note%203.%20Oct%202024.pdf";

    const page = await browser.newPage();
    await page.goto(url, { waitUntil: "networkidle2" });

    const pdf = await page.pdf({
        displayHeaderFooter: false, // 关闭默认页眉页脚
        printBackground: true,
        margin: { top: 0, bottom: 0, left: 0, right: 0 } // 可选:消除留白
    });

    await browser.close();
    return Buffer.from(pdf);
}

核心参数是displayHeaderFooter: false,它会移除Chrome默认添加的包含浏览器信息的页眉页脚;使用新版无头模式headless: "new"可避免旧版的渲染兼容性问题。

内容的提问来源于stack exchange,提问作者Henri Schulz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:07:09