PyPDF2是一个用于处理PDF文件的Python库,可以读取、合并、拆分、裁剪和修改PDF文件。以下是一些使用PyPDF2的基本示例,包括如何安装该库以及执行一些常见的PDF操作。
安装PyPDF2
首先,你需要安装PyPDF2库。你可以使用pip来安装它:
shell
pip install PyPDF2
读取PDF文件
读取PDF文件并打印其页数:
python
import PyPDF2
# 使用PyPDF2读取pdf文件
if __name__ == '__main__':
# 打开 PDF 文件
with open('example.pdf', 'rb') as file:
# 创建一个 PDF 阅读器对象
reader = PyPDF2.PdfReader(file)
# 打印 PDF 文件中的页数
print(f'Number of pages: {len(reader.pages)}')
提取文本
从PDF文件中提取文本:
python
import PyPDF2
# 使用PyPDF2读取pdf文本
if __name__ == '__main__':
# 打开 PDF 文件
with open('example.pdf', 'rb') as file:
# 创建一个 PDF 阅读器对象
reader = PyPDF2.PdfReader(file)
# 提取第一页的文本
page = reader.pages[0]
text = page.extract_text()
print(text)
拆分PDF文件
将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:
python
import PyPDF2
# 使用PyPDF2将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:
if __name__ == '__main__':
# 创建一个 PDF 写入器对象
odd_writer = PyPDF2.PdfWriter()
even_writer = PyPDF2.PdfWriter()
# 打开要拆分的 PDF 文件
with open('example.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
page_num = 0
for page in reader.pages:
# print(page_num)
if page_num % 2 == 0:
# print(reader.pages[page_num])
odd_writer.add_page(page)
else:
even_writer.add_page(page)
page_num = page_num+1
# 将拆分后的 PDF 写入到一个新文件
with open('example1.pdf', 'wb') as output_pdf:
odd_writer.write(output_pdf)
# 将拆分后的 PDF 写入到一个新文件
with open('example2.pdf', 'wb') as output_pdf:
even_writer.write(output_pdf)
合并PDF文件
你可以将多个PDF文件合并为一个:
python
import PyPDF2
# 使用PyPDF2合并两个pdf文件
if __name__ == '__main__':
# 打开要合并的 PDF 文件
pdf_files = ['example1.pdf', 'example2.pdf']
# 创建一个 PDF 写入器对象
merger = PyPDF2.PdfMerger()
for pdf_file in pdf_files:
merger.append(pdf_file)
# 将合并后的 PDF 写入到一个新文件
with open('merged.pdf', 'wb') as output_pdf:
merger.write(output_pdf)
裁剪PDF页面
PyPDF2并不直接支持裁剪页面,但你可以通过提取页面的部分内容并创建一个新的页面来实现这一功能。以下是一个简单的示例,演示如何裁剪页面的上半部分:
python
import PyPDF2
# 使用PyPDF2裁剪PDF页面,通过提取页面的部分内容并创建一个新的页面来实现这一功能
if __name__ == '__main__':
# 打开 PDF 文件
with open('example.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
# 创建一个 PDF 写入器对象
writer = PyPDF2.PdfWriter()
# 获取第一页
page = reader.pages[0]
# 定义裁剪区域(左下角和右上角的坐标)
# 表示裁剪区域的左下角和右上角坐标
cropbox = page.cropbox
x_lower_left = cropbox.lower_left[0]
y_lower_left = cropbox.lower_left[1] + (cropbox.upper_right[1] - cropbox.lower_left[1]) / 2
x_upper_right = cropbox.upper_right[0]
y_upper_right = cropbox.upper_right[1]
# 设置裁剪区域(左下x, 左下y, 右上x, 右上y)
page.cropbox.lower_left = (x_lower_left, y_lower_left)
page.cropbox.upper_right = (x_upper_right, y_upper_right)
writer.add_page(page)
# 将裁剪后的 PDF 写入到一个新文件
with open('cropped_example.pdf', 'wb') as output_pdf:
writer.write(output_pdf)
加密PDF
python
from PyPDF2 import PdfWriter
from PyPDF2 import PdfReader
# 使用PyPDF2加密pdf
if __name__ == '__main__':
writer = PdfWriter()
with open('example.pdf', 'rb') as file:
reader = PdfReader(file)
writer.add_page(reader.pages[0])
# 设置加密(128位 AES)
writer.encrypt(
user_password="password123",
owner_password=None,
use_128bit=True
)
with open("encrypted.pdf", "wb") as out_file:
writer.write(out_file)