在没有X-server的Debian上,wkhtmltopdf速度非常慢

在没有X-server的Debian上,wkhtmltopdf速度非常慢,debian,x11,wkhtmltopdf,xvfb,Debian,X11,Wkhtmltopdf,Xvfb,对于我的测试环境(Windows7),将一个非常小的HTML文件转换为PDF需要2秒钟。在生产web服务器上,相同的文件(Debian)需要193秒 web服务器正在使用托管托管解决方案运行。他们安装了wkhtmltopdf,并告诉我必须使用xvfb run才能工作: xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "input_file.html" "output_file.pdf" 现在我抱怨使用这个命令需要193秒来生成一个简单的PDF

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

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

xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "input_file.html" "output_file.pdf"
现在我抱怨使用这个命令需要193秒来生成一个简单的PDF,他们说他们对此无能为力。真的是这样吗


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

我想您可以让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使用类似的方法,如上图所示)
  • 使用未使用的VTY(:1,:2,:3…)
  • 可能现在存在竞争条件,在这种情况下,您可能希望在启动
    wkhtmltopdf
    之前
    sleep.5
    或其他内容

wkhtmltopdf将非常缓慢,在这种情况下,它正在进行图像的软件渲染,因为没有可用的GPU


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

不幸的是,使用您的代码不会创建PDF文件,也不会返回任何内容。您可以尝试使用x11vnc或其他替代方法。x11vnc can是无头的。我假设wkhtmltopdf需要一个X11服务器才能使用gui工具包(gecko?webkit?)来呈现页面。任何X11服务器(即使是远程服务器…)都可以。检查日志文件以查看X会话的错误。