拆分pdf

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值