Fusao de PDF
Visao Geral
Since v1.0.2O gpdf pode mesclar multiplos documentos PDF em um so. Voce pode combinar documentos inteiros ou extrair intervalos de paginas especificos de cada fonte.
Casos de uso comuns:
- Combinar uma pagina de capa com conteudo gerado
- Mesclar faturas em um unico pacote
- Extrair paginas especificas de um documento grande
- Montar relatorios de multiplas fontes
Fusao Basica
Use gpdf.Merge() para combinar dois ou mais PDFs:
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)
Cada Source contem bytes PDF brutos. Por padrao, todas as paginas de cada fonte sao incluidas.
Extracao de Intervalo de Paginas
Use PageRange para incluir apenas paginas especificas de uma fonte (base 1, inclusivo):
full, _ := os.ReadFile("report.pdf")
// Extrair paginas 2 a 4
extracted, err := gpdf.Merge([]gpdf.Source{
{Data: full, Pages: gpdf.PageRange{From: 2, To: 4}},
})
Regras do PageRange:
From: 0ou omitido — comeca da primeira paginaTo: 0ou omitido — vai ate a ultima pagina- Valor zero
PageRange{}— inclui todas as paginas
Definir Metadados
Use WithMergeMetadata para definir informacoes do documento na saida mesclada:
merged, err := gpdf.Merge(
[]gpdf.Source{
{Data: cover},
{Data: body},
{Data: appendix},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", "gpdf"),
)
Parametros: title, author, producer.
Fusao + Overlay
Combine fusao com overlay para adicionar numeros de pagina ou marcas d'agua apos a mesclagem:
// Passo 1: Mesclar documentos
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
// Passo 2: Abrir resultado mesclado e adicionar numeros de pagina
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)
Referencia da API
| Funcao / Tipo | Descricao |
|---|---|
gpdf.Merge(sources, opts...) | Mesclar multiplos PDFs em um |
gpdf.Source | PDF de entrada: Data []byte + Pages PageRange |
gpdf.PageRange | Intervalo inclusivo base 1: From, To (0 = padrao) |
gpdf.WithMergeMetadata(title, author, producer) | Definir metadados do documento na saida |
Proximos Passos
- Overlay de PDF Existente — Adicionar conteudo sobre PDFs existentes
- Exemplos: Fusao — Mais exemplos de codigo de fusao
- Referencia da API — Referencia completa do pacote
gpdf