RubyでPDF生成
#Ruby
Prawn
Wicked PDF
Grover
これよりはFerrumの方がNodeを挟まない分速いのでは?
試したところFerrumの方が遅かったらしい https://github.com/Studiosity/grover/issues/162
RGhost
RCairo
Haru(HPDF、libHaru)
PDF::Wrapper
HexaPDF
FerrumPdf
Fulgur
RailsでのPDF生成、HTMLを生成してそれを元にPDFを作るよりいきなりPDFを作ったほうが速いのではないか。
HTMLは文字列だからストリーミングできるしキャッシュしやすいし処理系も最適化されてるというアドバンテージがある?
PDFもストリーミングできると思うけど、Prawnとかは一回ドキュメントツリーを構築してからPDFにしてる?
PDFの構造に合わせた書き方を憶えるのがめんどい? HTMLとかCSSとかも憶えられたので大丈夫。頑張れ。
PostScriptも同様……というのはマッチョかしら。
画像の埋め込みはHTMLだと発生しないからそこは明確に遅くなる点。
画像をブラウザーが別途取ってきてページ内に埋め込んでレンダリングする、という形にしたのすごいな。Mosaic?
画像を(PDFの意味での)ストリームにしてファイルにしておき、レンダリング中に埋め込む、とかだったらマシになる?
ベンチマーク用Railsアプリケーション
https://gitlab.com/KitaitiMakoto/pdf-reporter
DBからデータを引っ張ってきて請求書と領収書を生成する
枠内折り返しあり
2 - 4ページ
ロゴ画像埋め込み
SQLiteでローカルで測っているので本番とは違うこともあるだろうけど
領収書生成
https://gyazo.com/cac9055a9740c139456641144eba22c5
https://gyazo.com/4649d20cbe05afef9933f8e4ab6c85c8
https://gyazo.com/82f797c193d3ede588c2186ffea793fc
請求書生成
https://gyazo.com/9f9975a87670dcfb2a99c1d9e73118a5
https://gyazo.com/f31e847eeb1a7af59ba826a4f2b3dc0c
https://gyazo.com/d2442655681656cf5084abc854558ee5
HexaPDF凄いな・・・
何を使ってもいいのであればRCairo
ピュアRubyならHexaPDF
「AGPL又は有償ライセンス」なのでそれが受け入れられないならPrawn
「HTML+CSSで作れる」ということに価値を見出すのであればFerrumPDF
但し重いので非同期ジョブ推奨
RGhostは日本語文字を使えない(使えるようにするのが大変)ので、実質選択肢から外れる
という感じ? ピュアRubyでも全然戦える