PyMuPDF,也称为 fitz
,是一个强大的Python库,用于处理PDF文件。它支持读取、写入以及修改PDF文档,并且具有良好的性能。下面将介绍如何安装PyMuPDF及其基本使用方法。
安装 PyMuPDF
首先确保你的环境中已经安装了Python。然后可以通过pip来安装PyMuPDF:
pip install pymupdf
如果你遇到任何依赖问题或者版本兼容性问题,请查阅官方文档获取更多帮助信息。
基本使用示例
1. 打开一个PDF文件并打印每页内容
import fitz # 导入PyMuPDF库
# 打开PDF文件
doc = fitz.open("example.pdf")
# 遍历所有页面
for page_num in range(len(doc)):
page = doc.load_page(page_num) # 加载指定编号的页面
text = page.get_text() # 获取页面文本
print(f"Page {page_num + 1}:\n{text}\n")
这段代码会打开名为 "example.pdf" 的PDF文件,并打印出每个页面的内容。
2. 向现有PDF添加水印
假设我们要在每一页上添加“Confidential”作为水印文字:
from fitz import Rect, Point
# 打开原始PDF文件
pdf_document = fitz.open("original.pdf")
output_file = "watermarked.pdf"
for page in pdf_document:
# 创建一个新的形状对象以绘制水印
shape = page.new_shape()
# 设置水印位置和样式
rect = Rect(Point(50, 50), Point(200, 100))
shape.insert_textbox(rect, "Confidential", fontsize=30, rotate=45, color=(0, 0, 0))
# 渲染形状到页面
shape.finish(width=0.5, color=(0, 0, 0), fill=(255, 255, 255))
shape.commit()
# 保存带有水印的新PDF
pdf_document.save(output_file)
pdf_document.close()
此脚本会在每一页上斜向(45度角)添加“Confidential”字样作为水印,并保存为新的PDF文件。
3. 从PDF中提取图像
有时候我们需要从PDF文档中提取图片资源,可以这样做:
import os
# 打开PDF文件
document = fitz.open("image_containing.pdf")
# 检查每个页面上的图像
for i, page in enumerate(document):
for img_index, img in enumerate(page.get_images(full=True)):
xref = img[0]
base_image = document.extract_image(xref)
image_bytes = base_image["image"]
# 将图像数据保存为文件
with open(f"image_{i}_{img_index}.png", "wb") as f:
f.write(image_bytes)
document.close()
上述代码会遍历给定PDF中的所有图片,并将它们保存为PNG格式的文件。
注意事项
- 在处理大型PDF或大量数据时,请注意内存使用情况。
- 不同版本的PyMuPDF可能有一些功能差异,请参考最新的官方文档进行开发。
- 如果需要更高级的功能如表单填写等,请详细阅读官方文档以了解更多可用API。
通过这些基础示例,你可以开始探索PyMuPDF的强大功能了!希望这对你有所帮助。