3.1 拆分单页pdf
方法一
# import PyPDF2
from PyPDF2 import PdfWriter,PdfReader
# 打开要拆分的 PDF 文档
pdf_file = open('test.pdf', 'rb')
# 创建 PyPDF2 的 PdfFileReader 对象:
pdf_reader = PdfReader(pdf_file)
num_pages = len(pdf_reader.pages)
print(num_pages)
for i in range(num_pages):
pdf_writer = PdfWriter()
page = pdf_reader.pages[i]
pdf_writer.add_page(page) #
with open(f'page_{i + 1}.pdf', 'wb') as out_file: #{i+1}要对应for后面的i
pdf_writer.write(out_file)
pdf_file.close()
方法二
import PyPDF2
# 读取原始的PDF文件
pdf_reader = PyPDF2.PdfReader("test.pdf")
# 获取原始文件中的总页数
total_pages = len(pdf_reader.pages)
# 创建一个空列表,用于存放新创建的PDF文件名
new_files = []
# 循环遍历每一页
for i in range(total_pages):
# 创建一个新的PdfFileWriter对象
pdf_writer = PyPDF2.PdfWriter()
# 获取当前页对象
page = pdf_reader.pages[i]
# 将当前页对象添加到PdfFileWriter对象中
pdf_writer.add_page(page)
# 创建一个新的PDF文件名,格式为"original_页码.pdf"
new_file = f"original_{i+1}.pdf"
# 将新的PDF文件名添加到列表中
new_files.append(new_file)
# 打开一个新的PDF文件,以二进制写入模式
with open(new_file, "wb") as f:
# 将PdfFileWriter对象中的内容写入到新的PDF文件中
pdf_writer.write(f)
# 打印出新创建的PDF文件名
print(new_files)
['original_1.pdf', 'original_2.pdf', 'original_3.pdf', 'original_4.pdf', 'original_5.pdf', 'original_6.pdf', 'original_7.pdf']
3.2拆分任意页数,代码只修改页数即可
# main.py
# 引入PdfWriter类
from PyPDF2 import PdfWriter
'''
注意:
1.该程序和要拆分的Pdf放到同一文件夹下;
2.运行程序时关闭要拆分的pdf;
3.pdf默认0为第1页
'''
# 新建实例
pdfWriter = PdfWriter()
# 引入PDF文件页面
# - fileobj为PDF文件,同一文件夹下可以直接使用文件名
# - pages为页面编号,从0记起,因此这里是1和3,对应页码2和4
# 修改页面编码即可
pdfWriter.append(fileobj='test.pdf', pages=[1,2,3])
# 由于fileobj是第一个输入参数,上行也可以简写如下:
# pdfWriter.append('file1.pdf', pages=[1,3])
# 保存文件,命名为output.pdf
pdfWriter.write('output.pdf')
# 清除缓存
pdfWriter.close()
3.3 将两个pdf中的某页拆分后进行合并
from PyPDF2 import PdfWriter
pdfWriter = PdfWriter()
# 修改如下:
pdfWriter.append('file1.pdf', pages=PageRange(':3'))
pdfWriter.append('file2.pdf', pages=PageRange('-3:'))
pdfWriter.write('output.pdf')
pdfWriter.close()