자주 묻는 질문

자주 묻는 질문

라이선스 및 오픈 소스

Aspose.PDF FOSS for Go의 라이선스는 무엇인가요?

Aspose.PDF FOSS for Go는 다음 라이선스로 배포됩니다 MIT 라이선스. 전체 라이선스 텍스트는 저장소에 포함되어 있습니다 github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.등록, 활성화 파일, 또는 런타임 키가 필요하지 않습니다.

Aspose.PDF FOSS for Go를 상용 제품에 사용할 수 있나요?

예. MIT 라이선스는 제한 없이 상업적 사용, 수정, 배포 및 개인 사용을 허용합니다. 소프트웨어의 모든 복사본 또는 실질적인 부분에 저작권 고지와 MIT 라이선스 텍스트를 포함해야 합니다.

엔터프라이즈 버전이 있나요?

Aspose.PDF FOSS는 오픈 소스이며 MIT 라이선스 버전입니다. 별도의 상용 Aspose.PDF 제품이 다음과 같이 제공됩니다 Aspose.PDF — Enterprise Product Family 엔터프라이즈 지원, 확장된 포맷 지원, 그리고 클라우드 통합을 포함합니다.


설치 및 요구 사항

Go용 Aspose.PDF FOSS를 어떻게 설치합니까?

모듈을 Go 프로젝트에 추가하세요:

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

소스 파일에서 별칭으로 가져오세요:

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

필요한 Go 버전은 무엇인가요?

Go 1.24 이상이 필요합니다. go version로 버전을 확인하세요.

네이티브 또는 시스템 라이브러리 의존성이 있나요?

No. Aspose.PDF FOSS for Go는 C, C++, CGo 의존성이 없는 순수 Go 구현입니다. 시스템 라이브러리, PDF 뷰어 또는 외부 도구가 필요하지 않습니다.


API Usage

기존 PDF를 어떻게 열 수 있나요?

표준 PDF에는 pdf.Open을, 비밀번호가 보호된 파일에는 pdf.OpenWithPassword을 사용하세요:

doc, err := pdf.Open("document.pdf")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

PDF를 개별 페이지로 분할하려면 어떻게 해야 하나요?

Document.Split은 페이지당 하나씩 []*Document을 반환합니다:

doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}

여러 PDF를 병합하려면 어떻게 해야 하나요?

Document.Append은 소스 문서를 제자리에서 병합합니다:

base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")

어떻게 AcroForm 필드를 채우나요?

다음 Document.Form().Field(name)을 사용하고 구체 타입을 단언하세요:

doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")

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

doc.Save("form_filled.pdf")

지원되는 필드 유형: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.

북마크를 어떻게 추가하나요?

다음 OutlineItemCollection을 생성하고 Destination을 설정하세요:

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

bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")

보안 및 암호화

PDF에 비밀번호를 설정하려면 어떻게 해야 하나요?

비밀번호 보호와 권한 플래그를 적용하려면 Document.SetEncryption을 EncryptionOptions 구조체와 함께 사용하십시오. 파일을 열기 위한 사용자 비밀번호와 수정 권한을 위한 소유자 비밀번호를 제공하세요:

doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
    UserPassword:  "userpass",
    OwnerPassword: "ownerpass",
    Permissions:   &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")

지원되는 암호화 알고리즘은 무엇입니까?

세 가지 알고리즘은 EncryptionOptions.Algorithm를 통해 사용할 수 있습니다:

AlgorithmConstantStandard
AES-128EncryptionAlgAES128 (기본)ISO 32000-1
AES-256EncryptionAlgAES256ISO 32000-2 (PDF 2.0 출력)
RC4-128EncryptionAlgRC4_128Legacy

비밀번호로 보호된 파일을 어떻게 열 수 있나요?

파일에 인증이 필요할 때 pdf.OpenWithPassword를 사용하십시오. 두 번째 인수로 사용자 비밀번호를 전달하면, 복호화가 성공하면 일반 *Document을 반환합니다:

doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

PDF에서 암호화를 어떻게 제거하나요?

올바른 비밀번호로 파일을 연 후 Document.RemoveEncryption를 호출하십시오. 결과를 저장하여 암호화되지 않은 사본을 작성합니다:

doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")

렌더링 및 텍스트

PDF 페이지를 이미지로 어떻게 렌더링하나요?

다음 장치 유형 중 하나를 사용하십시오: BmpDevice, PngDevice, JpegDevice, TiffDevice, 또는 GifDevice. Resolution 값을 사용해 장치를 생성하고, 해당 Render* 메서드를 io.Writer 및 RenderOptions과 함께 호출하십시오:

doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})

PDF에서 텍스트를 검색하려면 어떻게 해야 하나요?

쿼리 문자열과 SearchOptions을 사용하여 Document.SearchText을 호출하십시오. 결과는 TextMatch 값들의 슬라이스이며, 각 값은 일치한 텍스트, 해당 페이지 인덱스 및 경계 상자를 포함합니다.

doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
    fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}

폼을 평탄화하려면 어떻게 해야 하나요?

폼을 채우거나 검토한 후 Document.Flatten을 호출하십시오. 이 메서드는 모든 필드 값을 페이지 그래픽에 고정하고 인터랙티브 폼 필드를 제거합니다:

doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")

알려진 제한 사항

모든 PDF 기능이 지원되나요?

이 라이브러리는 가장 일반적인 문서 관리 작업을 지원합니다: 열기, 생성, 저장, 분할, 병합, 페이지 추출, 암호화, AcroForms, 테이블, 북마크, 주석, 이미지 렌더링, 텍스트 검색 및 폼 평탄화. 디지털 서명, 3D 콘텐츠 및 PDF/A 변환과 같은 고급 기능은 현재 릴리스에서 완전히 구현되지 않았을 수 있습니다. 현재 기능 상태는 저장소 README를 확인하십시오.

필드 타입 어설션이 일치하지 않을 경우 어떻게 되나요?

Field에 대한 타입 어설션이 실제 필드 타입과 일치하지 않으면 패닉이 발생합니다. 어설션하기 전에 타입을 확인하려면 pdf.FieldType(f)을(를) 사용하거나 타입 스위치를 사용하세요:

doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
    switch v := f.(type) {
    case *pdf.TextBoxField:
        fmt.Println("text:", v.Value())
    case *pdf.CheckboxField:
        fmt.Println("checked:", v.Checked())
    }
}

참조

 한국어