Python3, 一文掌握PyMuPDF的主要功能,再也不需要东奔西跑了。

本文主要是介绍Python3, 一文掌握PyMuPDF的主要功能,再也不需要东奔西跑了。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一文掌握PyMuPDF

  • 1、引言
  • 2、PyMuPDF
    • 2.1 介绍
    • 2.2 功能
    • 2.3 安装
    • 2.4 示例
      • 2.4.1 读取并打印PDF中的文本
      • 2.4.2 从PDF中提取特定区域的图像
      • 2.4.3 拆分PDF文件
      • 2.4.4 提取PDF文件内容
      • 2.4.5 添加注释
  • 3、总结

1、引言

小屌丝:我的纸飞机呀,飞呀飞~
小鱼:你要往哪儿飞
小屌丝:飞到你的童年
小鱼:… 能不能不这么扯
小屌丝:(⊙o⊙)…
小鱼:时光如梭,梭梭催人老。
小屌丝:好吧…
小鱼:你就不会说,飞到芦荡边?
小屌丝:…
小鱼:算法,不跟你说了, 我继续写文章了。
小屌丝:额, 写啥文章啊
小鱼:回到童年的文章
小屌丝:…写啥嘛
小鱼:纸飞机
小屌丝:…谢少吗
在这里插入图片描述

2、PyMuPDF

2.1 介绍

在日常工作和学习中,我们经常会遇到需要处理PDF文件的需求,例如提取文本、查找关键词、合并拆分文件等。

PyMuPDF是由德国的Till Pieper开发的,用于处理PDF文件的Python库。它基于muPDF,一个轻量级、高效的PDF处理库。PyMuPDF可以运行在Windows、macOS和Linux操作系统上,并且支持Python 2.7和3.x。

本文,小鱼将介绍PyMuPDF的基本信息、主要功能、安装方法以及代码示例。

一次掌握PyMuPDF的主要功能。

2.2 功能

PyMuPDF是基于C++的MuPDF库的Python封装,它提供了许多有用的功能,包括:

  • 文本提取:可以从PDF文件中提取文本内容,方便进行关键词搜索、文本分析等操作。

  • 图像提取:可以提取PDF文件中的图像,方便进行图像处理、识别等操作。

  • 页面操作:可以对PDF文件中的页面进行旋转、裁剪、缩放等操作,实现自定义的页面处理。

  • 注释和标记:可以添加、修改和删除PDF文件中的注释和标记,方便进行文档批注和标记重点内容。

  • 导出和转换:可以将PDF文件导出为图片或其他格式,也可以将其他格式的文件转换为PDF格式。

  • 修改PDF内容:可以在现有PDF的基础上添加、删除或更改内容。

  • 合并或拆分PDF文件:可以将多个PDF文件合并成一个,也可以将单个大文件拆分成多个小文件。

  • 生成SVG图像:可以将PDF转换为可缩放的矢量图形(SVG)。
    加密和解密PDF文件:可以给PDF文件设置密码,防止未经授权的访问

了解了PyMuPDF的功能,接下来,就到了我们实际操练的步骤了。

2.3 安装

因为 PyMuPDF是三方库,所以,需要先安装,在使用。
老规矩, pip安装

pip install pymupdf

其它安装方式,直接看这两篇:

Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
Python3:我低调的只用一行代码,就导入Python所有库!

2.4 示例

2.4.1 读取并打印PDF中的文本

# -*- coding:utf-8 -*-
# @Time   : 2023-12-02
# @Author : Carl_DJ'''
实现功能:使用 PyMuPDF 读取并打印PDF中的文本
'''
import fitz# 打开名为'example.pdf'的PDF文件
doc = fitz.open('example.pdf') 
# 对于PDF中的每一页
for page in doc: # 获取该页的文本内容text = page.getText() print(text) 

2.4.2 从PDF中提取特定区域的图像

# -*- coding:utf-8 -*-
# @Time   : 2023-12-02
# @Author : Carl_DJ'''
实现功能:使用 PyMuPDF 从PDF中提取特定区域的图像
'''
import fitz 
from PIL import Image 
# 创建一个像素映射对象,并获取其像素数据
img = fitz.Pixmap(doc, page_number).getPixmap() 
# 将像素数据转换为PIL图像对象
image = Image.frombytes("RGB", img.size, img.samples) 

2.4.3 拆分PDF文件

# -*- coding:utf-8 -*-
# @Time   : 2023-12-02
# @Author : Carl_DJ'''
实现功能:使用 PyMuPDF 拆分PDF文件
'''
import os 
import fitz # 设置输出目录
output_folder = 'split_pages' # 如果输出目录不存在,自动创建
if not os.path.exists(output_folder): os.makedirs(output_folder)# 打开名为'example.pdf'的PDF文件
doc = fitz.open('example.pdf') # 对于PDF中的每一页
for page in doc: # 设置输出文件路径output_path = f"{output_folder}/{doc.page_index(page)+1}.pdf" # 将当前页保存为一个新的PDF文件page.saveAsPDF(output_path) 

2.4.4 提取PDF文件内容

# -*- coding:utf-8 -*-
# @Time   : 2023-12-02
# @Author : Carl_DJ'''
实现功能:使用 PyMuPDF 提取PDF文件内容
'''
import fitz  # PyMuPDF的别名导入方式  # 打开PDF文件并提取文本内容  
with open("example.pdf", "rb") as file:  doc = fitz.open(file)  text = ""  # 初始化文本变量  for page in doc:  # 提取文本内容并追加到文本变量中text += page.extract_text()    # 输出提取的文本内容print(text)  

2.4.5 添加注释

# -*- coding:utf-8 -*-
# @Time   : 2023-12-02
# @Author : Carl_DJ'''
实现功能:使用 PyMuPDF 给PDF文件内容添加注释
'''
import fitzdoc = fitz.open('example.pdf')
page = doc.loadPage(0)# 添加矩形框
rect = fitz.Rect(50, 50, 100, 100)
annot = page.addRectAnnot(rect)

3、总结

看到这里, 关于PyMuPDF的分享差不多就该结束了。
在平时的工作中,对PDF文档的操作很常见,
如果要编译PDF文档,更多的是借助于某些收费软件来进行编译。

但是,针对小鱼来说,咱们的钱,是该省省该花花,
有钱花在刀刃上。
所以,学会PyMuPDF,那剩下的,可不是一分两分钱哦。

在这里插入图片描述

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,带你学习更多更专业更前言的Python数据分析相关技术。

这篇关于Python3, 一文掌握PyMuPDF的主要功能,再也不需要东奔西跑了。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493560

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基