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

2023-12-14 14:38:47

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 fitz

doc = 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数据分析相关技术。

文章来源:https://blog.csdn.net/wuyoudeyuer/article/details/134645427
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。