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

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字