升级Puppeteer v12后PDF体积骤增,如何减小体积?
Puppeteer v12生成PDF体积过大的优化方案
一、调整Puppeteer生成PDF的参数
- 控制图像质量:启动浏览器时添加图像压缩参数,降低JPEG/PNG的默认质量,示例代码:
const browser = await puppeteer.launch({ args: [ '--jpeg-quality=70', // 调整JPEG质量,范围0-100 '--png-quality=70', // 调整PNG质量,范围0-100 '--disable-web-security' // 存在跨域图像加载问题时可添加 ] }); - 禁用不必要的渲染选项:若HTML中无需保留背景图或样式,设置
printBackground: false减少冗余内容:await page.pdf({ path: 'output.pdf', printBackground: false, format: 'A4' }); - 调整缩放比例:通过
scale参数缩小渲染尺寸(注意保证内容可读性),间接减小PDF体积:await page.pdf({ path: 'output.pdf', scale: 0.9 });
二、优化HTML源文件资源
- 压缩图像资源:提前批量压缩HTML中的图片,优先用JPEG格式替代PNG(需透明通道除外),并设置合适的宽高属性,避免PDF渲染过大图像。
- 移除冗余代码:清理HTML中未使用的CSS、JS代码,减少渲染时的冗余元素,避免PDF包含不必要的隐藏内容。
- 替换WebP格式:部分Chrome版本对WebP图像的PDF渲染会增加体积,可将WebP转为JPEG/PNG后再嵌入HTML。
三、生成后压缩PDF
使用Ghostscript工具对生成的PDF进行二次压缩,根据需求选择不同压缩级别:
- 屏幕级压缩(体积最小,适合网页查看):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf - 打印级压缩(平衡体积和质量):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf
内容的提问来源于stack exchange,提问作者yogesh Rathod
相关产品推荐
相关产品推荐

