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

如何在Puppeteer中获取PDF文件大小?文档未找到相关方法

在Puppeteer中获取PDF文件大小的两种方法

Puppeteer官方文档确实没有直接提供获取PDF大小的API,但可以通过以下两种方式实现:

方法一:通过Buffer获取大小(无需保存到本地)

调用page.pdf()时不指定path参数,它会返回PDF文件的Buffer对象,直接读取Buffer的length属性就能得到文件的字节大小,再按需转换为KB/MB单位即可。

示例代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  // 生成PDF并获取Buffer
  const pdfBuffer = await page.pdf({ format: 'A4' });
  // 计算不同单位的大小
  const sizeBytes = pdfBuffer.length;
  const sizeKB = (sizeBytes / 1024).toFixed(2);
  const sizeMB = (sizeBytes / (1024 * 1024)).toFixed(2);

  console.log(`PDF大小:${sizeBytes} 字节 | ${sizeKB} KB | ${sizeMB} MB`);

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

方法二:保存到本地后读取文件大小

如果已经需要将PDF保存到本地文件系统,可以用Node.js的fs模块读取文件状态,从中提取文件大小。

示例代码:

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

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  const pdfPath = './output.pdf';

  // 保存PDF到本地
  await page.pdf({ path: pdfPath, format: 'A4' });

  // 获取文件信息
  const fileStats = await fs.stat(pdfPath);
  const sizeBytes = fileStats.size;
  const sizeKB = (sizeBytes / 1024).toFixed(2);
  const sizeMB = (sizeBytes / (1024 * 1024)).toFixed(2);

  console.log(`PDF大小:${sizeBytes} 字节 | ${sizeKB} KB | ${sizeMB} MB`);

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

注意事项

  • Buffer.length返回的是字节数,转换为KB/MB时使用1024进制(符合计算机存储单位标准);如果需要按十进制转换,改用1000即可。
  • 如果生成PDF时包含大量资源(图片、字体),文件大小会相应增加,确保页面加载完成后再调用page.pdf()(可以用page.waitForLoadState('networkidle')确保资源加载完毕)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:52:16