Aspose.PDF FOSS for Python 기능
Aspose.PDF Python용 FOSS 기능
Aspose.PDF FOSS for Python은 순수-Python 라이브러리로, PDF 문서를 생성, 열기, 수정 및 저장할 수 있습니다. 이 페이지에서는 주요 기능 영역과 해당 영역의 진입점 역할을 하는 클래스들을 살펴봅니다. 각 영역은 별도의 개발자 가이드 페이지에서 자세히 다룹니다.
문서 및 페이지 관리
Document은 모든 작업의 루트 객체입니다. 인자를 전달하지 않고 생성하여 새 빈 문서를 시작하거나, load_from()을 호출하여 경로, 바이트 또는 스트림에서 기존 문서를 읽습니다. document.pages는 가변적인 PageCollection을 노출하고, Page.add_text는 페이지에 위치 지정된 텍스트를 배치합니다.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")텍스트 추출 및 검색
PdfExtractor은 문서에 바인딩되어 페이지별로 텍스트를 추출합니다. bind_pdf()은 소스를 열고, extract_text()는 추출을 수행하며, get_text()은 누적된 결과를 반환합니다.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()위치 지정된 개별 프래그먼트 검색 및 교체를 위해, TextFragmentAbsorber은 매치된 TextFragment 객체를 노출하고, text_search_options는 대소문자 구분 및 정규식 매칭을 제어합니다.
페이지 렌더링을 이미지로 변환
Document.save_page_as_image은(는) 단일 페이지를 구성 가능한 DPI로 PNG 또는 TIFF 파일에 직접 렌더링합니다. 더 낮은 수준의 접근을 위해, Page.render은(는) get_pixel() 및 pixels를 통해 원시 픽셀 데이터를 포함하는 RasterizedPage를 반환합니다.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)폼 및 인터랙티브 필드
AcroForm 필드는 Document.form을(를) 통해 관리되며, 이는 Form 파사드입니다. Form.add_text_field()(및 체크박스, 라디오, 리스트, 콤보 박스에 해당하는 것)는 페이지와 위젯 사각형에 연결된 새 필드를 생성하고 Field을(를) 반환합니다. Form.fields은(는) 현재 문서에 존재하는 모든 필드를 나열합니다.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")보안, 암호화 및 서명
Document.encrypt은(는) 사용자 비밀번호(문서를 열 때 필요)와 소유자 비밀번호(권한을 변경할 때 필요)로 문서를 보호합니다; decrypt()와 change_passwords()는 이미 열린 문서에 대한 보호를 관리합니다. is_encrypted은(는) 현재 상태를 보고합니다.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")디지털 서명 검증은 PdfSignature.validate이(가) 처리하며, 신뢰 및 폐기 상태를 설명하는 ValidationResult을(를) 반환하고, SigningUtils는 인증서와 PKCS#7/CAdES 서명 도우미를 제공합니다.
PDF/A 및 PDF/UA 규정 준수
Document.validate_pdfa은(는) 휴리스틱 PDF/A 준수 검사를 실행하고 PdfAValidationResult을(를) 반환합니다; convert_to_pdfa()은(는) 해당 수준으로 문서를 복구하려 시도합니다. validate_pdfua()와 auto_tag()는 PDF/UA에 대한 동등한 접근성 검사 및 자동 구조 트리 태깅을 제공합니다.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")팁 및 모범 사례
document.pages,page.annotations, 또는document.form가 직접 반환하는 객체를 수정하십시오 — 페이지나 필드의 별도 복사본에 대한 편집은save()을(를) 호출할 때 반영되지 않습니다.PageCollection은(는) 이 Python 바인딩에서 0부터 시작합니다 (document.pages[0]이(가) 첫 번째 페이지입니다).- 신뢰할 수 없는 입력에 대해
load_from()을(를) 호출할 때, 보다 광범위한AsposePdfException보다 먼저InvalidPasswordException과PdfParseException을(를) 포착하여, 잘못된 비밀번호와 손상된 파일에 다르게 대응할 수 있습니다. - 많이 편집된 문서에서 사용되지 않는 리소스를 제거하고 파일 크기를 줄이기 위해
save()전에document.optimize()또는compress_streams()을(를) 호출하십시오. - 신뢰할 수 없는 출처의 PDF를 처리할 때
load_from()에 제한된PdfLoadLimits을(를) 전달하여 파싱 중 메모리와 객체 수를 제한하십시오.
일반적인 문제
| 문제 | 원인 | 해결 |
|---|---|---|
save()은(는) 편집 내용이 변경되지 않은 파일을 생성합니다 | 편집이 document.pages, annotations, form에서 가져온 객체가 아니라 페이지, 주석 또는 필드 복사본에 적용되었습니다 | 해당 컬렉션이 직접 반환하는 객체를 수정하십시오 |
InvalidPasswordException on load_from() | 문서가 비밀번호로 보호되어 있으며 비밀번호가 제공되지 않았거나 잘못된 비밀번호가 제공되었습니다 | 올바른 비밀번호를 입력하십시오: document.load_from(path, password="...") |
validate_pdfa()는 convert_to_pdfa() 이후에도 여전히 글꼴 오류를 보고합니다 | 제공된 font_lookup_directory에서 일치하는 글꼴 파일을 찾을 수 없습니다 | 누락된 글꼴을 조회 디렉터리에 추가하거나 변환하기 전에 FontRepository에 등록하십시오 |
| 렌더링된 이미지가 비어 있는 것처럼 보입니다 | save_page_as_image() 또는 render()에 잘못된 페이지 인덱스가 전달되었습니다 | pages은 0부터 시작하는 인덱스입니다 — 인덱스를 확인하고 PdfExtractor이 해당 페이지에 대해 텍스트를 반환하는지 여부도 확인하십시오 |
Form.add_text_field()으로 추가된 필드가 페이지에 표시되지 않습니다 | 위젯 사각형이 페이지의 media_box 밖에 있습니다 | 사각형 좌표가 Page.media_box 안에 있는지 확인하십시오. |
FAQ
Aspose.PDF Python용 FOSS는 상용 PDF 엔진에 의존합니까?
아니요. 이것은 MIT 라이선스로 배포되는 처음부터 만든 순수-Python PDF 엔진입니다. 런타임 종속성은 암호화와 서명 검증에 사용되는 cryptography와 asn1crypto뿐입니다.
기존 PDF를 열지 않고 처음부터 PDF를 만들 수 있나요?
예. 인수가 없는 Document()는 빈 메모리 문서를 생성합니다; 저장하기 전에 페이지를 추가하려면 document.pages.add()을 호출하십시오.
어떤 래스터 형식으로 페이지를 렌더링할 수 있나요?
Page.render와 Document.save_page_as_image은 PNG 또는 TIFF 래스터 출력을 생성합니다; 반환된 RasterizedPage는 get_pixel()와 pixels 속성을 통해 원시 픽셀 데이터도 제공합니다.
패키지 전용 오류에 대해 어떤 예외를 잡아야 하나요?
Catch AsposePdfException. 패키지별 모든 오류는 — 구문 분석(PdfParseException), 비밀번호 및 암호화(PdfSecurityException, InvalidPasswordException), 그리고 검증(PdfValidationException) 실패를 포함해 — 모두 이것에서 파생됩니다.
다음에는 어디로 가야 하나요?
시작하기에서는 설치, 라이선스 및 첫 번째 작업 예제를 다룹니다. 이 개발자 가이드는 양식, 내장 파일 첨부, 글꼴 탐색, 그리고 개요/북마크 작성과 같은 문서 관리 주제로 이어집니다.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
Document | 루트 객체 — PDF를 생성, 로드, 저장 및 관리합니다 |
Document.pages | 문서의 가변 PageCollection |
Document.load_from / Document.save | 경로, 바이트 또는 스트림에서 읽거나 쓰기 |
Document.encrypt / Document.decrypt | 비밀번호로 보호하거나 보호를 해제 |
Document.validate_pdfa / Document.convert_to_pdfa | 휴리스틱 PDF/A 준수 검사 및 변환 |
Document.validate_pdfua() / Document.auto_tag | PDF/UA 접근성 검사 및 구조 자동 태깅 |
Page.add_text | 페이지에 배치된 텍스트 추가 |
Page.render | 페이지를 RasterizedPage에 렌더링 |
PdfExtractor | 페이지 텍스트와 삽입된 첨부 파일 추출 |
PdfFileEditor | 파일 간 페이지를 연결, 분할, 삽입 및 삭제 |
Form / Field | AcroForm 컨테이너 및 개별 폼 필드 |
PdfSignature / SigningUtils | 디지털 서명 검증 및 생성 |
AsposePdfException | 패키지별 예외에 대한 기본 클래스 |