PDFマージ
概要
Since v1.0.2gpdfは複数のPDFドキュメントを1つに結合できます。ドキュメント全体を結合することも、各ソースから特定のページ範囲を抽出することもできます。
一般的なユースケース:
- カバーページと生成コンテンツの結合
- 請求書を1つのバンドルにマージ
- 大きなドキュメントから特定のページを抽出
- 複数のソースからレポートを組み立て
基本的なマージ
gpdf.Merge() を使って2つ以上のPDFを結合します:
import gpdf "github.com/gpdf-dev/gpdf"
cover, _ := os.ReadFile("cover.pdf")
body, _ := os.ReadFile("body.pdf")
merged, err := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
if err != nil {
log.Fatal(err)
}
os.WriteFile("output.pdf", merged, 0644)
各 Source は生のPDFバイトを含みます。デフォルトでは、各ソースのすべてのページが含まれます。
ページ範囲の抽出
PageRange を使って、ソースから特定のページのみを含めます(1ベース、両端を含む):
full, _ := os.ReadFile("report.pdf")
// 2ページ目から4ページ目を抽出
extracted, err := gpdf.Merge([]gpdf.Source{
{Data: full, Pages: gpdf.PageRange{From: 2, To: 4}},
})
PageRange のルール:
From: 0または省略 — 最初のページから開始To: 0または省略 — 最後のページまで- ゼロ値
PageRange{}— すべてのページを含む
メタデータの設定
WithMergeMetadata を使って、マージ出力にドキュメント情報を設定します:
merged, err := gpdf.Merge(
[]gpdf.Source{
{Data: cover},
{Data: body},
{Data: appendix},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", "gpdf"),
)
パラメータ: title, author, producer
マージ + オーバーレイ
マージとオーバーレイを組み合わせて、マージ後にページ番号や透かしを追加します:
// Step 1: ドキュメントをマージ
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
// Step 2: マージ結果を開いてページ番号を追加
doc, _ := gpdf.Open(merged)
count, _ := doc.PageCount()
doc.EachPage(func(i int, p *template.PageBuilder) {
p.Absolute(document.Mm(170), document.Mm(285), func(c *template.ColBuilder) {
c.Text(fmt.Sprintf("%d / %d", i+1, count),
template.FontSize(10),
template.AlignRight(),
)
}, template.AbsoluteWidth(document.Mm(20)))
})
result, _ := doc.Save()
os.WriteFile("final.pdf", result, 0644)
APIリファレンス
| 関数 / 型 | 説明 |
|---|---|
gpdf.Merge(sources, opts...) | 複数のPDFを1つに結合 |
gpdf.Source | 入力PDF: Data []byte + Pages PageRange |
gpdf.PageRange | 1ベースの範囲: From, To(0 = デフォルト) |
gpdf.WithMergeMetadata(title, author, producer) | 出力にドキュメントメタデータを設定 |
次のステップ
- 既存PDFオーバーレイ — 既存のPDFの上にコンテンツを追加
- 例: マージ — マージのコード例
- APIリファレンス —
gpdfパッケージの完全なリファレンス