Achatamento
Achatamento Basico
Abra um PDF com formulario preenchido e achate todos os campos em conteudo estatico.
doc, _ := gpdf.Open(filledFormPDF)
if err := doc.FlattenForms(); err != nil {
log.Fatal(err)
}
result, _ := doc.Save()
Achatamento + Marca d'Agua
Achate campos de formulario e adicione uma marca d'agua "FINAL".
doc, _ := gpdf.Open(filledFormPDF)
// Achatar formularios
doc.FlattenForms()
// Adicionar marca d'agua
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()
Achatamento + Numeros de Pagina
Achate campos de formulario e adicione numeros de pagina em todas as paginas.
doc, _ := gpdf.Open(filledFormPDF)
// Achatar formularios
doc.FlattenForms()
// Adicionar numeros de pagina
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()
Achatamento Seguro (Sem Formularios)
FlattenForms() e seguro para chamar em qualquer PDF — e um no-op se nao existem campos de formulario.
// Funciona em qualquer PDF, com ou sem formularios
doc, _ := gpdf.Open(anyPDF)
doc.FlattenForms() // no-op se nao ha AcroForm
result, _ := doc.Save()