Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
pip install pypdf
pip install pypdf[crypto]
pip install pypdf[image]
https://github.com/py-pdf/pypdf
PyPDF支持PDF文件的提取文本、合并、提取图像、添加水印等操作。以下是关于它的基本用法和示例:
示例1:读取元数据:
元数据(metadata)是PDF文件中存储的关于文件本身的描述性信息,例如作者、主题、创建者、创建日期等。
以下代码是读取PDF元数据的典型示例,适用于快速提取文件的基本信息。需要注意的是,因为并非所有PDF文件都包含完整的元数据,如果某些字段未被设置,将返回None。
from pypdf import PdfReader
reader = PdfReader("example.pdf")
meta = reader.metadata
# PDF 文件的作者
print(f"author:{meta.author}")
# PDF 文件的主题或描述
print(f"subject:{meta.subject}")
# 创建 PDF 文件的工具或应用程序
print(f"creator:{meta.creator}")
# 用于生成 PDF 文件的工具或库
print(f"producer:{meta.producer}")
# PDF 文件的创建日期
print(f"creation_date:{meta.creation_date}")
# PDF 文件的最后修改日期
print(f"modification_date:{meta.modification_date}")
-
示例2:读取PDF文件并提取文本
使用pypdf的extract_text()方法可以快速提取PDF文件中的文本内容。但是需要注意的是,该方法依赖于PDF文件的文本层。如果PDF文件是扫描生成的(即只有图像,没有文本层),则无法提取文本。
from pypdf import PdfReader
# 打开 PDF 文件
pdf_path = 'example.pdf'
reader = PdfReader(pdf_path)
# 获取 PDF 文件的总页数
num_pages = len(reader.pages)
# 提取每一页的文本
text = ""
for page in reader.pages:
text += page.extract_text()
print(text)
-
示例3:合并多个 PDF 文件
使用pypdf库中的PdfWriter类来实现将多个PDF文件合并成一个PDF文件的操作。
from pypdf import PdfWriter
# 创建一个 PdfWriter 对象
merger = PdfWriter()
# 要合并的 PDF 文件列表
pdf_files = ['example.pdf', 'example2.pdf', 'example3.pdf']
# 遍历 PDF 文件列表并添加到合并器中
for pdf in pdf_files:
merger.append(pdf)
# 保存合并后的 PDF 文件
output_pdf = 'merged.pdf'
merger.write(output_pdf)
merger.close()
-
示例4:读取PDF文件并提取图像
该功能需要安装对应的依赖项。
下述代码的功能是从一个PDF文件中提取第一页的所有图像,并将它们保存为JPG格式的文件。使用了pypdf库来读取PDF文件,Pillow库来处理图像,并通过BytesIO来处理二进制数据。
from pypdf import PdfReader
from PIL import Image
from io import BytesIO
reader = PdfReader("example.pdf")
# 获取PDF文件的第一页
page = reader.pages[0]
# 遍历图像对象
for count, image_file_object in enumerate(page.images):
# 使用 BytesIO 将二进制数据转为图像对象
image_data = BytesIO(image_file_object.data)
try:
# 用 Pillow 打开图片并转换为 RGB 模式(JPG 不支持透明度)
img = Image.open(image_data).convert("RGB")
# 生成文件名:使用索引 + 自定义前缀,避免原始名称的混乱
filename = f"image_{count}.jpg"
# 保存为 JPG 格式,质量参数可选(1-100)
img.save(filename, "JPEG", quality=85)
print(f"Saved: {filename}")
except Exception as e:
print(f"Error processing image {count}: {str(e)}")
更多内容可以前往官方文档查看:
https://pypdf.readthedocs.io/en/stable/


本篇文章来源于微信公众号: 码农设计师