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

如何调整Puppeteer的Page.pdf超时,解决Page.printToPDF超时报错问题

错误原因

你遇到的TimeoutError: waiting for Page.printToPDF failed报错,是因为Puppeteer的page.pdf()方法默认超时阈值为30000毫秒(30秒),大型发票页面内容多、渲染排版耗时超过默认值就会触发该错误。

调整超时时长方案

在调用page.pdf()方法的配置项中新增timeout参数即可自定义超时时长,参数单位为毫秒:

  • 示例:设置超时时长为2分钟(适配多数大型发票场景)
await page.pdf({
  path: 'invoice.pdf',
  format: 'A4',
  // 保留你原有的其他PDF配置项,比如边距、页眉页脚等
  timeout: 120000 // 自定义超时时间,单位为毫秒,120000即2分钟
});
  • 若发票体量极大,可直接设置timeout: 0,代表完全取消超时限制,等待生成完成再返回结果:
await page.pdf({
  path: 'invoice.pdf',
  format: 'A4',
  // 其他原有配置
  timeout: 0
});
可选优化方案

如果调整超时后生成效率仍然偏低,可以搭配以下操作优化:

  • 调用page.goto()加载发票页面时添加waitUntil: 'networkidle0'配置,确保所有页面资源(图片、样式等)加载完成后再生成PDF,避免边加载边生成拉长耗时
  • 优化发票页面的资源体积,比如压缩内嵌的高清签章、商品图片,移除页面中无用的前端脚本和冗余样式
  • 超百页的超大型发票可以拆分成分批次生成多个PDF后再合并,降低单次渲染的资源压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:24:05