v1.0.13 · MIT · 純Go · 依存ゼロ

PDFを、
座標計算なしで。

gpdfは、MITライセンスの純GoのPDF生成ライブラリです。外部依存パッケージは0、Go標準ライブラリだけで動きます。12カラムグリッドでレイアウトを宣言し、TrueType埋め込みで日本語・中国語・韓国語をそのまま描画。1ページあたり約13µsで出力し、gofpdf・gopdf・Maroto v2と比べて10〜30倍高速です。

$go get github.com/gpdf-dev/gpdf
クイックスタートを読む
main.gogo run .
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)
}
これだけで完結したプログラムです。実行すると hello.pdf ができます。
01

純Go、依存ゼロ

Go標準ライブラリだけで動く — 外部パッケージ0、CGOなし、Cビルド環境なし。go buildしたバイナリ1つで、Linuxコンテナ・AWS Lambda・エッジまで同じように動く。

02

12カラムグリッド、座標は書かない

Bootstrap譲りのレイアウト。r.Col(7) + r.Col(5) = 12。レイアウトはコードに閉じる、ピクセル定規はもう要らない。行と列は好きなだけネストできる。

03

CJK、最初から一等扱い

TrueTypeフォント埋め込みを標準搭載。日本語・中国語・韓国語の3つの書記系を、そのまま描画する。豆腐(□)も文字化けも、ベンダーパッチも要らない。

速さを、数字で見る

cjk請求書で計測

1 block = 2 ms

gpdf2 ms
gofpdf15 ms
gopdf20 ms
Maroto v245 ms

計測: 請求書生成 — 日本語テキスト、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は、MITライセンスで公開されている純GoのPDF生成ライブラリです。外部依存パッケージは0で、Go標準ライブラリのみを使用します。Bootstrap風の12カラムグリッドでレイアウトを宣言し、TrueTypeフォント埋め込みによりCJK(日本語・中国語・韓国語)を標準でサポートします。

今日、PDFを届けよう。

MITライセンス、ずっと無料。Go 1.22〜1.26でテスト済み。go get ひとつで始まる。

$go get github.com/gpdf-dev/gpdf
ドキュメント一覧