2

对于我的测试环境(Windows 7),将一个非常小的 HTML 文件转换为 PDF 需要 2 秒。在生产 Web 服务器上,相同的文件 (Debian) 需要 193 秒。

Web 服务器正在使用托管托管解决方案运行。他们安装了 wkhtmltopdf 并告诉我必须使用 xvfb-run 才能工作:

xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "input_file.html" "output_file.pdf"

现在我已经抱怨使用这个命令生成一个简单的 PDF 需要 193 秒,他们说他们对此无能为力。真的是这样吗?

编辑:不知何故,我的托管主机支持在一些轻推后解决了这个问题(现在需要 0.8 秒)。我认为他们可能已经重新编译了静态 wkhtmltopdf 二进制文件或其他东西。我现在在没有 xvfb-run 的情况下运行 wkhtmltopdf。

4

2 回答 2

2

我假设你可以让 xvfb 继续运行

xvfb :1 -screen 0 640x480x16 &
DISPLAY=:1 wkhtmltopdf "input_file1.html" "output_file1.pdf"
DISPLAY=:1 wkhtmltopdf "input_file2.html" "output_file2.pdf"
DISPLAY=:1 wkhtmltopdf "input_file3.html" "output_file3.pdf"
  • 我没有使用 xvfb 的经验(我使用 x11vnc、Xnest 和 Xephyr 以及上面显示的类似方法)。
  • 使用未使用的 vtty (:1, :2, :3...)
  • 也许现在有一个竞争条件,在这种情况下你可能想要sleep .5或者在启动之前做些什么wkhtmltopdf
于 2011-06-09T09:55:07.960 回答
1

wkhtmltopdf 会很慢,在这种情况下它正在对图像进行软件渲染,因为没有可用的 GPU。

另一种方法是访问http://wkhtmltopdf.org并下载其中一个静态图像。它们可以在真正的无头模式下运行,根本不需要 X 服务器。这仍然很慢,但它的优点是移动部件更少。

于 2012-02-28T22:24:00.547 回答