2012-07-24 77 views
16

wkhtmltopdfを使用してhtmlからpdfに変換しようとしていますが、wkhtmltopdfのスケーラビリティについて懸念しています。誰がどのようにスケールするか考えている人はいますか?私たちのWebアプリケーションは、潜在的に何百もの(複雑に複雑な)HTMLを変換しようとする可能性があります。誰にもこれに関する情報がありますか?wkhtmltopdfの性能

+0

でテスト

。これらを削除すると、比較的シンプルなHTMLページで〜6秒から〜0.3秒にレンダリングが削除されました。例えば。 –

+0

私の場合、調査の後、私はチケットを作成していた第三者からQRcodeを取得するためのURLを持っていました。 – shareef

答えて

5

私の経験上、パフォーマンスは写真によって大きく左右されます。それは大幅に減速することができる大きな画像がたくさんあります。可能であれば、サーバーの負荷を見積もってテストを実施しようとします。一部の人々は集中的な操作のためにそれを使用しますが、私は何千人もの人々のことを聞いたことがありません。私はすべてのように、それはあなたのコンテンツとリソースに依存していると思います。

次の引用は、ストレートwkhtmltopdf mailing listオフです:

私はPDF約6000 Eメール日を変換するwkHtmlToPDFを使用しています。すべてが で、4GBのメモリを搭載したクアッドコアサーバで実行されています...それはそれ以上のもので、 には十分です。

パフォーマンスのヒントはいくつかありますが、パフォーマンスを最適化する前にボトルネックを調べることをおすすめします。たとえば、可能な場合は、Webサーバーを中間に置くのではなく、ディスクから直接画像を読み込むと、それを高速で処理できることを覚えています。


編集:これに追加する は、私はちょうどwkhtmltopdfで遊んでいくつかの楽しみを持っていました。現在、4Gbのメモリを搭載したIntel Centrino 2では、57ページのコンテンツ(混合p、ul、表)を含むPDFを生成し、〜100個の画像とtocが常に< 7秒かかっています。私はまた、ビジュアルスタジオ、ブラウザ、httpサーバー、それを遅くする可能性のあるさまざまな他のソフトウェアを実行しています。私はファイルの代わりにstdinとstdoutを直接使用します。


編集: 私はこれを試してみましたが、あなたはCSSをリンクされている場合、(適切な効果を見るために前と後にテストを行うことを忘れないでください!)HTMLファイルでそれを埋め込むしようとしていません。ここでの改善は、キャッシングやCSSが提供されている場所に依存している可能性が高い - 毎回ディスクから読み込んだり、scssから再生成することを禁じるなら、かなり遅くなるかもしれないが、結果がウェブサーバーによってキャッシュされているwkhtmltopdfはインスタンス間に何かをキャッシュします)、大きな効果はないかもしれません。 YMMV。

+1

Webサーバーではなく、ディスクからのイメージの間にPLUS ONEがあります。私はそれをテストし、世代時間の70%を節約しました! – np87

+1

私がこの回答に追加することの1つは、CSSをリンクしている場合は、HTMLファイルに埋め込むことです。それはまた時間を節約するはずです。 – xyres

+0

@xyres良いコール!数学をやりたくない人のために – Nenotlep

18

まず、あなたの質問は非常に一般的です。プロジェクトのスケーラビリティについて質問するときに考慮すべき多くの変数があります。明らかに、数十万のHTMLファイルを1週間に渡って変換し、1日または1時間でそれを行うことを期待していることには違いがあります。それに加えて、「比較的複雑な」HTMLは、他の人とは異なることを意味する可能性があります。

言われているように、これは私がwkhtmltopdfを利用して約450,000のhtmlファイルを変換したのと同じようなことをしたからです。私は自分の経験を分かち合う。ここで

は私のシナリオだった:

  • 45万HTMLファイルは、ファイルの
    • 95%が一般的に2枚の画像(相対パス、ローカルシステム)
    • 表を含む長さ
    • 1ページでしたデータ(ネストした表が含まれることがあります)
    • シンプルなマークアップ(強、イタリック、下線など)
  • スペアデスクトップPC
    • 8ギガバイトRAM
    • 2.4GHzのデュアルコアプロセッサ
    • 7200RPMのHD

私は反復処理するために、PHPで書かれたシンプルなシングルスレッドのスクリプトを使用フォルダを作成し、htmlファイルパスをwkhtmltopdfに渡します。このプロセスでは、すべてのファイルを最小限のエラーで変換するのに約2.5日かかりました。

これは、Webアプリケーションでwkhtmltopdfを利用することで期待できることを洞察してくれることを願っています。明らかに改善されているのは、これをより良いハードウェア上で実行することですが、主にマルチスレッドアプリケーションを利用してファイルを同時に処理することから生じます。

+27

FYIを追加しました。平均は1文書あたり480msです。 –

+0

または毎秒2ページ。 – xyres

2

どの実装でもwkhtmltopdfを使用しようとしています。私のオブジェクトは、生成された座標点のための巨大なテーブルです。私のpdfの典型的な量= 500ページ

私達は.netにwkhtmltopdfのポートを使用することを試みる。結果は

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に埋め込まれ、見つからなければ自動的に抽出されます。 –

3

がすばやく燃えています。しかし、あなたは普通のCSSスタイルを使っています。

これは、複雑なhtmlページのエクスポートには理想的なソリューションではありません。しかし、私のHTMLコンテンツは非常にシンプルで表形式なので、私のために働いた。丸いCSSコーナーは私が20Xだけ時間が増加するレンダリング引き起こしていたバージョンwkhtmltopdf 0.12.2.1