API 参考文档
命令行界面
- 版本 1.16.8 中的新功能
PyMuPDF 也可以从命令行使用以执行实用功能。此功能应使一些最基本的脚本编写过时。
不可否认,MuPDF CLI mutool
存在一些功能重叠。另一方面,MuPDF 不再支持 PDF 嵌入文件,因此 PyMuPDF 在这里提供了一些独特的东西。
调用
命令行界面可以通过两种方式调用。
- 使用已安装的
pymupdf
命令:
pymupdf <command and parameters>
- 或者使用 Python 的
-m
开关和 PyMuPDF 的fitz
模块:
python -m fitz <command and parameters>
一般备注:
- 通过
"-h"
请求帮助,或通过"command -h"
请求特定命令的帮助。 - 在不引入歧义的情况下可以缩写参数。
- 几个命令支持参数
-pages
和-xrefs
。它们用于向下选择。请注意:
- 此实用程序的 页码 必须是 基于 1 的。
- 有效的
xref
编号从 1 开始。- 指定逗号分隔的 单个 整数或整数 范围 的列表。范围 是由一个连字符“-”分隔的整数对。整数不能超过最大页数或
xref
编号。为了指定最大值,可以使用符号变量“N”。整数或范围可以多次出现,顺序任意且可以重叠。如果范围中的第一个数字大于第二个数字,则将以相反顺序处理相应项目。
- 如何在您的脚本中使用该模块:
>>> import pymupdf.__main__ >>> cmd = "clean input.pdf output.pdf -pages 1,N".split() # prepare command line >>> saved_parms = sys.argv[1:] # save original command line >>> sys.argv[1:] = cmd # store new command line >>> pymupdf.__main__.() # execute module >>> sys.argv[1:] = saved_parms # restore original command line
from pymupdf.__main__ import main main()
清理和复制
此命令将优化 PDF 并将结果存储在新文件中。您还可以将其用于加密、解密和创建子文档。它与 MuPDF 命令行实用程序 “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] [-pages PAGES] input output -------------- optimize PDF or create sub-PDF if pages given -------------- positional arguments: input PDF filename output output PDF filename optional arguments: -h, --help show this help message and exit -password PASSWORD password -encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256} encryption method -owner OWNER owner password -user USER user password -garbage {0,1,2,3,4} garbage collection level -compress compress (deflate) output -ascii ASCII encode binary data -linear format for fast web display -permission PERMISSION integer with permission levels -sanitize sanitize / clean contents -pretty prettify PDF structure -pages PAGES output selected pages, format: 1,5-7,50-N
如果指定了“-pages”,请注意只复制与页面相关的对象,不包括文档级项目,例如嵌入的文件等。
有关参数含义,请参阅Document.save()
。
提取字体和图像
从所选 PDF 页面中提取字体或图像到指定目录:
pymupdf extract -h usage: fitz extract [-h] [-images] [-fonts] [-output OUTPUT] [-password PASSWORD] [-pages PAGES] input --------------------- extract images and fonts to disk -------------------- positional arguments: input PDF filename optional arguments: -h, --help show this help message and exit -images extract images -fonts extract fonts -output OUTPUT output directory, defaults to current -password PASSWORD password -pages PAGES only consider these pages, format: 1,5-7,50-N
图像文件名根据命名方案构建:“img-xref.ext”,其中“ext”是与图像关联的扩展名,xref
是图像 PDF 对象的xref
。
字体文件名由字体名称和相关扩展名组成。字体名称中的任何空格都将替换为连字符“-”。
输出目录必须已经存在。
注意
除了输出目录创建之外,此功能在功能上等同于并且已过时 此脚本。
连接 PDF 文档
要连接几个 PDF 文件,请指定:
pymupdf join -h usage: fitz join [-h] -output OUTPUT [input [input ...]] ---------------------------- join PDF documents --------------------------- positional arguments: input input filenames optional arguments: -h, --help show this help message and exit -output OUTPUT output filename specify each input as 'filename[,password[,pages]]'
注意
- 每个输入必须输入为**“文件名,密码,页面”**。密码和页面是可选的。
- 如果使用“pages”条目,则需要密码输入。如果 PDF 不需要密码,请指定两个逗号。
- **“页面”**格式与本节顶部解释的相同。
- 每个输入文件在使用后立即关闭。因此,您可以使用其中一个作为输出文件名,从而覆盖它。
示例:要连接以下文件
- file1.pdf: 所有页面,从后往前,无密码
- file2.pdf: 最后一页,第一页,密码:“secret”
- file3.pdf: 从第 5 页到最后一页,无密码
并将结果存储为output.pdf,输入此命令:
pymupdf join -o output.pdf file1.pdf,N-1 file2.pdf,secret,N,1 file3.pdf,5-N
低级信息
显示 PDF 内部信息。同样,与*“mutool show”*有相似之处:
pymupdf show -h usage: fitz show [-h] [-password PASSWORD] [-catalog] [-trailer] [-metadata] [-xrefs XREFS] [-pages PAGES] input ------------------------- display PDF information ------------------------- positional arguments: input PDF filename optional arguments: -h, --help show this help message and exit -password PASSWORD password -catalog show PDF catalog -trailer show PDF trailer -metadata show PDF metadata -xrefs XREFS show selected objects, format: 1,5-7,N -pages PAGES show selected pages, format: 1,5-7,50-N
示例:
pymupdf show x.pdf PDF is password protected pymupdf show x.pdf -pass hugo authentication unsuccessful pymupdf show x.pdf -pass jorjmckie authenticated as owner file 'x.pdf', pages: 1, objects: 19, 58 MB, PDF 1.4, encryption: Standard V5 R6 256-bit AES Document contains 15 embedded files. pymupdf show FDA-1572_508_R6_FINAL.pdf -tr -m 'FDA-1572_508_R6_FINAL.pdf', pages: 2, objects: 1645, 1.4 MB, PDF 1.6, encryption: Standard V4 R4 128-bit AES document contains 740 root form fields and is signed ------------------------------- PDF metadata ------------------------------ format: PDF 1.6 title: FORM FDA 1572 author: PSC Publishing Services subject: Statement of Investigator keywords: None creator: PScript5.dll Version 5.2.2 producer: Acrobat Distiller 9.0.0 (Windows) creationDate: D:20130522104413-04'00' modDate: D:20190718154905-07'00' encryption: Standard V4 R4 128-bit AES ------------------------------- PDF trailer ------------------------------- << /DecodeParms << /Columns 5 /Predictor 12 >> /Encrypt 1389 0 R /Filter /FlateDecode /ID [ <9252E9E39183F2A0B0C51BE557B8A8FC> <85227BE9B84B724E8F678E1529BA8351> ] /Index [ 1388 258 ] /Info 1387 0 R /Length 253 /Prev 1510559 /Root 1390 0 R /Size 1646 /Type /XRef /W [ 1 3 1 ] >>
嵌入文件命令
以下命令处理嵌入文件 - 这是 MuPDF 在 v1.14 之后完全删除的功能,因此从所有其命令行工具中删除。
信息
显示嵌入文件名(长格式或短格式):
pymupdf embed-info -h usage: fitz embed-info [-h] [-name NAME] [-detail] [-password PASSWORD] input --------------------------- list embedded files --------------------------- positional arguments: input PDF filename optional arguments: -h, --help show this help message and exit -name NAME if given, report only this one -detail show detail information -password PASSWORD password
示例:
pymupdf embed-info some.pdf 'some.pdf' contains the following 15 embedded files. 20110813_180956_0002.jpg 20110813_181009_0003.jpg 20110813_181012_0004.jpg 20110813_181131_0005.jpg 20110813_181144_0006.jpg 20110813_181306_0007.jpg 20110813_181307_0008.jpg 20110813_181314_0009.jpg 20110813_181315_0010.jpg 20110813_181324_0011.jpg 20110813_181339_0012.jpg 20110813_181913_0013.jpg insta-20110813_180944_0001.jpg markiert-20110813_180944_0001.jpg neue.datei
每个条目的详细输出如下所示:
name: neue.datei filename: text-tester.pdf ufilename: text-tester.pdf desc: nur zum Testen! size: 4639 length: 1566
PyMuPDF 1.24.4 中文文档(六)(2)https://developer.aliyun.com/article/1559576