インストール
使い方に応じて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-linux・aarch64-linux・arm64-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
詳しくはフォントを参照してください。