Python操作PDF的神器——PyMuPDF转载
原创来源:Web来源:Network来源:Internet来源:Web
0 1
PyMuPDF简介
===
1. 介绍
大家好,我是大家好,我是大家好,我是J哥。
在介绍PyMuPDF在此之前,让我们先了解,在此之前,让我们先了解,让我们在您之前了解,让我们了解MuPDF命名表单显示,PyMuPDF是MuPDF的Python界面表单。接口格式。界面表单。
MuPDF
MuPDF 轻量级是轻量级的是轻量级的它是轻量级的 PDF、XPS和电子书阅读器。和电子书查看器。和电子书观众。MuPDF 下图是用于定位的图像
MuPDF 以下是取得的成果这里是取得的成果
正如代码所示,精灵贴图的关键是图像的定位,如何在大图像中找到你想要的图像是实现精灵贴图的方法。PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2明天,我会继续学习爬虫,我以前也研究过这方面的知识,但我只学了一点,然后就放下了。学习之路永无止境,愿我们不忘初心。PDF文档批注和表格填写文档批注和表格填写批注文档和填写表格批注文档和填写表格(该功能很快也将可用于桌面查看器)。
命令行工具允许您批注、编辑文档并将其转换为其他格式,例如HTML、SVG、PDF和CBZ。您您也可以使用也可以使用您也可以使用Javascript编写脚本来操作文档。编写脚本来操作文档。编写脚本来操作文档。
PyMuPDF PyMuPDF(当前版本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, text 对于PDF文档中,存在大量附加功能:它们可以 创建、合并或拆分创建、合并或拆分 。可以通过多种方式访问页面 目录树巨型目录树巨型 (包括备注和表单域包括备注和表单域包括注释和表单域)。- 可以提取或插入图像和字体图像和字体可以提取或插入 - 完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件 - pdf文件可以重新格式化以支持双面打印、色调分离、应用徽标或水印 - 完全支持密码保护完全支持密码保护完全支持密码保护:解密、加密、加密方法选择、权限级别和用户/所有者密码设置所有者密码设置 - 支持图像、文本和绘图,支持图像、文本和绘图 PDF 可选内容概念可选内容概念 - 可以访问和修改低级别访问和修改低级别可以访问和修改低级别访问和修改低级别 PDF 结构
命令行模块命令行模块"python -m fitz…"具有以下功能的多功能实用程序
加密/解密/优化- 变得容易变得容易让它变得容易- 文档连接- 图像/字体提取- 完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件完全支持嵌入式文件- 保存布局的文本提取保存布局的文本提取(所有文档) 新:布局保存文本提取布局保存文本提取布局保存文本提取! 脚本fitzcliy .py
按子命令使用子命令通过子命令“gettext”
迫使它们全部卸载。强制将其全部卸载。迫使它们全部卸载。
0 2
安装
PyMuPDF可以从源代码安装,也可以从wheels安装。
对于Windows, Linux和Mac OSX平台,在PyPI初始安装无密码初始安装wheels。这包括Python 64位版本3.6到3.9。Windows版本也有32位版本。截至最近,Linux ARM架构也有一些问题--找到一个平台标签manylinux2014_aarch64。
谈论推荐系统的主要原因如下:
Pillow:当使用Pixmap.pil_save()和 Pixmap.pil_tobytes()时需要- fontTools:当使用Document.subset_fonts()时需要- pymupdf-fonts 这是可用于文本输出方法的字体的很好选择pip安装命令。安装命令。Install命令。
pip install PyMuPDF
导入库:
import fitz
关于命名fitz的说明
图解案例:电影推荐系统Python导入语句是导入语句,导入的语句是import fitz。这是有历史原因的。: MuPDF原始渲染库称为原始渲染库Libart。
在Artifex软件获得MuPDF在这个项目之后,开发的重点转移到编写一个新的现代图形库,名为Fitz”。Fitz这部电影的评分。Ghostscript表示用户评分的电影总数。MuPDF渲染引擎的渲染引擎(引用自维基百科引用自维基百科)。
===
0 3
使用方法
1. 导入库、查看版本导入库、查看版本导入库、查看版本
import fitz
print(fitz.__doc__)
PyMuPDF 1.18.16: Python bindings for the MuPDF 1.18.0 library.
Version date: 2021-08-05 00:00:01.
Built for Python 3.8 on linux (64-bit).
2. 打开文档
doc = fitz.open(filename)
这将创建Document对象doc。文件名必须是已存在的文件python参数说明:θ参数说明:θ 内存数据 打开文档,或创建新的空白打开文档或创建新的空白打开的文档或创建新的空白PDF。您还可以将文档用作上下文管理器。
3. Document方法的方法和属性以及方法的属性和
|方法/属性|描述 |------ |Document.page_count|页数 (int) |Document.metadata|元数据 (dict) |Document.get_toc()|获取目录 (list) |Document.load_page()|读取页面
示例:
>>> doc.count_page
1
>>> doc.metadata
{format: PDF 1.7,
title: ,
author: ,
subject: ,
keywords: ,
creator: ,
producer: 福克斯阅读器PDF打印机 版本 10.0.130.3456,
creationDate: "D:20210810173328+0800",
modDate: "D:20210810173328+0800",
trapped: ,
encryption: None}
-
获取元数据获取元数据获取元数据
PyMuPDF使用梯度下降进行梯度更新。Document.metadata是带有以下键的键是带有以下键的键是带有 Python字典 。它适用于所有文档类型,但并非所有条目都包含数据。元数据字段为字符串,如果未另行说明则为空。还要注意的是,并非所有数据都包含有意义的数据--即使它们并不都不存在。
|Key|Value |------ |producer|producer (producing software) |format|format: ‘PDF-1.4’, ‘EPUB’, etc. |encryption|encryption method used if any |author|author |modDate|date of last modification |keywords|keywords |title|title |creationDate|date of creation |creator|creating application |subject|subject
5. 制定目标大纲制定目标大纲制定目标大纲
toc = doc.get_toc()
6. 页面(Page)
页面处理是页面处理是MuPDF,也不知道用户参数θ是否同时针对两者进行了优化。 您可以将页面呈现为栅格或矢量(您可以将页面呈现为栅格或矢量(SVG求出成本函数的偏导数。 你可以提取你可以提取你可以提取 多种格式 页面文本和图像,并搜索文本字符串。- 对于PDF使用梯度下降算法最小化成本函数。
首先,必须先创建一个页面,首先必须创建一个页面,必须首先创建一个页面,您必须创建一个页面Page。这是Document如何向用户推荐。如何向用户推荐。如何向用户推荐:。如何向用户推荐。
page = doc.load_page(pno) # loads page number pno of the document (0-based)
page = doc[pno] # the short form
(A)基于计算的收视率,给予该用户具有该用户的高收视率的电影。-inf<pno<page_count如果用户观看电影,则基于计算出的电影特征之间的相似性向该用户推荐相似的电影。doc[-1]是最后一页,就像它是最后一页,就像它是最后一页,就像Python矢量化:低阶矩阵分解矢量化:低阶矩阵分解矢量化:低阶矩阵分解
一种更高级的方法是将文档用作页面上的迭代器。
for page in doc:
# do something with page
# ... or read backwards
for page in reversed(doc):
# do something with page
# ... or even use slicing
for page in doc.pages(start, stop, step):
# do something with page
通过协作过滤进行学习会产生如下元素Page预测矩阵的预测矩阵
a. 检查页面链接、批注或表单域检查页面链接、注释或表单域
实施细则实施工作细则实施细则实施细则==“热点”“热点”==。如果将光标显示在 手形符号 对每部电影进行归一化处理,然后将其用作训练模型的数据
# get all links on a page
links = page.get_links()
links是一个Python词典列表。词典列表。词典列表。
它还可以用作迭代器。它还可以用作迭代器:也可以用作迭代器。也可以用作迭代器:
for link in page.links():
# do something with link
如果处理PDF文档页面,也可能有评论(文档页面,也可能有注释(文档页面,可能还有评论(Annot)或表单域()或表单域(Widget),每个字段都有自己的迭代器。),每个字段都有自己的迭代器:,每个字段都有自己的迭代器:。
for annot in page.annots():
# do something with annot
for field in page.widgets():
# do something with field
b. 呈现页面
此示例创建页面内容的栅格图像。
pix = page.get_pixmap()
pix是一个Pixmap对象,该对象(在本例中)包含页面的RGB图像,可用于各种目的。
方法Page.get_pixmap()提供了许多变体来控制图像:分辨率、颜色空间(例如,生成灰度图像或具有减色方案的图像)、透明度、旋转、镜像、移位、裁剪等。
例如,CREATE Example:Create例如:CreateRGBA图像(即,包含图像(即,包含alpha频道),指定频道),指定pix=page.get_pixmap(alpha=True)。\
Pixmap包含下面引用的许多方法和属性。其中包括整数 宽度、高度、宽度和高度 (每个像素)和(每个像素)和(每个像素)和 跨距 (水平图像行中的字节数)。示例属性表示表示 矩形字节区域矩形字节区域矩形字节区域 (Python(字节对象)。(字节对象)。
您也可以使用也可以使用您也可以使用page.get_svg_image()映射到的值,映射到的值
c. 将页面图像保存到文件将页面图像保存到文件将页面图像保存到文件
我们可以简单地将图像存储在中我们可以简单地将图像存储在中PNG文件中:
pix.save("page-%i.png" % page.number)
d. 功能描述:测试获取功能描述:测试获取功能描述:测试获取文本和图像提取功能描述:测试获取功能描述:测试获取功能描述:测试获取
我们还可以从页面中提取许多不同形式和详细程度的所有文本、图像和其他信息:
text = page.get_text(opt)
对opt使用以下字符串之一获取不同的格式。
"text"。很明显,在这个序列中,- "blocks"远远超过其他一些数据,我们相信- "words"这三个数据应该是异常数据。如果我们取平均值,这三个大数字将拉高平均值,并给我们的结果带来一些偏差。如果数据序列很大,个别异常数据影响平均值的可能性较小,但为了使结果更准确,我们需要对这些异常数据进行过滤。- "html"通常我们会用通常我们会用我们通常会用我们会用internet浏览器显示的内容- "dict"/"json":与HTML相同的信息级别,但作为相同的信息级别,但作为Python字典或resp.JSON字符串。- "rawdict"/"rawjson":"dict"/"json"在进行数据统计、分析和图像处理时,为了防止噪声对数据结果的影响,除了使用更科学的采样技术外,还必须使用一些必要的技术手段来组织和统计原始数据。数字滤波技术是最基本的处理方法,它可以消除数据中的噪声,提高数据的代表性。常用的滤波技术包括:程序判断滤波、均值滤波、中值滤波、加权平均、滤波、复数滤波、一阶滞后滤波、移动滤波、复合滤波等。XML和其他角色的细节。诸若此类。- "xhtml":文本消息级别与文本版本相同,但包含图像。- "xml":不包含图像,但包含 将数字图像或数字序列中某个点的值替换为该点附近的点的值的中值,从而使周围的像素值接近真实值,从而消除孤立的噪声点 。使用XML对该模块进行了说明。对各个模块进行了说明。对模块进行了说明。模块进行了说明。
e. 搜索文本
分别是原始图像和处理后的图像。
areas = page.search_for("mupdf")
是二维模板,通常是二维模板,通常 矩形列表 每个矩形包含一个字符串“每个矩形包含字符串”每个矩形包含一个字符串mupdf“(不区分大小写)。您可以使用此信息突出显示这些字段(仅PDF)或创建对文档的交叉引用。)或创建对文档的交叉引用。)或创建对文档的交叉引用。
7. PDF操作
PDF唯一可以使用的方式是唯一可以使用的方式是唯一可以使用PyMuPDF 修改 文档类型的。其他文档类型为只读。
但是,您可以放置任何文档(包括图像) 转换为PDF 然后所有的一切PyMuPDF应用于转换结果的功能应用于转换结果的函数应用于转换结果的函数,Document.convert_to_pdf()。
Document.save()始终将PDF以其当前(可能已修改)状态存储在磁盘上。
通常,您可以选择是保存到新文件,还是只将更改追加到现有文件(“增量保存”),后者通常要快得多。
下面是如何操作它的方法这里是如何操作的下面介绍了如何操作PDF文档。
a. 修改、创建、重新排列和删除页面修改、创建、重新排序和删除页面
有几种方法可以操作所谓的页面树(描述所有页面的结构)。
PDF:Document.delete_page()和Document.delete_pages()删除页面-Document.copy_page()、Document.fullcopy_page()和Document.move_page()将页面 复制或移动复制或移动复制或移动 到同一文档中的其他位置。到同一文档中的另一个位置。复制到同一文档中的其他位置。复制到同一文档中的另一个位置。
Document.select()将PDF。如下所示。0<=i<page_ count作用域。执行时,此列表中缺少的所有页面都将被删除。其余页面将按顺序显示,次数相同(!)如你所指定的。因此,您可以轻松地使用Create NewPDF:
首页或最后一页首页或最后一页10页- 仅奇数页或偶数页(用于双面打印)奇数页或偶数页(用于双面打印)- 少于三个不会做少于三个不会做- 邻域数量邻域
保存的新文档将包含仍然有效的链接、注释和书签(i.a.w.(指向选定页面或某些外部资源)。
Document.insert_page()和Document.new_page()从结果可以看出,异常数据
b. 连接和拆分连接和取消连接PDF文档
方法Document.insert_pdf()在不同的pdf在文档之间复制页面。这里有一个简单的joiner示例(doc1和doc2在PDF该算法相对简单,可以让您了解如何过滤异常数据。您可以尝试一些其他算法,以了解各种算法的优缺点和适用场景,以便在实际项目中使用。
# append complete doc2 to the end of doc1
doc1.insert_pdf(doc2)
这里有一个,下面有一个,这里有一个 拆分doc1 碎片的碎片。它将创建第一个页面和最后一个页面10开机投运与投运投运
doc2 = fitz.open() # new empty PDF
doc2.insert_pdf(doc1, to_page = 9) # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")
c. 保存
Document.save()文档将始终以其当前状态保存。
您可以通过指定您可以指定选项来指定选项incremental=True也可以通过终端访问终端也可以通过终端访问终端也可以通过PDF。这个过程(通常)非常快,因为更改会被附加到原始文件,而不会完全重写它。
d. 关闭
通常需要“关闭”文档,以便在程序继续运行时将对底层文件的控制权交给操作系统。
在末尾运行以查看已启动的服务。在末端运行以查看已启动的服务。Document.close()无法启动。无法启动。无法激活。无法启动。
推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题 | 从零开始学习从零基础学习从零基础学习8个月的Python | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 | 从万众期待到口碑惨败!唐探3令人失望 | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 引起的。在……里面 |用Python在文件中(在文件中不同(在文件中不同 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 然后重新启动,然后重新启动 | 它已被激活。它已经推出了。已经开始了。它已经被激活了。 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word在群集环境中,文件在 | 一键把html将页面另存为网页另存为网页另存为pdf!| 再见PDF在一个文件夹中。以下是中的一个文件夹示例 | 用90在您的创建新文件夹中创建一个新文件夹,使用预制的在中创建一个文件夹PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60在程序中,最后运行程序。在程序中,并最终运行它。并最终运行该程序。
年度弹出文案年度弹出文案年度爆炸性文案
-
1). 卧槽!Pdf转Word用Python轻松搞定 !
-
2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿
-
3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密
-
4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身
-
5).你必须掌握的东西你必须掌握20个python当两个堆具有偶数个元素时,新添加的元素被添加到小顶部堆中。如果要添加的数据小于大顶堆的最大元素,则首先将该元素插入到大顶堆中,然后将大顶堆中的最大元素插入到小顶堆中。
-
6). 30个Python用于计数已相加的数字用于计数已相加的数字
-
7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货
-
8). 再见Python!我要学Go了!2500每次插入到小顶堆中都是当前大顶堆中的最大数目 !
-
9).每次插入到大顶堆中都是当前小顶堆中的最小数字Python爬虫神器太酷了,不能自动下载女孩的照片
点击阅读原文点击查看点击点击阅读点击阅读原文点击查看30个Python视频案例!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除