PDF 병합
개요
Since v1.0.2gpdf는 여러 PDF 문서를 하나로 병합할 수 있습니다. 전체 문서를 결합하거나 각 소스에서 특정 페이지 범위를 추출할 수 있습니다.
일반적인 사용 사례:
- 표지 페이지와 생성된 콘텐츠 결합
- 청구서를 하나의 번들로 병합
- 대용량 문서에서 특정 페이지 추출
- 여러 소스에서 보고서 조합
기본 병합
gpdf.Merge()를 사용하여 두 개 이상의 PDF를 결합합니다:
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)
각 Source는 원시 PDF 바이트를 포함합니다. 기본적으로 각 소스의 모든 페이지가 포함됩니다.
페이지 범위 추출
PageRange를 사용하여 소스에서 특정 페이지만 포함합니다 (1 기반, 양 끝 포함):
full, _ := os.ReadFile("report.pdf")
// 2~4 페이지 추출
extracted, err := gpdf.Merge([]gpdf.Source{
{Data: full, Pages: gpdf.PageRange{From: 2, To: 4}},
})
PageRange 규칙:
From: 0또는 생략 — 첫 번째 페이지부터 시작To: 0또는 생략 — 마지막 페이지까지 포함- 제로값
PageRange{}— 모든 페이지 포함
메타데이터 설정
WithMergeMetadata를 사용하여 병합된 출력에 문서 정보를 설정합니다:
merged, err := gpdf.Merge(
[]gpdf.Source{
{Data: cover},
{Data: body},
{Data: appendix},
},
gpdf.WithMergeMetadata("Policy Bundle", "Example Ltd", "gpdf"),
)
매개변수: title, author, producer.
병합 + 오버레이
병합 후 페이지 번호나 워터마크를 추가하려면 병합과 오버레이를 결합합니다:
// 1단계: 문서 병합
merged, _ := gpdf.Merge([]gpdf.Source{
{Data: cover},
{Data: body},
})
// 2단계: 병합된 결과를 열고 페이지 번호 추가
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)
API 레퍼런스
| 함수 / 타입 | 설명 |
|---|---|
gpdf.Merge(sources, opts...) | 여러 PDF를 하나로 병합 |
gpdf.Source | 입력 PDF: Data []byte + Pages PageRange |
gpdf.PageRange | 1 기반 양 끝 포함 범위: From, To (0 = 기본값) |
gpdf.WithMergeMetadata(title, author, producer) | 출력에 문서 메타데이터 설정 |
다음 단계
- 기존 PDF 오버레이 — 기존 PDF 위에 콘텐츠 추가
- 예제: 병합 — 더 많은 병합 코드 예제
- API 레퍼런스 — 전체
gpdf패키지 레퍼런스