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

如何在Puppeteer中向参数传递变量以批量生成PDF

在Puppeteer中传递变量生成批量PDF文件

首先纠正你代码里的两个问题:

  1. 字符串变量赋值需要加引号:var name = 'example1'(否则会被当作未定义变量报错)
  2. PDF路径需要正确拼接变量,不能直接写/name/.pdf,这里可以用模板字符串或字符串拼接插入变量。

单个文件的正确写法

const name = 'example1';

await page.pdf({
  path: `${name}.pdf`, // 用模板字符串直接插入变量
  printBackground: true,
});

或者用传统字符串拼接方式:

path: name + '.pdf'

批量生成90+PDF的实现

要批量生成不同名称的PDF,先准备一个包含所有文件名的数组,再通过循环遍历数组,每次生成对应名称的PDF。如果每个PDF对应不同页面内容,记得在循环里更新页面状态(比如导航到对应URL或修改DOM)。

完整示例代码:

const puppeteer = require('puppeteer');
const fs = require('fs');

// 提前创建存放PDF的文件夹(避免路径不存在报错)
fs.mkdirSync('./generated_pdfs', { recursive: true });

// 生成95个文件名(document_1到document_95)
const fileNames = Array.from({ length: 95 }, (_, index) => `document_${index + 1}`);

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  for (const fileName of fileNames) {
    // 示例:根据文件名导航到对应页面,或修改页面内容
    await page.goto(`https://your-target-url.com/${fileName}`);
    // 也可以直接修改页面内容:await page.evaluate((title) => document.body.innerHTML = `<h1>${title}</h1>`, fileName);

    // 生成带变量名称的PDF
    await page.pdf({
      path: `./generated_pdfs/${fileName}.pdf`, // 拼接文件夹路径和变量文件名
      printBackground: true,
      format: 'A4' // 可选,指定PDF格式
    });
  }

  await browser.close();
  console.log('所有PDF生成完成');
})();

关键注意点

  • 模板字符串(`...`)是ES6+语法,支持直接在字符串中插入变量,写法最简洁
  • 如果指定生成目录,需确保目录存在,可通过fs.mkdirSync提前创建(需引入fs模块)
  • 循环过程中要确保页面内容加载完成再生成PDF,可配合page.waitForSelector或page.waitForNavigation等待页面状态稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:42:14