소개
Aspose.PDF FOSS for Python은 aspose_pdf.generated 하위 패키지를 포함하고 네 개의 모듈: document.py, forms.py, pdfa.py, security.py을(를) 제공합니다. 이들 중 어느 것도 최상위 aspose_pdf 패키지에서 재내보내지 않으므로, 이 가이드에 등장하는 모든 클래스는 전체 점 표기 경로인 from aspose_pdf.generated.document import Document으로 가져오며, from aspose_pdf import Document이 아닙니다.
네 개의 모듈은 두 가지 접근 방식을 취합니다. generated.document, generated.forms, generated.pdfa 각각은 자체 클래스를 정의합니다: 메인 패키지의 Document, UnsignedContent/UnsignedContentAbsorber, PdfAValidateOptions/PdfAValidationResult 구조를 그대로 반영한 독립적인 구현—이런 반영된 네임스페이스 레이아웃에 맞춰 작성된 코드에 유용하지만, 별개의 실제 클래스 집합이며 별칭이 아닙니다. 반면 generated.security은 전혀 재구현하지 않고 CompromiseCheckResult, SignaturesCompromiseDetector 및 검증 열거형을 aspose_pdf.security와 aspose_pdf.validation에서 직접 가져와 재내보내므로 두 가져오기 경로가 동일한 클래스 객체를 가리키게 됩니다.
이 가이드는 네 모듈 모두를 다루며, generated 클래스가 동일한 이름의 메인 패키지 대응 클래스와 다르게 동작하는 위치를 명확히 설명합니다 — Document과 UnsignedContentAbsorber는 각각 두 곳에 존재하며 두 가지 다른 구현을 가지고 있는데, 이는 이름만으로 가져올 때 쉽게 실수하기 쉬운 경우입니다.
Aspose.PDF FOSS for Python은 Python 패키지인 aspose-pdf-foss-for-python이며, MIT 라이선스로 배포되고 Python 3.11 이상이 필요합니다. 최상위 모듈 이름은 aspose_pdf입니다; 설치 방법은 아래 빠른 시작 섹션을 참고하세요. 핵심 패키지는 cryptography와 asn1crypto에만 의존하고, 선택적 추가 기능으로 Pillow 기반 이미지 디코딩, Brotli 기반 WOFF2 폰트 지원, 그리고 HarfBuzz 기반 복합 텍스트 레이아웃을 제공합니다.
주요 기능
두 번째 문서 구현
aspose_pdf.generated.document.Document은(는) 메인 aspose_pdf.Document와 동일한 핵심 라이프사이클을 구현합니다 — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), 그리고 validate()/check() — 동일한 aspose_pdf.engine.simple_pdf.SimplePdf 엔진 위에서 동작합니다. 이는 메인 Document의 일부를 반영합니다: pages.add() 스타일 페이지 저작이 없으며, form/outlines/attachments도 없고, render_page()도 없습니다. 클래스 이름이 메인 패키지의 Document와 충돌하므로, 두 개를 동일 모듈에서 사용할 경우 별칭으로 임포트하십시오.
from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument
with Document() as document:
document.pages.add()
document.save("source.pdf")
compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)
compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()
서명되지 않은 콘텐츠 패키징
aspose_pdf.generated.forms.UnsignedContentAbsorber와 UnsignedContent은 서명되지 않은 폼 필드, 페이지 및 주석을 위한 컨테이너를 제공합니다. 이는 실제 Document을 받아서 그 form_fields/annotations를 is_signed/signed 속성이 falsy인 항목으로 필터링하는 최상위 aspose_pdf.UnsignedContentAbsorber(document)와 다릅니다. generated.forms 버전은 문서를 전혀 받지 않으며 — extract()는 키워드 인수로 전달한 pages, form_fields, annotations를 그대로 UnsignedContent 인스턴스로 패키징합니다. 이는 서명되지 않은 항목이 이미 다른 곳에서 수집되어 공유 컨테이너와 그 add_page()/remove_page() 스타일 변형자만 필요할 때 유용합니다.
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
content = absorber.extract(
form_fields=["signature_field", "initials_field"],
annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)
content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())
PDF/A 검증 옵션 및 결과
aspose_pdf.generated.pdfa.PdfAValidateOptions은 검증 설정과 입력 소스를 수집하고; PdfAValidationResult은 결과를 수집합니다. PdfAValidateOptions.add_input()는 Path.exists()을 사용해 문자열 경로를 확인한 뒤 받아들이며, 파일이 없을 경우 PdfIOException를 발생시킵니다. 따라서 호출자는 검증 시점이 아니라 즉시 잘못된 입력 경로를 알게 됩니다.
from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
document.pages.add()
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)
try:
options.add_input("missing.pdf")
except PdfIOException as error:
print(f"rejected: {error}")
result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())
재내보낸 보안 및 검증 타입
aspose_pdf.generated.security은 CompromiseCheckResult과 SignaturesCompromiseDetector를 aspose_pdf.security에서 직접 임포트하고, CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult, ValidationStatus을 aspose_pdf.validation에서 임포트합니다. Document 및 UnsignedContentAbsorber와 달리 여기서는 독립적인 재구현이 없으며 — 두 임포트 경로 모두 동일한 객체를 반환합니다.
from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector
assert SignaturesCompromiseDetector is CanonicalDetector
detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)
빠른 시작
패키지를 설치한 다음, 메인 Document으로 문서를 빌드하고 저장한 뒤, generated.pdfa 옵션과 결과 객체를 통해 실행합니다.
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
page = document.pages.add()
page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
result = PdfAValidationResult()
if not options.inputs:
result.add_error("No inputs registered")
print(result.to_dict())
지원되는 형식
| 형식 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| 예 | 예 |
PDF 읽기 및 쓰기는 Python의 핵심 기능에 대해 Aspose.PDF FOSS입니다. 이 가이드의 모든 클래스 — 메인 Document, generated.document.Document 미러, 그리고 PDF/A 헬퍼 — 은 공유 SimplePdf 엔진을 통해 PDF 입력과 출력을 처리합니다; aspose_pdf.generated은(는) 가져오는 클래스가 달라지는 것이지, 처리되는 파일 형식이 바뀌는 것은 아닙니다.
오픈 소스 및 라이선스
Aspose.PDF FOSS for Python은 MIT 라이선스로 출시되었습니다: 사용 제한이 없고, 런타임 비용이 없으며, 상업적이든 개인적이든 사용을 위한 등록 요구사항이 없습니다. 소스 코드는 github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python에 호스팅되며, 패키지는 PyPI에 aspose-pdf-foss-for-python으로 게시됩니다.