2011-06-09 104 views
2

將我的測試環境(Windows 7)轉換爲一個非常小的HTML文件爲PDF需要2秒。在生產Web服務器上,相同的文件(Debian)需要193秒。wkhtmltopdf在沒有X服務器的情況下在Debian上極其緩慢

Web服務器正在運行託管託管解決方案。他們安裝wkhtmltopdf告訴我,我不得不使用xvfb的運行,它的工作:

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

現在,我已經抱怨說,使用這個命令需要193秒生成一個簡單的PDF,他們說沒有什麼他們可以做到這一點。那真的是嗎?

編輯:不知何故,我託管的託管支持在一些微調後(現在需要0.8秒)解決了這個問題。我認爲他們可能已經重新編譯了靜態wkhtmltopdf二進制文件或其他東西。我現在運行wkhtmltopdf而不運行xvfb。

回答

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 ...)
  • 或許現在有一種競爭狀態,在這種情況下,你可能會推出wkhtmltopdf之前要sleep .5或東西)
+0

不幸的是,使用你的代碼不會創建PDF文件,也​​不會返回任何內容。 – Vilhelm 2011-06-09 10:06:37

+0

您可以嘗試使用x11vnc或其他選項之一。 x11vnc可以是無頭的。我假設wkhtmltopdf需要X11服務器才能使用gui工具包(gecko?webkit?)來呈現頁面。任何X11服務器(即使是遠程的...)都可以。檢查日誌文件以查看X會話有什麼問題。 – sehe 2011-06-09 10:28:00

1

wkhtmltopdf將會非常慢,因爲沒有GPU可用,所以在這種情況下它正在進行圖像的軟件渲染。

另一種方法是轉到http://wkhtmltopdf.org並下載其中一個靜態圖像。它們可以以真正的無頭模式運行,並且根本不需要X服務器。這仍然很慢,但它具有移動部件更少的優點。

相關問題