PDFを、
座標計算なしで。
gpdfは、MITライセンスの純GoのPDF生成ライブラリです。外部依存パッケージは0、Go標準ライブラリだけで動きます。12カラムグリッドでレイアウトを宣言し、TrueType埋め込みで日本語・中国語・韓国語をそのまま描画。1ページあたり約13µsで出力し、gofpdf・gopdf・Maroto v2と比べて10〜30倍高速です。
package main import ( "os" "github.com/gpdf-dev/gpdf/document" "github.com/gpdf-dev/gpdf/template" ) func main() { doc := template.New( template.WithPageSize(document.A4), template.WithMargins(document.UniformEdges(document.Mm(20))), ) page := doc.AddPage() page.AutoRow(func(r *template.RowBuilder) { r.Col(12, func(c *template.ColBuilder) { c.Text("Hello, World!", template.FontSize(24), template.Bold()) }) }) data, _ := doc.Generate() os.WriteFile("hello.pdf", data, 0644) }
純Go、依存ゼロ
Go標準ライブラリだけで動く — 外部パッケージ0、CGOなし、Cビルド環境なし。go buildしたバイナリ1つで、Linuxコンテナ・AWS Lambda・エッジまで同じように動く。
12カラムグリッド、座標は書かない
Bootstrap譲りのレイアウト。r.Col(7) + r.Col(5) = 12。レイアウトはコードに閉じる、ピクセル定規はもう要らない。行と列は好きなだけネストできる。
CJK、最初から一等扱い
TrueTypeフォント埋め込みを標準搭載。日本語・中国語・韓国語の3つの書記系を、そのまま描画する。豆腐(□)も文字化けも、ベンダーパッチも要らない。
速さを、数字で見る
cjk請求書で計測
計測: 請求書生成 — 日本語テキスト、TrueTypeフォント3サブセット埋込、ロゴ1点、QR 1点。Go 1.25 / Apple M2 で1ドキュメントあたりを計測。数値は丸め、実測値は実行ごとに変動する。
gpdfが選ばれる理由
本番運用のPDFのために設計
外部依存 0
Go標準ライブラリだけ。CGOなし、Cビルド環境なし、ネイティブモジュールなし。毎回、再現可能なビルドが保証される。
12カラムグリッド
合計が12になる行と列。Bootstrap譲りで、最初から迷わない。行と列は好きなだけネストできる。
3書記系のCJK対応
TrueTypeフォントを埋め込み、外部ツールなしで日本語(JP)・中国語(ZH)・韓国語(KR)を描画する。
10〜30倍 高速
1ページあたり約13µs。gofpdf・gopdf・Maroto v2と計測比較した結果。
Fluent Builder API
PageBuilder → RowBuilder → ColBuilder。すべての設定はFunctional Options(WithXxx)で統一。
JSON Schema + Go Templates
PDF構造をJSONで宣言し、text/templateで動かす。単一のソースから数千件のPDFを量産できる。
よくある質問
導入前に確認したいこと
gpdfとは?
gpdfは、MITライセンスで公開されている純GoのPDF生成ライブラリです。外部依存パッケージは0で、Go標準ライブラリのみを使用します。Bootstrap風の12カラムグリッドでレイアウトを宣言し、TrueTypeフォント埋め込みによりCJK(日本語・中国語・韓国語)を標準でサポートします。
gpdfは他のライブラリと比べてどれくらい速い?
gpdfは1ページのPDF文書を約13マイクロ秒で描画します。gofpdf・gopdf・Maroto v2との計測比較で10〜30倍高速という結果が出ています。
日本語・中国語・韓国語に対応している?
はい。gpdfはTrueTypeフォントを埋め込み、日本語(JP)・中国語(ZH)・韓国語(KR)の3つの書記系すべてを標準描画します。豆腐(□)も文字化けも発生しません。
gpdfは無料で使える?
はい。gpdfはMITライセンスの完全オープンソースです。個人利用・商用利用・再配布も含めて自由です。
gpdfのインストール方法は?
go get github.com/gpdf-dev/gpdf を実行してください。Go 1.22以上が必要です(Go 1.26までテスト済み)。外部依存パッケージは0で、Go標準ライブラリのみで動作します。
今日、PDFを届けよう。
MITライセンス、ずっと無料。Go 1.22〜1.26でテスト済み。go get ひとつで始まる。