「sghtmltopdf」なら表が改ページしても見出し行が次ページに付いてくる
- 公開
- 正式公開 2026-07-20
- 作り手
- yo_waka(個人)
- 対応
- CLI・Rust(crates.io)・Ruby(gem)・Docker(linux/amd64・linux/arm64)
- 言語
- 日本語・英語
- 価格
- 無料(MIT ライセンス)
- 評価
- GitHub のスター 308(2026-10-08)
どんなアプリか
sghtmltopdf は、HTML をそのまま PDF として出力する変換器です。Rust で書かれていて、Chromium・WebKit・Gecko のヘッドレスブラウザをインストールしなくても PDF を出力できます。使い方は CLI・HTTP サーバ・ライブラリの3種類から選べ、ライブラリは Ruby の gem と Rust のクレートで提供されています。
対象として想定しているのは、任意の Web ページではなく、請求書・領収書・レポートのように上から下へ流れ、区切りのはっきりした文書です。
個人的にwkhtmltopdf のアプローチがとても好きだったので、使っていて感じた課題を解消させてモダナイズした wkhtmltopdf を作ろうと思いました。
yo_waka さん、sghtmltopdf 公式サイト「wkhtmltopdf/WickedPDF への感謝」
名前の「sg」は Second Generation の略です。2023年1月にアーカイブされた wkhtmltopdf で感じていた課題に対して、Flexbox・Grid・カスタムプロパティを含む CSS3 への対応や、表の途中で改ページしても の行を次のページの先頭に繰り返す仕組みを入れています。
公式サイトに載っている実測値では、wkhtmltopdf 0.12.6.1 と Google Chrome 151 のヘッドレスモードを比べ、60,000要素の文書で wkhtmltopdf の約21倍、ヘッドレス Chrome の約53倍の速さとしています。メモリは wkhtmltopdf とほぼ同等で、ストリーミングモードを使うと段落が主体の文書では25MBまで下がると書かれています。 Rails では gem を追加すると Railtie が設定を行い、wicked_pdf と同じキーで使える :pdf レンダラーが登録されます。既存のコントローラーを変えずに済むことも多いと説明されています。 MIT ライセンスのオープンソースとして GitHub で公開されています。 CSS への対応はブラウザが扱うものの一部です。グラデーションなど対応していないものはプロパティ対応表にまとめられていて、JavaScript の実行、ブラウザとのピクセル単位の一致、CSS の全面対応は今後の目標として挙げられています。 ストリーミングモードは Windows のように gem が動かない環境では、server_url を設定すると、同じ呼び出しを別プロセスの sghtmltopdf server に任せられます。 CLI のフラグの多くは wkhtmltopdf と同じ名前・意味です。実装しないフラグは黙って無視せず、理由と代わりの方法を示して終了します。同じ名前でも挙動が違う点として、CSS の @page が CLI より優先されることや、既定の余白が1インチであることが挙げられています。 公式の Docker イメージには BIZ UDPゴシックと BIZ UDP明朝が入っていて、フォントを用意しなくても日本語の文書を出力できます。料金とデータの置き場所
同じ分野のアプリ
名前 型 仕掛け 対応 料金 sghtmltopdf HTML→PDF 変換 ブラウザを起動せず、PDF 出力に特化したエンジンで HTML を PDF にする CLI / Rust / Ruby / Docker 無料(MIT) minitype 組版エンジン TypeScript から呼べる、日本語組版に対応したヘッドレス組版エンジン npm(Node.js / Bun / ブラウザ) 個人・同人利用は自由。本体は PolyForm Noncommercial 1.0.0(商用は問い合わせ) servo-fetch Web ページ取得・描画 Servo を内蔵し、Web ページを Markdown / JSON / スクリーンショットにする単一バイナリ CLI / Rust / Python / Node.js 無料(Apache-2.0) Office Open XML Viewer 文書ビューア Word・Excel・PowerPoint 文書をブラウザ内で HTML Canvas に描画する Web(ブラウザ、HTML Canvas) 無料(MIT) 入れる前に