콘텐츠로 이동

API 개요

전체 docstring은 패키지 안에 있으며help(pylopdf.Document)로 볼 수 있습니다. 이 페이지는 API 지도입니다.get_toc / set_toc만 pymupdf 호환을 위해 1부터 시작하고 나머지 페이지 번호는 모두 0부터 시작합니다. 모든 좌표는 왼쪽 위가 원점인 표시 공간입니다. API 안정성 정책은 공개 경계와 사용 중단 절차를 정의합니다.

Document

pylopdf.Document(filename=None, stream=None, password=None, max_decompressed_size=None, *, limits=None)pylopdf.open()은 별칭 생성자이며 컨텍스트 관리자를 지원합니다. password input은UTF-8 127 byte로 제한됩니다.

멤버 용도
doc[i] / load_page(pno) / 반복 Page뷰(음수 지원, 구조 변경 후 다시 가져오기)
page_count / len(doc) 페이지 수
limits / complexity 열 때의 불변 리소스 정책 / stream 디코딩 없는 저비용 구조 지표
needs_pass / is_encrypted / authenticate(pw) 127-byte password 상한이 있는 암호화 상태와 잠금 해제(pymupdf 의미론)
is_repaired 열 때 마지막 classic startxref 오류를 복구했는지 여부. 저장하면 xref data를 정규화
metadata / set_metadata(dict) 표준Info 8개 필드(UTF-16BE 지원), aggregate text 1 MiB 및 원자적 쓰기
get_page_text(pno, option) "text" / "words" / "blocks" / "dict"
get_text(pages=None) 최대 4,096 page를 한 번의 batch로 추출하는 plain text. interpreter font cache를 공유(None이면 전체 page)
to_markdown(pages=None, table_strategy="lines", max_size=64 MiB) 상한이 있는 선형entry builder를 사용한page 단위2-pass Markdown 변환. 최대4,096 page 및 누적UTF-8 출력 상한(None으로 해제), 제목·CJK·강조·목록·단·세로쓰기 순서·표 제어
render_page(..., max_size=64 MiB) / render_pages(..., workers=, max_size=512 MiB) / render_page_svg(..., max_size=64 MiB) 상한이 있는PNG, 4,096 page 및 누적encoded output 상한이 있는 순서 보장 병렬PNG 묶음, 상한이 있는UTF-8 SVG(None으로 해제)
compress_images(dpi=150, quality=75) 실제 배치DPI에 따라 안전한DCT/Flate raster XObject를 손실 축소·JPEG 재압축하고 타입 지정byte/count 통계를 반환
set_fallback_font(font, kind=, index=, max_font_size=64 MiB) 임베드되지 않은 글꼴의 상한이 있는CJK fallback font. 신뢰 가능한font input은None으로 해제
select / delete_page(s) / insert_pdf / new_page / copy_page 페이지 관리. select/delete/insert batch는4,096 entry로 제한
get_toc() / set_toc(toc) cycle을 처리하는 제한된 목차(페이지는 1부터, 4,096 entry/node, 8,192 edge, 깊이64, text 1 MiB)
get_page_labels() / set_page_labels(labels) 페이지 레이블 범위. 고정 상한은4,096 entry/node, 깊이32, label text 1 MiB
get_form_fields() / set_form_field(name, value, fontfile=, fontbuffer=, fontindex=, max_font_size=64 MiB) caller 이름/값1 MiB와 field/button state/font input이 제한된AcroForm 목록과 입력 및 네이티브 widget appearance
embfile_add(..., max_size=64 MiB) / embfile_names / embfile_get(name, max_size=64 MiB) / embfile_del 입력과 디코딩 출력에 대칭 기본 상한을 적용하고 caller text1 MiB, 추가metadata 및inline FileSpec clone 형상도 제한하는 첨부 파일. max_size=None은 상한을 명시적으로 해제
get_pdfa_claim(max_size=1 MiB) 상한이 있는XMP PDF/A 선언 읽기. max_size=None으로 명시적 해제하며 검증은 아님
save(...) / tobytes(..., max_size=512 MiB) 같은directory의stream 쓰기를 완전히 마친 뒤 원자적으로file 교체/상한이 있는PDF byte. garbage= deflate= object_streams= 및127-byte 상한의user_pw=owner_pw=; max_size=None으로 해제
close() with로도 호출

compress_images()는 모든 페이지를 해석해 각 간접raster object의 가장 큰 배치 크기를 찾은 뒤 lopdf clone을 원자적으로 편집합니다. dpi=None이면 축소 없이quality 재압축만 수행합니다. 보수적 범위는mask나 사용자decode array가 없는 직접 단일filter 8-bit DeviceGray/DeviceRGB DCT/Flate stream입니다. DCT decode parameter는 제외하며, Flate는predictor가 없거나 사전과 일치하는PNG predictor를 사용할 수 있습니다. 해석된 미지원 간접 이미지와 더 작아지지 않는encoding은 건너뛰며 inline 이미지는 집계하지 않습니다. 한 번의 호출에서 해석하는 간접raster placement가65,536개를 초과하면 거부합니다. 같은 설정의 반복 호출은 멱등입니다.

Page

멤버 용도
number / parent / get_label() 식별 정보와 표시 레이블
get_text(option) / search_for(needle, max_hits=4096) 추출 및 상한이 있는 대소문자 구분 없는 검색. 검색어는UTF-8 4,096 byte, 신뢰 가능한 결과 집합은None으로 해제
get_text_ocr(dpi=, engine=, tile_size=, overlap=, min_confidence=, rotation=, clip=) 편집 없이 로컬PP-OCRv6로 위치가 있는 단어 인식, rotation은 입력을 시계 방향으로 보정하고 clip은 표시 좌표
apply_ocr(..., rotation=, clip=, skip_existing=True) 방향을 유지한 보이지 않는 검색 가능 레이어 삽입, 선택 영역의 기존 텍스트는 기본적으로 건너뜀
find_tables(strategy="lines", clip=None) 완전하거나 보수적으로 보완한 희소 벡터 테두리와 병합 셀. "text"로 테두리 없는 표를 감지하고 clip으로 표시 좌표 영역 지정
to_markdown(table_strategy="lines", max_size=64 MiB) 같은 표 및UTF-8 출력 제어를 사용하는 단일page Markdown
get_images() 그려진 이미지(bbox, JPEG passthrough / PNG). 4,096 placement, 누적64,000,000픽셀, payload 64 MiB를 넘는 부분 결과는 거부
get_drawings() 페이지에서 해석된 벡터fill/stroke 경로. 표시 좌표의line/cubic 도형과 정규화된 그리기 속성. 페이지당 8,192개 경로, 131,072개 명령 또는 누적 131,072개 dash 값을 넘으면 부분 결과 없이 거부
get_pixmap(scale=, dpi=, background=, clip=) / render(max_size=64 MiB) / render_svg(max_size=64 MiB) 상한이 있는PNG / UTF-8 SVG 렌더링. clip은 표시 좌표 사용
rotation / set_rotation(deg) 표시 회전
mediabox / cropbox / rect / set_mediabox / set_cropbox 페이지 박스
insert_image(rect, filename= / stream= / pixmap=, rotate=, keep_proportion=, overlay=, max_size=64 MiB, max_pixels=64,000,000) 상한이 있는JPEG/PNG를 그리거나 이미 제한된RGBA Pixmap 재사용. 신뢰 가능한encoded input/PNG 픽셀은None으로 해제. rotate는90도 단위 시계 방향 회전
show_pdf_page(rect, src, pno=, keep_proportion=, overlay=) PDF 페이지를 벡터로 겹치기; src는 같은 문서여도 됨
insert_text(point, text, fontsize=, fontname=, fontfile=, fontbuffer=, fontindex=, color=, overlay=, max_font_size=64 MiB, max_text_size=1 MiB) UTF-8과4,096줄 상한이 있는Standard-14 또는 shaping subset text. pylopdf[cjk]는JP font 자동 선택. 해당 신뢰 가능한input은None으로 해제
insert_textbox(rect, text, fontsize=, fontname=, fontfile=, fontbuffer=, fontindex=, color=, align=, expandtabs=, lineheight=, overlay=, max_font_size=64 MiB, max_text_size=1 MiB) text와tab 확장을 미리 검사하고 Core 14, OpenType 또는 자동JP font 폭으로UAX #14 줄바꿈. 물리줄과 줄바꿈 후layout은4,096줄이 상한이며 넘치면 그리지 않음
insert_ocr_text_layer(words, rotation=) 방향을 유지한 OCR 비가시 텍스트 레이어. call당4,096단어와UTF-8 text 1 MiB로 제한
replace_text(search, replacement, default_char=, max_size=64 MiB) 입출력 제한과 copy-on-write를 갖춘 원자적 단순 인코딩 교체
annots() / get_links() / add_highlight_annot(...) / add_link_annot(rect, uri) 제한된 주석/link 읽기와 생성. 렌더링 시 유효한QuadPoints를 가진 상한 내 RGB Highlight, Underline, StrikeOut, Squiggly의 누락 appearance를 원본 PDF 변경 없이 보수적으로 보완

get_drawings()type="f" / "s" / "fs", 자체 완결형line/cubic items, rect, RGB/opacity, fill rule, width, cap, join, dashes를 포함한DrawingInfo 딕셔너리를 반환합니다. pattern paint는 도형을 유지하고 색상과opacity는None으로 둡니다. clip path, clip 적용 후 가시성 판단, group/soft-mask 구조, optional-content layer 이름, text, image, annotation은 반환하지 않지만 optional-content 표시 상태는 적용합니다. 결과가8,192 paths 또는131,072 commands를 넘으면 잘라내지 않고 거부합니다.

내장 글꼴을 사용하는 insert_text에는 필요한 모든 글리프를 포함한 단일 글꼴이 필요합니다. source를 생략하고 pylopdf[cjk]를 설치하면 일본어/한자에 JP subset Noto Sans를, Times fontname에는 Noto Serif를 자동 선택합니다. 이는 run 전체에서 font 하나를 고르는 것이며 glyph별 fallback이 아닙니다. 이 JP subset에는 Hangul이 없으므로 한국어에는 Noto Sans KR 같은 OpenType font를 명시해야 합니다. 다른 script나 서체도 마찬가지입니다. 각 줄은 shaping하지만 양방향 문단 layout과 줄바꿈은 제공하지 않습니다. RTL은 올바르게 렌더링되지만 추출은 현재 visual order입니다.

insert_textbox는 리치 텍스트 엔진이 아니라 명시적 줄바꿈, tab 확장, CJK의 Unicode 줄바꿈 기회, 너무 긴 단어의 grapheme 안전 긴급 줄바꿈을 처리합니다. 정렬 상수는 TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_JUSTIFY입니다. 반환값이 음수이면 세로 공간이 부족하며 페이지 내용이나 글꼴 resource를 추가하지 않습니다.

set_form_field는 텍스트, 콤보/목록 선택, checkbox, radio widget의 appearance를 생성합니다. WinAnsi는 Helvetica로 자동 축소하며, Unicode는 OpenType fontfile 또는 fontbuffer를 지정해 서브셋 내장합니다. pylopdf[cjk]가 설치되어 있으면 WinAnsi 밖의 값에 JP subset sans를 시도합니다. Hangul에는 Noto Sans KR 같은 font를 명시해야 합니다. 비어 있지 않은 기존 버튼 appearance는 보존하고 누락된 상태만 벡터로 만듭니다. 다른 WinAnsi 필드의 누락된 appearance도 함께 채우며, 입력 가능한 모든 widget이 자체 완결일 때만 NeedAppearances를 해제합니다. comb 텍스트 필드는 상속된 MaxLen과 정렬을 따르고 각 Unicode grapheme을 해당 위치 중앙에 배치하며, 너무 긴 값은 문서를 변경하지 않고 거부합니다. rich text, pushbutton action, 서명은 생성하지 않습니다.

Table.confidence는 0–1의 결정적 순위 지정 heuristic이며 보정된 확률이 아닙니다. Table.diagnosticsTableDiagnostics tuple입니다. 테두리 없는 텍스트 표에서는 em으로 정규화한 정렬 오차, 최소 gutter, 행 간격 변화를 보존합니다. 완전한 벡터 grid는 1.0, 희소 규칙을 보완한 hybrid grid는 0.95이며 두 경우 모두 텍스트 전용 metric은 None입니다. TableFinder.strategyTableFinder.clip에는 사용한 설정이 남습니다.

모듈 수준

이름 용도
peek_metadata(filename=None, stream=None, password=None, *, max_file_size=None) 입력 크기를 선택적으로 제한하고password를127 byte로 제한하는 빠른 메타데이터·페이지 수 조회. repaired는 제한된 classic startxref 복구를 표시
Permissions 암호화 권한 플래그(IntFlag)
Rect width / height가 있는 사각형 NamedTuple
TextPage / TextBlock / TextLine / TextSpan get_text("dict") TypedDict 계층
ImageInfo / ImageCompressionResult / AnnotationInfo / LinkInfo / FormFieldInfo / DrawingInfo page, document 작업, form, vector drawing의 사전 형식 결과를 위한 TypedDict 계약
DrawingItem line/cubic 그리기 명령을 나타내는 타입 별칭
PageLabelInfo / PageLabelSpec 정규화된 페이지 레이블 출력/setter 입력 계약
DocumentMetadata / MetadataUpdate / MetadataProbe metadata 출력/부분 업데이트/빠른 probe 계약
DocumentLimits / DocumentComplexity PDF snapshot용max_interpretation_size와 위치layout용max_text_glyphs를 포함한 신뢰할 수 없는 입력의 불변 예산/저비용 구조TypedDict
OcrEngine / OcrWord 재사용 가능한 순수Rust PP-OCR 엔진과 위치 결과 계약
OcrRotation / WordEntry / BlockEntry / FormFieldType runtime에서 import 가능한 OCR 회전·tuple·literal 형식 별칭
TableFinder / Table / TableDiagnostics 독립 보관되는 표 좌표, 셀 텍스트(병합 연속 위치는None), strategy와 confidence 근거. Table.to_markdown(max_size=64 MiB)은 escape 후UTF-8 출력을 사전 검사
PdfError / LimitError / PasswordError / OcrError / DocumentClosedError / EncryptedDocumentError / StalePageError 예외 계층. 리소스 거부는 안정적인.code 제공(ValueError 호환 기반)
Pixmap 불변 RGBA8 픽셀: samples / width / height / stride / n / tobytes(max_size=64 MiB) / 스트리밍하며 실패 시 기존file을 보존하는PNG 전용save(path); cp314t에서는 읽기 전용 zero-copy memoryview()도 지원
PylopdfWarning 복구 가능한 해석 경고(xref 복구, 글꼴 해석, 이미지 디코딩)

TypedDict 계약은 정적 타입에만 영향을 주며 값은 기존과 같은 일반 pymupdf 형식의 사전입니다. LinkInfo에는 kindfrom이 필수이고 대상별 키는 선택 사항입니다. PageLabelSpec에는 startpage가 필요하며 style, prefix, firstpagenum의 runtime 기본값은 바뀌지 않습니다.