【问题标题】:Make Chrome Headless to Wait for Ajax Before Printing to PDF在打印到 PDF 之前让 Chrome Headless 等待 Ajax
【发布时间】:2018-09-11 20:33:57
【问题描述】:

我正在尝试使用 chrome headless 将我的网页打印为 PDF 文件。 PDf 文件没有数据,因为 headless chrome 在 ajax 命令完成之前打印它。

知道如何让它等待吗?

这是我目前使用的命令:

chrome --headless http://localhost:8080/banana/key --run-all-compositor-stages-before-draw --print-to-pdf=C:\\tmp\\tmp.pdf

【问题讨论】:

  • 快速谷歌搜索显示其他一些人也遇到了这个问题。您是否探索过使用 Puppeteer 以编程方式运行 Chrome Headless?它可能会公开诸如飞行中的请求等属性,您可以使用这些属性来控制延迟,或者如果您希望自己甚至可以手动包含定时延迟。
  • @MikeHill Puppeteer 看起来不错,感谢您的建议!它可以等待页面加载和网络空闲,并且您可以完全控制 PDF 布局。

标签: headless-browser google-chrome-headless


【解决方案1】:
chrome --headless http://localhost:8080/banana/key --run-all-compositor-stages-before-draw --print-to-pdf=C:\\tmp\\tmp.pdf --virtual-time-budget=10000

试试这个,virtual-time-budget是可以延迟它的参数。

【讨论】:

  • 这对 Web 字体也有积极影响,即使字体是从本地磁盘加载的。否则 Chrome 似乎无法及时加载 一些 网络字体......奇怪的世界。
  • 像魅力一样工作。感谢您指出了这一点。仔细想想,Chrome 显然无法猜测页面何时准备好截屏。
  • --virtual-time-budget 以毫秒为单位,仅供参考
  • 这会成功等待,直到加载通过 @import 在 CSS 文件中引用的 Google 字体。
  • 还有一个--timeout 选项,但对我来说并不像--virtual-time-budget 那样工作
猜你喜欢
  • 1970-01-01
  • 2015-07-06
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多