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

Docker

日本語フォントを同梱した公式イメージをghcr.ioで配布しています。 サーバモードを常駐させる場合はこれが一番手軽です。

docker pull ghcr.io/waka/sghtmltopdf:latest

対応プラットフォームはlinux/amd64linux/arm64(どちらもglibc。Alpine等のmuslは対象外)です。 同じタグでどちらも引けます。

サーバとして使う

引数なしで起動するとHTTPサーバになります。

docker run --rm -p 8080:8080 ghcr.io/waka/sghtmltopdf
curl --data-binary @invoice.html \
     'http://127.0.0.1:8080/pdf?page-size=A4' \
     -o invoice.pdf

コンテナの中では--listen 0.0.0.0:8080で待ち受けます。 サーバモードの既定は127.0.0.1(何も設定しないまま外部公開されるのを防ぐため)ですが、それだとコンテナの外から届かないので、イメージ側のCMDで明示しています。

起動オプションを変えたいときは、serverから書き直します。

docker run --rm -p 8080:8080 ghcr.io/waka/sghtmltopdf \
    server --listen 0.0.0.0:8080 --workers 4 --max-body-size 52428800

認証とTLSは持ちません。 外部へ公開する場合はリバースプロキシを前段に置いてください。

docker compose

services:
  pdf:
    image: ghcr.io/waka/sghtmltopdf:0.1
    ports: ["8080:8080"]
    healthcheck:
      test: ["CMD", "sghtmltopdf", "--version"]
      interval: 30s

curlはイメージに入っていないので、ヘルスチェックは--versionで代用するか、外側(ロードバランサ等)からGET /healthzを叩いてください。

CLIとして使う

ENTRYPOINTが実行ファイルそのものなので、引数を渡せばCLIとして動きます。

docker run --rm -v "$PWD:/work" -w /work --user "$(id -u):$(id -g)" \
    ghcr.io/waka/sghtmltopdf invoice.html -o invoice.pdf

コンテナはrootでは動きません(UID 10001)。 ホストのディレクトリへPDFを書き出すときは、上のように--userでホスト側の所有者に合わせてください。

同梱しているフォント

BIZ UDPGothicBIZ UDPMinchoのRegular・Bold(計4本、SIL Open Font License 1.1)が入っています。 ライセンス全文はイメージ内の/usr/share/doc/sghtmltopdf/fonts/にあります。

CSSの指定使われるフォント
font-family未指定BIZ UDPMincho(明朝)
font-family: sans-serifBIZ UDPGothic(ゴシック)
font-family: serifBIZ UDPMincho
font-family: monospace等幅フォントは同梱していないため、BIZ UDPMinchoにフォールバック
font-weight: bold各書体のBold(合成太字ではありません)

フォントが固定されているので、同じHTMLからは同じPDFが出ます(PDF内の作成日時を除く)。 ホストのフォント構成に出力が左右されないのがイメージを使う利点のひとつです。

別のフォントを使いたい場合は、マウントして--fontで渡してください。 同梱フォントより優先されます。

docker run --rm -v "$PWD:/work" -w /work --user "$(id -u):$(id -g)" \
    ghcr.io/waka/sghtmltopdf invoice.html -o invoice.pdf \
    --font fonts/YourFont-Regular.ttf --gothic-font fonts/YourFont-Regular.ttf

イメージの中身

パス内容
/usr/local/bin/sghtmltopdf実行ファイル
/usr/share/fonts/truetype/sghtmltopdf/*.ttf同梱フォント
/usr/share/doc/sghtmltopdf/fonts/OFL-*.txtフォントのライセンス
/work既定の作業ディレクトリ

ベースはdebian:bookworm-slimで、追加のシステムパッケージはありません(TLSのルート証明書は実行ファイルに埋め込まれているためca-certificatesも不要です)。