当前位置: 首页 > 后端技术 > Python

Python办公自动化:全网最强最详尽的PDF文件操作手册!

时间:2023-03-26 15:58:54 Python

PDF(便携式文档格式)是一种便携式文档格式,有助于跨操作系统传播文档。PDF文档遵循一个标准的格式,所以可以操作PDF文档的工具有很多,Python也不例外。而在Python办公自动化中操作PDF也是一项很重要的技能。希望今天的这篇文章能对您有所帮助!有许多用于在Python中操作PDF的优秀库。下面简要比较各个库的优缺点。各种pdf库比较PyPDF2系列,pdfrw和pikepdf专注于已有的PDF操作(拆分、合并、旋转等),前两者基本处于停止维护状态。pdfplumber及其依赖的pdfminer.six专注于PDF内容提取,如文本(位置、字体、颜色等)和形??状(矩形、直线、曲线),前者还具有解析表格的功能。ReportLab专注于创建PDF页面内容(文本、图形、表格等)。PyMuPDF和borb同时支持读、写和PDF页面操作,功能最全面。其中,PyMuPDF尤其以速度快着称,而borb是新近开发并广受好评的库,潜力无限。但是,两者都是GPL家族的开源协议,对商业使用不是很友好。PyMuPDF介绍功能安装介绍命名fitz说明如何使用1导入库,查看版本2打开文档3Document的方法和属性4获取元数据5获取目标大纲6页面(Page)7PDF操作PyMuPDF介绍说说今天我们的主角PyMuPDF,最全面的python办公自动化工具!PyMuPDFgithub地址:pymupdf/PyMuPDF:PythonbindingsforMuPDF'srenderinglibrary\官方手册:PyMuPDFDocumentation—PyMuPDF1.18.17documentation简介在介绍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”等。所有支持的文档类型的功能都可以:解密文件访问元信息、链接和书签以光栅格式(PNG和其他格式)或矢量格式呈现页面SVG搜索文本提取文本和图像转换为其他格式:PDF、(X)HTML、XML、JSON、文本对于PDF文档,大量存在其他功能:可以创建、合并或拆分它们。可以通过多种方式(包括注释和表单域)插入、删除、重新排列或修改页面。可以提取或插入图像和字体完全支持嵌入文档PDF文件可以重新格式化以支持双面打印、分色、应用徽标或水印完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置支持图像、文本和绘图的PDF可选内容概念可以访问和修改低级PDF结构命令行模块“python-mfitz...”具有以下功能的多功能实用程序链接图像/字体提取完全支持嵌入式文件保存布局文本提取(所有文档)从源或轮子安装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.BuiltforPython3.8onlinux(64位)。2打开文档doc=fitz.open(filename)这将创建文档对象doc。文件名必须是现有文件的Python字符串。\也可以从内存数据打开文档,或创建新的空PDF。您还可以将文档用作上下文管理器。3Document方法及属性方法/属性说明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。另请注意,并非所有数据都始终包含有意义的数据——即使它们不包含任何数据。KeyValueproducerproducer(制作软件)format格式:'PDF-1.4','EPUB'等encryption使用的加密方法authorauthormodDatedateoflastmodificationkeywordskeywordstitletitlecreationDateofcreationcreatorcreatingapplicationsubject5获取目标类别toc=doc.get_toc()6页面(Page)页面PD处理是M核。\?您可以将页面呈现为光栅或矢量(SVG)图像,并可选择缩放、旋转、移动或剪切页面。\?您可以提取各种格式的页面文本和图像并搜索文本字符串。\?对于PDF文档,可以使用更多方法向页面添加文本或图像。首先,必须创建一个页面。这是文档的一种方法:page=doc.load_page(pno)#加载文档的页码'pno'(从0开始)page=doc[pno]#缩写形式可以在这里使用任何整数-inf