소개
Aspose.PDF FOSS for Go는 PDF 문서를 다루기 위한 순수 Go 라이브러리입니다. 새 PDF를 처음부터 생성하고, 기존 파일을 열고 편집하며, 문서를 페이지별 출력으로 분할하고, 여러 PDF를 병합하고, 비밀번호 기반 암호화를 적용하는 API을 제공합니다 — 모두 네이티브 C 또는 C++ 의존성 없이.
이 라이브러리는 github.com/aspose-pdf-foss/aspose-pdf-foss-for-go에서 Go 모듈로 제공되며 MIT 라이선스로 배포됩니다. Go 1.24 이상이 필요합니다.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go이 글에서는 핵심 기능을 다룹니다: 문서 작업, 보안, AcroForm 채우기, 표 레이아웃, 북마크 및 주석.
핵심 기능
문서 분할 및 병합
Document 유형은 PDF를 페이지별 문서로 나누는 Split()과 외부 문서를 제자리에서 병합하는 Append()을 제공합니다. PageRange은(는) 선택적 추출 또는 내보내기를 위해 페이지 하위 집합을 작업할 수 있게 합니다. Metadata는 저자, 제목, 생성 날짜를 읽고 쓸 수 있도록 문서 정보 필드를 노출합니다.
doc, _ := pdf.Open("report.pdf")
// Split into per-page PDFs
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page%03d.pdf", i+1))
}
// Merge a second PDF into doc
doc2, _ := pdf.Open("appendix.pdf")
doc.Append(doc2)
doc.Save("combined.pdf")
비밀번호 암호화 및 권한
EncryptionOptions은(는) SetEncryption에 대한 단일 호출로 사용자 비밀번호, 소유자 비밀번호 및 허용 작업을 구성합니다. 지원되는 알고리즘은 AES-128(기본값), AES-256(ISO 32000-2, PDF 2.0 출력 생성) 및 레거시 호환성을 위한 RC4-128입니다. Permissions는 인쇄, 복사, 접근성 등 개별 작업을 독립적으로 허용하거나 거부할 수 있게 합니다. OpenWithPassword은(는) 암호화된 파일을 열고; RemoveEncryption는 평문 복사본을 저장하기 전에 비밀번호를 제거합니다.
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")
AcroForm 필드 처리
Form은(는) 문서 내 모든 AcroForm 필드에 대한 접근을 제공합니다. Field은 기본 인터페이스이며, 타입 어설션을 통해 TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField에 접근할 수 있습니다. 필드 이름으로 필드 값을 설정하면 — 저장 시 뷰어가 /NeedAppearances=true을 통해 외관을 자동으로 재생성합니다.
doc, _ := pdf.Open("application.pdf")
text := doc.Form().Field("full_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree_terms").(*pdf.CheckboxField)
check.SetChecked(true)
combo := doc.Form().Field("country").(*pdf.ComboBoxField)
combo.SetSelected(0)
doc.Save("application_filled.pdf")
표 레이아웃
Table, Row, Cell은(는) PDF 페이지에 구조화된 그리드 레이아웃을 구축합니다. BorderInfo은(는) 셀별 또는 전체 표에 대한 테두리 스타일을 구성합니다. MarginInfo는 셀 패딩을 설정합니다. TextStyle는 HAlign와 VAlign을 통해 글꼴, 크기, 색상 및 정렬을 제어합니다. Image은(는) 텍스트와 함께 셀 내부에 배치될 수 있습니다.
doc, _ := pdf.Open("invoice_template.pdf")
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{120, 80, 80})
row := tbl.AddRow()
row.AddCell("Item")
row.AddCell("Qty")
row.AddCell("Price")
page, _ := doc.Page(1)
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")
북마크 및 탐색
OutlineItemCollection은(는) 단일 북마크 항목을 나타냅니다. SetTitle, SetBold, SetColor, SetDestination를 사용하여 이를 구성합니다. DestinationXYZ는 정확한 페이지 좌표를 지정합니다; DestinationFit은 페이지를 뷰어에 맞춥니다. NamedDestinations은 이름으로 접근 가능한 재사용 가능한 점프 대상을 등록합니다.
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
chapter := pdf.NewOutlineItemCollection(doc)
chapter.SetTitle("Chapter 1: Getting Started")
chapter.SetBold(true)
chapter.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(chapter)
section := pdf.NewOutlineItemCollection(doc)
section.SetTitle("Installation")
section.SetDestination(pdf.NewDestinationFit(page))
chapter.Add(section)
doc.Save("manual_with_bookmarks.pdf")
주석 및 스탬프
AnnotationCollection은 페이지의 모든 주석을 보유합니다. TextAnnotation은 스티키 노트 댓글을 추가합니다. StampAnnotation는 사전 정의된 StampName 값 중 하나를 사용하여 승인 또는 정보 스탬프를 배치합니다. HighlightAnnotation는 텍스트 영역을 표시합니다. RedactAnnotation는 민감한 내용을 영구적으로 제거합니다. LinkAnnotation은 클릭 가능한 영역에 URI 또는 페이지 목적지 동작을 연결합니다.
doc, _ := pdf.Open("draft.pdf")
page, _ := doc.Page(1)
stamp := pdf.NewStampAnnotation(page, pdf.Rectangle{LLX: 100, LLY: 700, URX: 250, URY: 750}, pdf.StampNameApproved)
page.Annotations().Add(stamp)
doc.Save("draft_approved.pdf")
빠른 시작
모듈을 설치합니다:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go최소한의 워크플로우 — PDF를 열고, 비밀번호로 암호화한 뒤 저장합니다:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "secret",
OwnerPassword: "ownerSecret",
Permissions: &pdf.Permissions{AllowPrint: true},
})
if err := doc.Save("output_encrypted.pdf"); err != nil {
panic(err)
}
fmt.Println("Saved output_encrypted.pdf")
}
오픈 소스 및 라이선스
Aspose.PDF FOSS for Go는 MIT 라이선스 하에 배포됩니다. 사용 제한이 없으며, 런타임 비용도 없고, 등록 요구사항도 없습니다. 소스 코드는 github.com/aspose-pdf-foss/aspose-pdf-foss-for-go에서 확인할 수 있습니다.
MIT 라이선스 조건에 따라 상업적 사용이 허용됩니다. 프로젝트에 엔터프라이즈급 지원, 확장된 포맷 지원 또는 클라우드 통합이 필요하다면, Aspose.PDF — Enterprise Product Family은 별도의 상업 제품입니다.