合并
基本合并
将两个 PDF 合并为一个。
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
页面范围提取
从 5 页文档中提取第 2 至第 4 页。
extracted, _ := gpdf.Merge([]gpdf.Source{
{Data: full, Pages: gpdf.PageRange{From: 2, To: 4}},
})
带元数据
为合并输出设置标题、作者和制作者。
merged, _ := gpdf.Merge(
[]gpdf.Source{
{Data: cover},
{Data: body},
{Data: appendix},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", "gpdf"),
)
合并 + 页码
合并文档,然后在每一页叠加页码。
// 合并
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
// 打开并添加页码
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()
封面 + 生成内容 + 部分附件
生产场景:合并扫描的封面页、gpdf 生成的正文以及附件的前 3 页。
coverPage, _ := os.ReadFile("cover.pdf")
attachment, _ := os.ReadFile("attachment.pdf")
// 使用 gpdf 生成正文
doc := template.New(template.WithPageSize(document.A4))
page := doc.AddPage()
page.AutoRow(func(r *template.RowBuilder) {
r.Col(12, func(c *template.ColBuilder) {
c.Text("Generated Content", template.FontSize(20), template.Bold())
})
})
generated, _ := doc.Generate()
// 全部合并
merged, _ := gpdf.Merge(
[]gpdf.Source{
{Data: coverPage},
{Data: generated},
{Data: attachment, Pages: gpdf.PageRange{From: 1, To: 3}},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", ""),
)