フラット化

基本的なフラット化

入力済みフォームPDFを開き、すべてのフィールドを静的コンテンツにフラット化します。

doc, _ := gpdf.Open(filledFormPDF)

if err := doc.FlattenForms(); err != nil {
    log.Fatal(err)
}

result, _ := doc.Save()

フラット化 + 透かし

フォームフィールドをフラット化し、「FINAL」透かしを追加します。

doc, _ := gpdf.Open(filledFormPDF)

// フォームをフラット化
doc.FlattenForms()

// 透かしを追加
doc.EachPage(func(_ int, p *template.PageBuilder) {
    p.Absolute(document.Mm(50), document.Mm(140), func(c *template.ColBuilder) {
        c.Text("FINAL",
            template.FontSize(72),
            template.TextColor(pdf.Gray(0.9)),
        )
    })
})

result, _ := doc.Save()

フラット化 + ページ番号

フォームフィールドをフラット化し、すべてのページにページ番号を追加します。

doc, _ := gpdf.Open(filledFormPDF)

// フォームをフラット化
doc.FlattenForms()

// ページ番号を追加
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()

安全なフラット化(フォームなし)

FlattenForms() は任意のPDFで安全に呼び出せます — フォームフィールドが存在しない場合は何も行いません。

// フォームの有無に関わらず、任意のPDFで動作
doc, _ := gpdf.Open(anyPDF)
doc.FlattenForms() // AcroFormがなければ何もしない
result, _ := doc.Save()