ブログ

リリースノート、レンダラの内部解説、コミュニティの活用事例。gpdf プロジェクトからお届けします。

gpdf team

Go の PDF にページ番号とヘッダー・フッターをちゃんと入れる

gpdf でヘッダー、フッター、『Page X of Y』を Go PDF に入れる方法。ビルダの 2 メソッドと、ページ総数を自動で埋める 2 段階パスの仕組みを解説。

tutorialinternals
Taiki Noda

gpdf vs wkhtmltopdf vs Chromium — Go の PDF 生成 2026

wkhtmltopdf はアーカイブ済み。Chromium は 1 リクエスト 170 MB。gpdf は 13 µs/ページ、ブラウザ不要。2026 年の正直な比較。

comparisonbenchmarkmigration
Taiki Noda

Col の中に Row をネストする方法は?

できません。gpdf の ColBuilder に Row メソッドはなく、12 カラムグリッドは意図的にフラットです。代わりに使う 3 つのイディオムを示します。

recipetutorialtemplates
野田大貴

テーブルを複数ページにまたがって出力するには?

何もしなくていい。1 ページに収まらない行数のテーブルを渡せば、gpdf がボディを自動で改ページし、各ページの先頭にヘッダーを繰り返す。

recipetutorialtemplates
野田大貴

gpdf で 1 つの段落に 2 つのフォントを混ぜる方法

gpdf で 1 段落に複数フォントを混ぜるには c.RichText を使い、各 Span に template.FontFamily を指定する。c.Text は文字列全体に 1 書体しか当てられない。

recipetutorialcjk
Taiki Noda

Go で PDF テーブルを描く — 列幅・縞模様・ページ分割

Go の PDF でテーブルを描くのは事故りやすい。gpdf は列幅・縞模様・ヘッダー繰り返しを Table 呼び出し 1 つに圧縮する。API の全貌とトレードオフ。

tutorialtemplatescomparison
Taiki Noda

signintech/gopdf から gpdf へ — 座標計算が消える

signintech/gopdf は速いが、セル・線・ヘッダ全てが (x, y) の計算式。gpdf 移行で座標計算がほぼ消える流れを API 対応表とコードで示す。

migrationcomparisontutorial
野田大貴

gpdf で画像を等比でカラム幅に収めるには?

c.Image にバイト列を渡すだけ。gpdf はデフォルトでカラム幅に等比縮小する。明示したいときだけ FitWidth / FitHeight を使う。

recipetutorial
野田大貴

gpdf でテーブルに縞模様(ゼブラ)の行を入れるには?

template.TableStripe を渡すだけ。gpdf が偶数行に背景色を塗ってくれる。行ループも手動スタイル指定も不要。

recipetutorialtemplates
野田大貴

gpdf にカスタム TrueType フォントを追加するには?

TTF をバイト列で読み込んで gpdf.WithFont でファミリ名を登録する。Inter からアイコンフォントまで、どんな TrueType でも同じ手順で動く。

recipetutorial
野田大貴

unipdf の AGPL/商用ライセンスから gpdf へ移行する

unidoc/unipdf は AGPL v3 もしくは開発者ごとの商用ライセンス。MIT・ゼロ依存・ライセンスキー不要の gpdf への移行ガイド。

migrationcomparisontutorial
野田大貴

Bootstrap 流の発想を PDF へ: gpdf の 12 カラムグリッド

gpdf は PDF レイアウトに Bootstrap 由来の 12 カラムグリッドを採用した。breakpoint や gutter は捨て、予測可能性を優先した設計判断を解説する。

internalstemplatescomparison
野田大貴

gpdf のテーブルで列幅を指定する方法

c.Table に template.ColumnWidths(...) を渡す。値は親 Col 幅に対するパーセンテージ。合計 100 で全幅、末尾を省くと残りが自動分配される。

recipetutorial
野田大貴

gpdf で透過 PNG を埋め込む方法

PNG のバイト列を c.Image にそのまま渡す。gpdf がアルファチャンネルを PDF の SMask に変換し、透過部分はそのまま描画される。

recipetutorial
野田大貴

gpdf で Bold と Italic を同時に指定する方法

template.Bold() と template.Italic() を同じ span に渡すだけ。ただし TrueType フォントは 4 バリアント全部を登録しないと BoldItalic のルックアップが base family に静かにフォールバックする。

recipetutorial
野田大貴

Go で請求書 PDF を 50 行以下で作る

動く請求書 PDF の完全コードを Go で 50 行。依存ゼロ、Chromium も CGO も不要。gpdf だけで header / table / total まで全部入り。

tutorialtemplates
野田大貴

gpdf で Source Han Sans JP (源ノ角ゴシック JP) を使うには?

Adobe の GitHub リリースから TTF 版 Source Han Sans JP を取得して gpdf.WithFont で登録する。Noto Sans JP と同じグリフ、7 ウェイト、SIL OFL。

recipecjktutorial
野田大貴

gpdf が他の Go PDF ライブラリより 10〜30 倍速い理由

1 ページ 13 µs、100 ページレポート 683 µs。チューニングではなく 3 つの設計判断の積。実際のコードパスで説明する。

benchmarkinternalscomparison
野田大貴

gpdf で日本語が豆腐文字 (□□□) になる原因と直し方

PDF 出力で日本語が □ になるのはフォント未登録が最多。よくある 4 原因と直し方を最短で整理する。

recipetroubleshootingcjk
野田大貴

gpdf で IPAex ゴシックを使うには?

ipaexg.ttf を gpdf.WithFont で登録する。IPAex は Regular 1 ウェイトのみなので、Bold は合成か明朝ペアで対応する。

recipecjktutorial
野田大貴

gpdf の 12 列グリッドはどう動くのか?

gpdf の 12 列グリッドは r.Col(span, fn) に 1–12 の整数を渡すだけ。幅は span/12、ガターもブレークポイントもない PDF 向けの割り切った設計。

recipetutorialtemplates
野田大貴

go-pdf/fpdf もアーカイブ。Go の PDF は gpdf に移る。

jung-kurt/gofpdf は 2021 年、go-pdf/fpdf は 2025 年にアーカイブ。2026 年に選ぶべき Go PDF ライブラリは gpdf — 理由とトレードオフ。

migrationcomparisonbenchmark
野田大貴

Go で日本語 PDF を作る決定版ガイド (2026)

Go で日本語 PDF を吐く完全手順。CGO なし、Chromium なし、豆腐文字なし。フォント・サブセット・混植・縦書きの実務まで。

tutorialcjktroubleshooting
野田大貴

2026 年 Go PDF ライブラリ徹底比較

2026 年時点で稼働する Go の PDF ライブラリを 4 種のワークロードでベンチ。ライセンス・依存・保守状況を横並びで比較する。

comparisonbenchmark
野田大貴

gpdf で日本語フォントを埋め込むには?

gpdf.WithFont にTTFバイトを渡すだけ。サブセット埋め込みも自動、CGOも不要。Go で日本語 PDF を作る最短手順。

recipecjktutorial
野田大貴

gpdf で Noto Sans JP を使うには?

static 版の NotoSansJP-Regular.ttf を gpdf.WithFont に登録するだけ。Variable フォントを避ける理由と、17,000 グリフが PDF 内で 40 KB 未満まで減るサブセット化の話。

recipecjktutorial
野田大貴

アーカイブされた gofpdf から gpdf へ移行する完全ガイド

gofpdf は 2021 年アーカイブ、後継 go-pdf/fpdf も 2025 年停止。CJK 対応・ゼロ依存の純 Go ライブラリ gpdf への移行ガイド。

migrationcomparisontutorial