【发布时间】:2012-05-16 02:57:41
【问题描述】:
我有一个 PHP 循环,它执行以下操作:
- 通过 CURL 登录网页
- 需要登录的捕获和内部页面
- 将页面的 HTML 保存到本地文件
- 使用 WKHTMLTOPDF 将页面呈现为 PDF
我遇到的问题是每隔一段时间(大约 30% 的时间),图像不会在 PDF 中呈现。如果我打开其中一个保存的 HTML 文件,我会发现我需要进入并手动刷新页面才能显示图像。
关于如何务实地确保图像加载有什么想法吗?我尝试过的事情:
-
sleep(n)在每一行之间 - 将
--javascript-delay 30000添加到我的 WKHTMLTOPDF 调用中,以确保它有足够的时间来加载任何图像。
#1 使情况变得更糟,而#2 什么也没做。
谢谢!
【问题讨论】:
-
本地HTML中的图片引用还有效吗?因此,您必须从远程服务器获取每张图像并将其复制到本地的正确位置。我想知道是否更容易获取有效的 cookie(通过 CURL 等),然后将其提供给 wkhtmltopdf,然后直接进入远程身份验证页面?
-
wkhtmltopdf 实际上有一个生成 cookie 的方法,但是在这种特殊情况下开始工作是一场噩梦(因此是 CURL 路由)。当我在 HTML 中阅读时,我正在替换远程图像路径的所有路径,这绝对有效,因为我可以打开 HTML 文件并硬刷新以查看图像,就好像没有足够的魅力来获取图像每次。最坏的情况我想我可以尝试让该 cookie 与 wkhtmltopdf 一起使用。
-
对于另一种方法,您可以尝试使用
wget及其--page-requisites和--convert-links选项将 HTML/CSS/图像下载到本地位置,同时更改链接。然后对本地副本运行 PDF 渲染器。
标签: php curl pdf-generation wkhtmltopdf