Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

インストール

使い方に応じて3通りあります。

使い方入れるもの
HTTPサーバを常駐させるDockerイメージghcr.io/waka/sghtmltopdf
Ruby・Railsから使うgem sghtmltopdf
手元のコマンドラインで変換する実行ファイルsghtmltopdf(ソースからビルド)

素の実行ファイル(GitHub Releasesのtarballやhomebrew)は配布していません。 サーバはイメージの中に、FFIから使う場合はgemの中にそれぞれ実行ファイル相当が入っているためです。 CLIを手元で試したい場合は下のソースビルドを使ってください。

Docker

docker pull ghcr.io/waka/sghtmltopdf:latest
docker run --rm -p 8080:8080 ghcr.io/waka/sghtmltopdf

日本語フォント(BIZ UDPGothic / BIZ UDPMincho)を同梱しているので、フォントを用意しなくても日本語のPDFが出ます。 詳しくはDockerを参照してください。

ソースからビルド

必要なのはRustのstableツールチェインだけです。 C言語のライブラリやシステムパッケージへの依存はありません。

git clone https://github.com/waka/sghtmltopdf.git
cd sghtmltopdf
cargo build --release

実行ファイルはtarget/release/sghtmltopdfにできます。 パスの通った場所へ置くか、そのまま呼び出してください。

./target/release/sghtmltopdf --version

HTTPサーバモードが要らない場合は、featureを削って小さくできます。

cargo build --release --no-default-features --features cli

Ruby / Rails

# Gemfile
gem "sghtmltopdf"

ビルド済み(precompiled)のgemを配布する方針のため、利用側にRustのツールチェインは要りません。 対応はx86_64-linuxaarch64-linuxarm64-darwin(glibc)と、Ruby 3.2以上です。

外部プロセスは起動せず、ネイティブ拡張(magnus + rb-sys)として同じプロセスの中で変換します。 重い処理の間はGVLを解放するので、Pumaの他のスレッドは止まりません。

使い方はRuby / Railsを参照してください。

フォントについて

--fontを指定しない場合、システムにインストールされているフォントが使われます。 日本語を含む文書では、フォントファイルを明示するか、フォントを同梱したDockerイメージを使うことを推奨します。

sghtmltopdf invoice.html \
  --font NotoSansJP-Regular.ttf \
  --gothic-font NotoSansJP-Regular.ttf

詳しくはフォントを参照してください。