Fusion de PDF
Descripcion general
Since v1.0.2gpdf puede fusionar multiples documentos PDF en uno. Puede combinar documentos completos o extraer rangos de paginas especificos de cada fuente.
Casos de uso comunes:
- Combinar una portada con contenido generado
- Fusionar facturas en un solo paquete
- Extraer paginas especificas de un documento grande
- Ensamblar informes de multiples fuentes
Fusion basica
Use gpdf.Merge() para combinar dos o mas 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 contiene bytes PDF sin procesar. Por defecto, se incluyen todas las paginas de cada fuente.
Extraccion de rango de paginas
Use PageRange para incluir solo paginas especificas de una fuente (base 1, inclusivo):
full, _ := os.ReadFile("report.pdf")
// Extraer paginas 2 a 4
extracted, err := gpdf.Merge([]gpdf.Source{
{Data: full, Pages: gpdf.PageRange{From: 2, To: 4}},
})
Reglas de PageRange:
From: 0u omitido — comienza desde la primera paginaTo: 0u omitido — llega hasta la ultima pagina- Valor cero
PageRange{}— incluye todas las paginas
Configurar metadatos
Use WithMergeMetadata para establecer la informacion del documento en la salida fusionada:
merged, err := gpdf.Merge(
[]gpdf.Source{
{Data: cover},
{Data: body},
{Data: appendix},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", "gpdf"),
)
Parametros: title, author, producer.
Fusion + Superposicion
Combine la fusion con la superposicion para agregar numeros de pagina o marcas de agua despues de fusionar:
// Paso 1: Fusionar documentos
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
// Paso 2: Abrir el resultado fusionado y agregar 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 de API
| Funcion / Tipo | Descripcion |
|---|---|
gpdf.Merge(sources, opts...) | Fusionar multiples PDFs en uno |
gpdf.Source | PDF de entrada: Data []byte + Pages PageRange |
gpdf.PageRange | Rango inclusivo base 1: From, To (0 = predeterminado) |
gpdf.WithMergeMetadata(title, author, producer) | Establecer metadatos del documento en la salida |
Proximos pasos
- Superposicion de PDF existente — Agregar contenido sobre PDFs existentes
- Ejemplos: Fusion — Mas ejemplos de codigo de fusion
- Referencia de API — Referencia completa del paquete
gpdf