1.PyMuPDF简介一、简介在介绍PyMuPDF之前,我们先了解一下MuPDF。从命名形式可以看出,PyMuPDF是MuPDF的Python接口形式。MuPDFMuPDF是一个轻量级的PDF、XPS和电子书查看器。MuPDF由各种平台的软件库、命令行工具和查看器组成。MuPDF中的渲染器专为高质量的抗锯齿图形量身定制。它以精确到像素的一小部分的尺寸和间距呈现文本,以在屏幕上重现打印页面的外观时实现最高保真度。这个查看器很小,速度很快,但很完整。它支持各种文档格式,如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook2。您可以使用移动查看器为PDF文档添加注释和填写表格(此功能很快也会出现在桌面查看器中)。命令行工具允许您注释、编辑文档并将其转换为其他格式,例如HTML、SVG、PDF和CBZ。您还可以使用Javascript编写脚本来操作文档。PyMuPDFPyMuPDF(当前版本1.18.17)是一个支持MuPDF(当前版本1.18.*)的Python绑定。使用PyMuPDF,您可以访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”的文件。此外,大约10种流行的图像格式也可以像文档一样处理:“.png”、“.jpg”、“.bmp”、“.tiff”等。2.所有支持的文档类型的功能可以:解密文件-访问元信息、链接和书签-以光栅格式(PNG和其他格式)或矢量格式SVG呈现页面-搜索文本-提取文本和图像-转换为其他格式:PDF、(X)HTML、XML、JSON、PDF文本文档存在大量附加功能:它们可以被创建、合并或拆分。可以通过多种方式(包括注释和表单域)插入、删除、重新排列或修改页面。-可以提取或插入图像和字体-完全支持嵌入式文件-PDF文件可以重新格式化以支持双面打印、海报化、应用徽标或水印-完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置-支持图像、文本和绘图的PDF可选内容概念-可以访问和修改低级PDF结构文档连接-图像/字体提取-完全支持嵌入文件-布局保存文本提取(所有文档)新:布局保存文本提取!脚本fitzcliy.py通过子命令“gettext”文本提取提供不同的格式。特别感兴趣的当然是布局保存,它生成尽可能接近原始物理布局的文本、带有周围图像的区域,或者在表格和多列文本中复制文本。2.安装PyMuPDF可以从源代码安装,也可以从轮子安装。对于Windows、Linux和MacOSX平台,PyPI的下载部分有轮子。这包括Python64位版本3.6到3.9。还有用于Windows的32位版本。最近LinuxARM架构也出现了一些问题——寻找平台标签manylinux2014_aarch64。除了标准库之外,它没有强制性的外部依赖项。一些不错的方法只有在安装了某些包时才可以使用:Pillow:使用Pixmap.pil_save()和Pixmap.pil_tobytes()时需要-fontTools:使用Document.subset_fonts()时需要-pymupdf-fonts这是一个很好的字体选择,它可用于文本输出方法。使用pip安装命令:pipinstallPyMuPDF导入库:importfitz关于命名fitz的注意事项这个库的标准Python导入语句是importfitz。这有一个历史原因:MuPDF的原始渲染库称为Libart。在ArtifexSoftware收购MuPDF项目后,开发重点转移到编写一个名为“Fitz”的新现代图形库。Fitz最初是作为一个研发项目来取代老化的Ghostscript图形库,但后来成为MuPDF的渲染引擎(引自维基百科)。三、使用方法1、导入库并查看版本importfitzprint(fitz.__doc__)PyMuPDF1.18.16:PythonbindingsfortheMuPDF1.18.0library.Versiondate:2021-08-0500:00:01.为Linux(64位)上的Python3.8构建。2.打开文档doc=fitz.open(filename)这将创建文档对象doc。文件名必须是现有文件的Python字符串。也可以从内存数据打开文档,或创建新的空PDF。您还可以将文档用作上下文管理器。3.Document的方法和属性|method/property|description|------|Document.page_count|页数(int)|Document.metadata|元数据(dict)|Document.get_toc()|获取目录(list)|Document.load_page()|阅读页面示例:>>>doc.count_page1>>>doc.metadata{'format':'PDF1.7','title':'','author':'','subject':'','keywords':'','creator':'','producer':'FoxitReaderPDFPrinterVersion10.0.130.3456','creationDate':"D:20210810173328+08'00'",'modDate':"D:20210810173328+08'00'",'trapped':'','encryption':None}4.获取元数据PyMuPDF完全支持标准元数据。Document.metadata是具有以下键的Python字典。它适用于所有文档类型,但并非所有条目都始终包含数据。元数据字段是字符串,如果没有另外说明,则为None。另请注意,并非所有数据都始终包含有意义的数据——即使它们不包含任何数据。5.获取目标大纲toc=doc.get_toc()6.页面(Page)页面处理是MuPDF的核心功能。?您可以将页面呈现为光栅或矢量(SVG)图像,并带有缩放、旋转、移动或裁剪页面的选项。?您可以提取各种格式的页面文本和图像,并搜索文本字符串。?对于PDF文档,有更多方法可以将文本或图像添加到页面。首先,必须创建一个页面。这是Document的一个方法:page=doc.load_page(pno)#加载文档的页码'pno'(从0开始)page=doc[pno]#缩写形式可以在这里使用任何整数-inf
