python中用于绘制各种图形、标注文本_PyMuPDF–超强的解析PDF的Python包

它用来干什么的?

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 -*-

你可能感兴趣的:(python中用于绘制各种图形,标注文本)