系列文章:
Python PDF神器PyMuPDF使用指南 (一)——安装和基础功能
Python PDF神器PyMuPDF使用指南 (二)——文件和文本功能
Python PDF神器PyMuPDF使用指南 (三)——图像和注释功能
Python PDF神器PyMuPDF使用指南 (四)——绘图、多线程和OCR功能
Python PDF神器PyMuPDF使用指南 (五)——命令行使用
Python PDF神器PyMuPDF使用指南 (六)——Document类详解
Python PDF神器PyMuPDF使用指南 (七)——Page类详解
Python PDF神器PyMuPDF使用指南 (八)——基础使用指南
正文:
PyMuPDF是一个高性能的Python库,用于PDF(和其他)文档的数据提取、分析、转换和操作。
Github地址为:pymupdf代码库
官方文档地址为:PyMuPDF文档
前面几篇文章详细介绍了PyMuPDF的主要功能,本文将继续介绍PyMuPDF的API参考使用方式。PyMuPDF的API有好几类,目前的方法包括命令行和Python库调用。从本文开始会介绍命令行和Python库调用的详细方法。本文主要介绍命令行功能的详情。
命令行基本功能
版本 1.16.8 新增功能
PyMuPDF 现在可以通过命令行执行各种实用功能,这减少了编写基本脚本的需求。
虽然该功能在某些方面与 MuPDF 的 CLI 工具 mutool
有所重叠,但 PyMuPDF 提供了一些 MuPDF 不再支持的独特功能,例如 PDF 内嵌文件的操作。
调用方式
命令行界面可以通过以下两种方式调用:
1. 使用已安装的 pymupdf
命令:
pymupdf <命令和参数>
2. 使用 Python 的 -m
选项运行 PyMuPDF 的 fitz
模块:
python -m fitz <命令和参数>
一般说明:
- 通过
-h
获取帮助信息,或者使用命令 -h
查看特定命令的帮助。 - 参数可缩写,但不能引起歧义。
- 多个命令支持
-pages
和-xrefs
参数,用于筛选页面或对象:- 页面编号从 1 开始(即 1-based)。
- 有效的 xref 编号从 1 开始。
- 请指定一个以逗号分隔的列表,其中可以包含单个整数或整数范围。整数范围由一对用连字符“-”分隔的整数表示。整数不能超过最大页码或最大 xref(交叉引用)编号。要指定最大值,可以使用符号变量“N”。整数或范围可以多次出现,顺序不限,也可以重叠。如果范围内的第一个数字大于第二个数字,则相应的项目将按照相反的顺序处理。
在脚本中使用该模块:
import pymupdf.__main__
import sys
cmd = "clean input.pdf output.pdf -pages 1,N".split() # 准备命令行参数
saved_parms = sys.argv[1:] # 保存原始命令行参数
sys.argv[1:] = cmd # 赋值新命令行参数
pymupdf.__main__.main() # 执行 PyMuPDF 命令
sys.argv[1:] = saved_parms # 还原原始命令行参数
或者,使用以下 2 行代码并使用 Nuitka 编译为独立模式的可执行文件,即可创建一个无需安装 Python、PyMuPDF 或 MuPDF 依赖的 CLI 工具:
from pymupdf.__main__ import main
main()
PDF 清理和复制
该命令优化 PDF 并将结果存储为新文件,可用于加密、解密或提取子文档。其功能类似于 mutool clean
:
pymupdf clean -h
usage: fitz clean [-h] [-password PASSWORD]
[-encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256}]
[-owner OWNER] [-user USER] [-garbage {0,1,2,3,4}]
[-compress] [-ascii] [-linear] [-permission PERMISSION]
[-sanitize] [-pretty]