它用来干什么的?
MuPDF可以访问PDF,XPS,OpenXPS,CBZ(漫画书档案),FB2和EPUB(电子书)格式的文件。可以是扩展名为.pdf,.xps,.oxps,.cbz,.fb2 或.epub的文件(因此您可以使用Python开发电子书查看器……)。因此它不仅仅是针对PDF解析来,可以做很多事….
支持的操作系统是哪些?
PyMuPDF可以在Mac,Linux,Windows XP SP2及更高版本上运行,Python 2.7到Python 3.7(请注意,Python仅支持v3.4以下的Windows XP),32位和64位版本上运行并经过测试。只要MuPDF和Python支持它们,其他平台也应该可以正常工作。
支持的操作系统还是很广泛的。
安装PyMuPDF
PyMuPDF托管在Github和PyPi上,因此我们可以很方便的安装。
pip install pymupdf
具体安装方法参考:https://pymupdf.readthedocs.io/en/latest/installation.html
PyMuPDF的前世今生
该库的标准Python import语句是import fitz。这有历史原因:
MuPDF的原始渲染库称为Libart。“在Artifex Software收购MuPDF项目之后,开发重点转移到编写名为* Fitz的新现代图形库。Fitz最初是作为一个研发项目来替代老化的Ghostscript图形库,但后来成为支持MuPDF的渲染引擎。” *(引自Wikipedia)。
下面介绍PyMuPDF一些超强的功能
PyMuPDF有很多实用的类和操作方法,下面我主要从以下几个方面介绍这个工具包的主要功能:
从PDF文档制作图像,按照每一页制作成图片包。
代码:
import sys, fitz
fname = sys.argv[1]
doc = fitz.open(fname)
for page in doc:
pix = page.getPixmap(alpha = False)
pix.writePNG("page-%i.png" % page.number)
这段代码是可以将pymupdf支持的文档类型按照每一页转换成图片保存起来,保存的格式为png,方法异常简单。制作的图片包含名为page-0.png,page-1.png等PNG图像文件,生成的图片具有跟文档页面尺寸一致的大小。
提取PDF内的文字
代码:
import sys, fitz
fname = sys.argv[1]
doc = fitz.open(fname)
out = open(fname ".txt", "wb")
for page in doc:
text = page.getText().encode("utf8")
out.write(text)
out.write(bytes((12,)))
out.close()
这段代码是从指定的文件中获取文本生成一个文本文件。输出将是纯文本,因为它是在文档中编码的。不会以任何方式进行美化。专门针对PDF,这可能意味着输出结果不是按常规阅读顺序,或换行符等等。
还可以通过多种方法来提取pdf中的有关文本信息,其中包括:
提取HTML格式的文本并将其存储为HTML文档,以便可以在任何浏览器中查看。
通过Page.getText(“blocks”)将文本提取为文本块列表。此列表的每个项目均包含其文本的位置信息,可用于建立方便的阅读顺序。
通过Page.getText(“words”)提取单个单词的列表。它是带有位置信息的单词。使用它来确定给定矩形中包含的文本。
PDF注释
PyMuPDF大大扩展PDF的注释的功能,新的注释类型支持“墨水”,“橡胶印章”和“曲线”注释。墨水注释通过组合一个或多个互连点列表来模拟笔迹。印章旨在以视觉方式告知文档的状态或预期用途(例如“草稿”,“机密”等)。曲线是一个文本标记注释,它用锯齿形的线条在选定的文本下划线。
扩展的“FreeText”支持:现在可以使用拉丁字符集中的所有字符,文字,矩形背景和矩形边框的颜色可以独立设置,矩形中的文本可以旋转 90或-90度文本会自动以可用矩形换行(制成多行)现在,所有Base-14字体都可用(仅普通变体,即无粗体,无斜体)。
MuPDF现在支持“线”注释的线末端图标。PyMuPDF已经在v1.13.x中支持该功能,并且几乎支持所有适用类型。因此调整了“Polygon”和“PolyLine”注释的外观,使其与MuPDF中“Line”的注释非常相似。
MuPDF现在在相关的地方提供了自己的注释图标。PyMuPDF可以很方便的切换使用它们。到目前为止,用于“FileAttachment”和“Text”(“粘滞便笺”)。
MuPDF现在还支持“ Caret”,“ Movie”,“ Sound”和“ Signature”注释,稍后会在PyMuPDF中添加它们。
代码:
# -*- coding: utf-8 -*-