Aspose.PDF FOSS for Go의 일반적인 사용 사례

Aspose.PDF FOSS for Go의 일반적인 사용 사례

Aspose.PDF FOSS for Go는 PDF 문서 관리를 위한 순수 Go 모듈입니다. 이 문서에서는 Document, Form, EncryptionOptions, Table, 및 OutlineItemCollection 유형을 사용한 가장 자주 필요한 작업을 다룹니다.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

단계별 가이드

1단계: 패키지 설치

Go 모듈 의존성을 추가하세요:

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

2단계: 패키지 가져오기

가져오기 참조를 간결하게 유지하려면 별칭을 사용하세요:

import (
    "fmt"
    pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)

3단계: PDF를 페이지별 파일로 분할

Document.Split은(는) 다중 페이지 문서를 페이지당 하나의 *Document로 나눕니다.

doc, err := pdf.Open("report.pdf")
if err != nil {
    panic(err)
}
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("report_page_%03d.pdf", i+1))
}
fmt.Printf("Split %d pages\n", len(pages))

4단계: 여러 PDF를 하나로 병합

Document.Append은(는) 저장하기 전에 두 번째 문서의 페이지를 제자리에서 병합합니다.

base, _ := pdf.Open("intro.pdf")
chapter1, _ := pdf.Open("chapter1.pdf")
chapter2, _ := pdf.Open("chapter2.pdf")
appendix, _ := pdf.Open("appendix.pdf")

base.Append(chapter1)
base.Append(chapter2)
base.Append(appendix)
base.Save("full_document.pdf")

5단계: 비밀번호 암호화 적용

EncryptionOptions은(는) 사용자 비밀번호, 소유자 비밀번호, 알고리즘 및 작업당 Permissions을(를) 한 번의 호출로 설정합니다:

doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
    UserPassword:  "clientpass",
    OwnerPassword: "adminpass",
    Permissions:   &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")

암호화된 파일에서 평문 복사본을 생성하려면:

doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")

단계 6: AcroForm를 채우세요

필드명을 기준으로 반복하거나 대상으로 지정합니다. 구체적인 유형을 확인하세요 (TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField).

doc, _ := pdf.Open("application_form.pdf")

name := doc.Form().Field("applicant_name").(*pdf.TextBoxField)
name.SetValue("Jane Doe")

agree := doc.Form().Field("terms_accepted").(*pdf.CheckboxField)
agree.SetChecked(true)

country := doc.Form().Field("country").(*pdf.ComboBoxField)
country.SetSelected(0)

doc.Save("application_filled.pdf")

단계 7: 표 레이아웃을 구축합니다

청구서 또는 보고서 생성을 위해 페이지에 Row 및 Cell 항목이 포함된 Table를 추가합니다:

doc, _ := pdf.Open("invoice_template.pdf")
page, _ := doc.Page(1)

tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{200, 80, 100})

header := tbl.AddRow()
header.AddCell("Description")
header.AddCell("Qty")
header.AddCell("Amount")

row := tbl.AddRow()
row.AddCell("PDF Processing Service")
row.AddCell("1")
row.AddCell("$500.00")

page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")

단계 8: 북마크 트리를 추가합니다

OutlineItemCollection는 장/절 중첩과 DestinationXYZ 페이지 대상이 있는 북마크를 생성합니다:

doc, _ := pdf.Open("manual.pdf")
page1, _ := doc.Page(1)
page2, _ := doc.Page(2)

ch1 := pdf.NewOutlineItemCollection(doc)
ch1.SetTitle("Introduction")
ch1.SetBold(true)
ch1.SetDestination(pdf.NewDestinationXYZ(page1, 0, 792, 1.0))
doc.Outlines().Add(ch1)

ch2 := pdf.NewOutlineItemCollection(doc)
ch2.SetTitle("Configuration")
ch2.SetDestination(pdf.NewDestinationFit(page2))
doc.Outlines().Add(ch2)

doc.Save("manual_bookmarked.pdf")

일반적인 문제 및 해결 방법

pdf.Open 유효한 PDF 파일에 대해 오류를 반환합니다 파일 경로가 올바른지, 파일이 다른 프로세스에서 열려 있지 않은지 확인하십시오. Windows에서는 파일 잠금으로 인해 읽기가 차단될 수 있습니다.

폼 필드에 접근할 때 타입 어설션 패닉 발생 사용 pdf.FieldType(f) 또는 타입 스위치를 사용하여 어설션하기 전에 필드 유형을 검사합니다. A *pdf.TextBoxField a에 대한 어설션은 CheckboxField 패닉이 발생합니다.

go get "module not found" 로 실패합니다 Ensure GOPROXY 은(는) 접근 가능한 프록시(e.g. GOPROXY=direct) 그리고 네트워크가 도달할 수 있는 github.com. 에어갭 환경에서는 사용 GONOSUMCHECK 또는 로컬 모듈 미러.

SaveTo 실패 후 OpenWithPassword 호출하면 Save after OpenWithPassword 호출하지 않고 RemoveEncryption, 출력이 원래 비밀번호로 다시 암호화됩니다. 이는 예상되는 동작이며 — 호출 RemoveEncryption 명시적으로 평문 복사본을 생성합니다.

병합된 문서의 페이지 수가 잘못되었습니다. Append 수신자를 제자리에서 변형합니다. 호출하고 있지 않은지 확인하십시오 Append 이미 저장된 문서에 대해; 여러 개의 병합된 출력물을 만들어야 하는 경우 기본 문서를 다시 엽니다.


자주 묻는 질문

디스크에 쓰지 않고 PDF를 처리할 수 있나요?

Document.WriteTo은 io.Writer을 받아 버퍼, 네트워크 스트림, 혹은 응답 라이터에 임시 파일을 만들지 않고도 쓸 수 있습니다.

Aspose.PDF FOSS for Go를 동시에 사용하는 것이 안전한가요?

각 *Document 인스턴스는 goroutine 안전하지 않습니다. goroutine당 하나의 Document을 사용하거나, 공유 인스턴스를 뮤텍스로 보호하세요.

채워진 폼에서 필드 값을 어떻게 다시 읽어올 수 있나요?

어떤 필드든 Field.Value()를 사용하거나 타입 어설션을 통해 CheckboxField.Checked()이나 ComboBoxField.SelectedIndex()와 같은 타입 전용 접근자를 사용할 수 있습니다.

기존 템플릿 없이 처음부터 PDF를 만들 수 있나요?

네. pdf.NewDocument()는 빈 문서를 생성합니다. 빈 페이지를 추가하려면 AddBlankPageFromFormat(pdf.PageFormatA4)을 호출하고, 저장하기 전에 내용(표, 주석 등)을 추가하세요.

Document.Save와 Document.WriteTo의 차이점은 무엇인가요?

Save(path string)은(는) 파일 경로에 씁니다. WriteTo(w io.Writer)은(는) 모든 io.Writer에 씁니다 — HTTP 응답, 버퍼 또는 스트림 파이프라인에 유용합니다.


참조

 한국어