2012-07-24 100 views
16

我們打算使用wkhtmltopdf將html轉換爲pdf,但我們關注wkhtmltopdf的可伸縮性。有沒有人有任何想法如何衡量?我們的網絡應用程序可能會嘗試轉換成千上萬(相對複雜)的html,所以對我們來說有一些想法很重要。有沒有人得到這方面的信息?wkhtmltopdf的性能

+0

圓角CSS角落引起了我渲染由20X的時間增加。刪除這些在相對簡單的HTML頁面上將我的渲染從〜6秒降低到〜0.3秒。例如。 'border-radius:8px;'和'border-top-left-radius:6px;' – 2016-09-01 01:08:43

+0

在我的案例中,經過很多調查,我有從第三方獲取QRcode的URL,這個第三方持有創建我的門票。 – shareef 2018-01-26 18:31:05

回答

5

在我的經驗中,性能取決於你的照片。它有很多大圖片可以顯着減慢。如果可能的話,我會試着用一個估計你的服務器的負載的測試來進行測試。有些人確實將它用於密集的操作,但我從來沒有聽說過成千上萬的人。我想所有事情都取決於你的內容和資源。

以下報價是直客wkhtmltopdf mailing list

我使用wkHtmlToPDF轉換約6000封電子郵件一天PDF。這是所有 在4GB內存的四核服務器上完成的......它對於 來說已經足夠了。

有幾個性能提示,但我會建議在性能優化之前嘗試一下你的瓶頸。例如,我記得有人說如果可能的話,直接從磁盤加載圖像,而不是在其間安裝網絡服務器,可以大大加快圖像加速速度。


編輯: 添加到這一點,我只是有一些有趣的玩wkhtmltopdf。目前在具有4Gb內存的英特爾迅馳2上,我生成57頁內容(混合p,ul,表格)的PDF,約100張圖像,並且toc始終持續7秒鐘處理<。我還運行visual studio,瀏覽器,http服務器和其他各種可能會降低速度的軟件。我直接使用stdin和stdout而不是文件。


編輯: 我沒有嘗試這樣做,但如果你有聯繫CSS,嘗試在HTML文件中嵌入它(記得之前和測試正確看到效果後做!)。這裏的改進很可能取決於緩存和CSS的服務位置 - 如果每次從磁盤讀取或禁止從scss重新生成,它可能非常慢,但是如果結果被web服務器緩存(我不認爲wkhtmltopdf在實例之間緩存任何東西)它可能沒有很大的影響。因人而異。

+1

PLUS ONE用於從磁盤而不是Web服務器之間的圖像。我只是測試它,節省了70%的發電時間! – np87 2014-03-31 12:21:59

+1

我會添加到這個答案的一件事是,如果你已經鏈接CSS,你應該嘗試將其嵌入到HTML文件中。這也應該節省一些時間。 – xyres 2018-02-24 11:57:26

+0

@xyres好的來電!爲不喜歡數學的人添加 – Nenotlep 2018-02-26 08:50:57

18

首先,你的問題是相當一般的;在詢問任何項目的可擴展性時,需要考慮許多變量。顯然,在一週內轉換「數十萬」HTML文件與期待在一天或一小時內完成這些操作之間存在差異。除此之外,「相對複雜」的HTML對其他人來說可能意味着不同的事情。這是說,我認爲,因爲我做了類似的事情,轉換大約45萬html文件,利用wkhtmltopdf;我會分享我的經驗。

在這裏是我的情形:

  • 450000 HTML文件
      文件
    • 95%的長度爲一頁
    • 通常含有2幅圖像(相對路徑,本地系統)
    • 片狀數據(有時包含嵌套表)
    • 其他地方的簡單標記(強,斜體,下劃線等)
  • 一個備用桌面PC
    • 8GB RAM
    • 2.4GHz的雙核處理器
    • 7200 HD

我用PHP編寫一個簡單的單線程腳本,遍歷文件夾並將html文件路徑傳遞給wkhtmltopdf。整個過程花費了大約2.5天的時間來轉換所有文件,並且錯誤率極低。

我希望這可以讓你瞭解在你的web應用程序中使用wkhtmltopdf可以期待什麼。一些明顯的改進將來自在更好的硬件上運行,但主要是利用多線程應用程序同時處理文件。

+27

供參考,平均每個文檔爲480毫秒 – 2014-09-02 20:01:37

+0

或每秒2頁。 – xyres 2018-02-24 11:44:36

2

我們嘗試在任何實現中使用wkhtmltopdf。我的對象是生成座標點的巨大表格。通常我的pdf的容量= 500頁

我們嘗試使用wkhtmltopdf的端口到.net。結果是

- Pechkin - Pro: don't need other app. Contra: slow. 500 pages generated about 5 minutes 
- PdfCodaxy - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Problems with non unicode text 
- Nreco - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Incorrect unlock libs after use (for me) 

我們嘗試使用從C#代碼調用的二進制wkhtmltopdf。

Pro: easy to use, faster that libs 
Contra: need temporary files (cannot use Stream objects). Break with very huge (100MB+)html files as like as other libs 
+1

關於NReco.PdfGenerator,我不知道它如何比純WkHtmlToPdf慢(內部它在單獨的過程中調用WkHtmlToPdf.exe)。此外,它不需要安裝WkHtmlToPdf:所有文件都嵌入到DLL中,並在錯過時自動提取。 – 2014-09-10 16:12:00

3

wkhtmltopdf --print-media-type正在快速發展。但是你放棄了正常的CSS樣式。

這可能不是複雜的html頁面導出的理想解決方案。但它對我來說很有效,因爲我的html內容非常簡單並且以表格形式。

測試在wkhtmltopdf 0.12.2.1版本