在没有X-server的Debian上,wkhtmltopdf速度非常慢
对于我的测试环境(Windows7),将一个非常小的HTML文件转换为PDF需要2秒钟。在生产web服务器上,相同的文件(Debian)需要193秒 web服务器正在使用托管托管解决方案运行。他们安装了wkhtmltopdf,并告诉我必须使用xvfb run才能工作:在没有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
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
另一种方法是转到并下载其中一个静态图像。它们可以在真正的无头模式下运行,并且根本不需要X服务器。这仍然很慢,但其优点是移动部件较少。不幸的是,使用您的代码不会创建PDF文件,也不会返回任何内容。您可以尝试使用x11vnc或其他替代方法。x11vnc can是无头的。我假设wkhtmltopdf需要一个X11服务器才能使用gui工具包(gecko?webkit?)来呈现页面。任何X11服务器(即使是远程服务器…)都可以。检查日志文件以查看X会话的错误。