跳转至

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上限为127个UTF-8 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数据
metadata / set_metadata(dict) 8个标准Info字段(支持UTF-16BE);aggregate文本上限1 MiB,写入为原子操作
get_page_text(pno, option) "text" / "words" / "blocks" / "dict"
get_text(pages=None) 单次batch最多提取4,096页的plain text,共享一个interpreter font cache(None表示所有页)
to_markdown(pages=None, table_strategy="lines", max_size=64 MiB) 使用有界线性entry builder按页两pass转换Markdown;最多4,096页及累计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页及累计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后备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层、1 MiB文本)
get_page_labels() / set_page_labels(labels) 页码标签范围;固定上限为4,096个entry/node、32层、1 MiB标签文本
get_form_fields() / set_form_field(name, value, fontfile=, fontbuffer=, fontindex=, max_font_size=64 MiB) 有界地列出与填写AcroForm,caller名称/值限制为1 MiB,并限制原生widget外观和font input
embfile_add(..., max_size=64 MiB) / embfile_names / embfile_get(name, max_size=64 MiB) / embfile_del 对输入与解码输出采用对称默认上限,并限制1 MiB caller文本、添加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副本。dpi=None时不缩小,仅按quality重压缩。保守边界仅包含无mask或自定义 decode array的直接单filter 8-bit DeviceGray/DeviceRGB DCT/Flate stream。DCT decode parameter不受支持;Flate可无predictor或使用与字典一致的PNG predictor。已解释但 不支持的间接图像以及不会变小的编码会被跳过;inline图像不计入统计。单次调用解释 超过65,536个间接raster placement时会被拒绝。用相同设置重复调用是幂等的。

Page

成员 用途
number / parent / get_label() 标识与显示标签
get_text(option) / search_for(needle, max_hits=4096) 提取与有界的不区分大小写搜索;搜索词上限为4,096 UTF-8 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输出控制的单页Markdown
get_images() 已绘制图像(含bbox,JPEG直通 / PNG);超过4,096个placement、累计64,000,000像素或64 MiB payload时拒绝部分结果
get_drawings() 页面中已解释的矢量fill/stroke路径;显示坐标中的line/cubic几何与规范化绘制属性;超过8,192条路径、131,072条命令或页面累计131,072个虚线值时拒绝返回部分结果
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或shape subset文本;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) 预检文本与tab展开,并使用Core 14、OpenType或自动JP font宽度进行UAX #14换行;物理行与换行后layout上限为4,096行,溢出时不绘制
insert_ocr_text_layer(words, rotation=) 保留方向的OCR不可见文本层;每次call固定上限为4,096词和1 MiB UTF-8文本
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()返回DrawingInfo字典,其中包含type="f" / "s" / "fs"、 自包含的line/cubic itemsrect、RGB/opacity、fill rule、width、cap、join和 dashes。对于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。这是整段只选一个font,并非逐glyph fallback。简体中文排版应显式传入 Noto Sans SC等匹配本地字形的OpenType font;Hangul、其他script或其他书体同样如此。 每一行会被shape,但不提供双向段落layout或换行。RTL可正确渲染,但提取目前遵循 visual order。

insert_textbox并非富文本引擎;它保留显式换行、展开制表符、按Unicode机会换行CJK, 并对过长单词执行grapheme安全的紧急换行。对齐常量为TEXT_ALIGN_LEFTTEXT_ALIGN_CENTERTEXT_ALIGN_RIGHTTEXT_ALIGN_JUSTIFY。返回负值表示 垂直空间不足,此时不会添加页面内容或字体resource。

set_form_field会为文本、组合框/列表选择、复选框和单选按钮生成外观。WinAnsi文本 使用Helvetica自动缩小;传入OpenType fontfilefontbuffer即可对子集嵌入Unicode。 安装pylopdf[cjk]后,非WinAnsi值会尝试JP subset sans;中文本地字形或Hangul应传入 匹配font。已有且非空的按钮外观 会保留,仅为缺失状态生成矢量标记。其他WinAnsi字段缺失的外观也会同时补齐;仅当 所有可填写widget都自包含时才清除NeedAppearances。comb文本字段遵循继承的 MaxLen与对齐方式,将每个Unicode grapheme置于相应位置中央,并在不修改文档的 情况下拒绝超长值。富文本、pushbutton动作和签名不在生成范围内。

Table.confidence是0–1的确定性排序heuristic,并非经过校准的概率。 Table.diagnosticsTableDiagnostics tuple;对无边框文本表格,它包含以em归一化的 对齐误差、最小列间距和行间距变化。完整矢量网格得分为1.0,补全稀疏边框的 hybrid grid为0.95;两者的文本专用指标均为NoneTableFinder.strategyTableFinder.clip保留本次使用的设置。

模块级

名称 用途
peek_metadata(filename=None, stream=None, password=None, *, max_file_size=None) 可选输入大小限制及127-byte password上限的快速元数据与页数读取;repaired报告受限的classic startxref修复
Permissions 加密权限标志(IntFlag)
Rect width / height的矩形NamedTuple
TextPage / TextBlock / TextLine / TextSpan get_text("dict")的TypedDict层级
ImageInfo / ImageCompressionResult / AnnotationInfo / LinkInfo / FormFieldInfo / DrawingInfo 页面、文档操作、表单与矢量绘制结果的TypedDict契约
DrawingItem 表示line/cubic绘制命令的类型别名
PageLabelInfo / PageLabelSpec 规范化页码标签输出/setter输入契约
DocumentMetadata / MetadataUpdate / MetadataProbe 元数据输出/部分更新/快速探测契约
DocumentLimits / DocumentComplexity 包含PDF snapshot用max_interpretation_size和带位置layout用max_text_glyphs的不受信任输入不可变预算/轻量结构TypedDict
OcrEngine / OcrWord 可复用的纯Rust PP-OCR引擎与带位置结果契约
OcrRotation / WordEntry / BlockEntry / FormFieldType 可在runtime导入的OCR旋转、tuple和literal类型别名
TableFinder / Table / TableDiagnostics 自包含的表格几何、单元格文本(合并延续位置为None)、策略与置信依据;Table.to_markdown(max_size=64 MiB)预检转义后的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还支持只读、零复制的memoryview()
PylopdfWarning 可恢复的解释警告(xref修复、字体解析、图像解码)

TypedDict契约仅影响静态类型;运行时值仍是普通的pymupdf风格字典。 LinkInfo要求kindfrom,而各类目标专用键为可选。 PageLabelSpec要求startpagestyleprefixfirstpagenum的运行时默认值不变。