1. PyMuPDF简介 #
PyMuPDF(fitz)是一个功能强大的PDF和电子书(XPS、EPUB等)处理库,支持文本、图片、页面等多种操作。
2. 安装方法 #
介绍如何安装PyMuPDF及其依赖。
# 安装PyMuPDF主库
pip install pymupdf3. 基本用法 #
本节介绍如何用PyMuPDF打开PDF、读取文本和提取图片。
3.1 打开PDF文件 #
展示如何加载和打开PDF文档。
# 导入fitz模块
import fitz # PyMuPDF的主模块
# 打开PDF文件(假设当前目录有example.pdf)
doc = fitz.open('example.pdf')
# 打印PDF总页数
print(doc.page_count)
# 关闭文档
doc.close()3.2 读取页面文本 #
展示如何读取PDF某一页的文本内容。
# 导入fitz模块
import fitz
# 打开PDF文件
doc = fitz.open('example.pdf')
# 获取第1页(页码从0开始)
page = doc.load_page(0)
# 提取页面文本
text = page.get_text()
# 打印文本内容
print(text)
# 关闭文档
doc.close()3.3 提取页面图片 #
展示如何提取PDF页面中的图片。
# 导入fitz模块
import fitz
# 打开PDF文件
doc = fitz.open('example.pdf')
# 获取第1页
page = doc.load_page(0)
# 遍历页面中的所有图片
for img in page.get_images():
# 获取图片的xref编号
xref = img[0]
# 提取图片为字节流
pix = fitz.Pixmap(doc, xref)
# 保存为PNG文件
if pix.n < 5: # 彩色或灰度图像
pix.save(f'image_{xref}.png')
else: # CMYK等特殊格式需转为RGB
pix = fitz.Pixmap(fitz.csRGB, pix)
pix.save(f'image_{xref}.png')
# 释放资源
pix = None
# 关闭文档
doc.close()4. 进阶用法 #
本节介绍页面操作、文本搜索、添加注释和保存等高级用法。
4.1 页面操作(插入、删除、复制) #
展示如何对PDF页面进行插入、删除和复制。
# 导入fitz模块
import fitz
# 打开PDF文件
doc = fitz.open('example.pdf')
# 插入空白页到第2页前
page = doc.new_page(pno=1)
# 删除第1页
doc.delete_page(0)
# 复制第1页到末尾
doc.insert_pdf(doc, from_page=0, to_page=0, start_at=doc.page_count)
# 保存修改后的PDF
doc.save('modified.pdf')
# 关闭文档
doc.close()4.2 文本搜索与高亮 #
展示如何搜索文本并添加高亮注释。
# 导入fitz模块
import fitz
# 打开PDF文件
doc = fitz.open('example.pdf')
# 获取第1页
page = doc.load_page(0)
# 搜索关键字"Python"
for inst in page.search_for('Python'):
# 添加高亮注释
highlight = page.add_highlight_annot(inst)
# 保存带高亮的PDF
doc.save('highlighted.pdf')
# 关闭文档
doc.close()4.3 添加文本注释 #
展示如何在PDF页面添加文本注释。
# 导入fitz模块
import fitz
# 打开PDF文件
doc = fitz.open('example.pdf')
# 获取第1页
page = doc.load_page(0)
# 在指定位置添加文本注释
annot = page.add_text_annot((100, 100), '这是一个注释')
不行
# 保存带注释的PDF
doc.save('annotated.pdf')
# 关闭文档
doc.close()5. 常见应用场景 #
PyMuPDF 常用于以下场景:
- PDF文本和图片批量提取
- PDF内容搜索与高亮
- 自动化PDF批量处理与转换
- 电子书内容分析与注释