【Python】用Python实现PDF文件分割和合并

    有的时候有剪裁PDF的需求,虽然有软件实现了这样的功能,但有时候会遇到这种情况

    既然如此,为何不自己实现这个功能呢?上代码

# 导入读写pdf模块
from PyPDF2 import PdfFileReader, PdfFileWriter
'''
注意:
页数从0开始索引
range()是左闭右开区间
'''

def split_pdf(file_name, start_page, end_page, output_pdf):
    '''
    :param file_name:待分割的pdf文件名
    :param start_page: 执行分割的开始页数
    :param end_page: 执行分割的结束位页数
    :param output_pdf: 保存切割后的文件名
    '''
    # 读取待分割的pdf文件
    input_file = PdfFileReader(open(file_name, 'rb'))
    # 实例一个 PDF文件编写器
    output_file = PdfFileWriter()
    # 把分割的文件添加在一起
    for i in range(start_page, end_page):
        output_file.addPage(input_file.getPage(i))
    # 将分割的文件输出保存
    with open(output_pdf, 'wb') as f:
        output_file.write(f)

def merge_pdf(merge_list, output_pdf):
    """
    merge_list: 需要合并的pdf列表
    output_pdf:合并之后的pdf名
    """
    # 实例一个 PDF文件编写器
    output = PdfFileWriter()
    for ml in merge_list:
        pdf_input = PdfFileReader(open(ml, 'rb'))
        page_count = pdf_input.getNumPages()
        for i in range(page_count):
            output.addPage(pdf_input.getPage(i))

    output.write(open(output_pdf, 'wb'))


if __name__ == '__main__':
    # 分割pdf
    split_pdf("test.pdf", 0, 3, "0-2.pdf")
    split_pdf("test.pdf", 7, 12, "7-11.pdf")
    split_pdf("test.pdf", 18, 23, "18-22.pdf")
    split_pdf("test.pdf", 27, 33, "26-32.pdf")
    split_pdf("test.pdf", 40, 44, "40-43.pdf")
    split_pdf("test.pdf", 46, 51, "46-50.pdf")
    split_pdf("test.pdf", 58, 66, "58-65.pdf")
    split_pdf("test.pdf", 77, 84, "77-83.pdf")
    split_pdf("test.pdf", 93, 97, "93-96.pdf")
    split_pdf("test.pdf", 102, 106, "102-105.pdf")
    # 合并pdf
    # 合并的pdf列表
    pdf_list = ["0-2.pdf", "7-11.pdf", "18-22.pdf", "26-32.pdf", "40-43.pdf", "46-50.pdf", "58-65.pdf", "77-83.pdf", "93-96.pdf", "102-105.pdf"]
    merge_pdf(pdf_list, "all.pdf")

    当然上面的代码一开始不能直接运行,但不要着急,参照参考资料中的报错链接将问题解决,就可以运行了。

参考资料:

报错:

https://blog.csdn.net/kmesky/article/details/102695520

代码:

https://blog.csdn.net/wnma3mz/article/details/78823195


往期精彩回顾



适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。

加入微信群请扫码:

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用 PyPDF2 库来实现 PDF分割合并。 首先需要安装 PyPDF2,可以使用以下命令进行安装: ``` pip install PyPDF2 ``` 接下来就可以开始实现分割合并功能了。 ## PDF 分割 PDF 分割可以将一个 PDF 文件拆分成多个单独的文件,可以按照页面数或者指定的页面进行拆分。 以下是一个简单的分割示例,将一个 PDF 文件按照每两页分割成一个文件: ```python import os from PyPDF2 import PdfFileReader, PdfFileWriter def split_pdf(input_path): with open(input_path, 'rb') as input_pdf: input_pdf_reader = PdfFileReader(input_pdf) output_pdf_writer = PdfFileWriter() for i in range(input_pdf_reader.getNumPages()): if i % 2 == 0: output_pdf_writer.addPage(input_pdf_reader.getPage(i)) with open(f'{os.path.splitext(input_path)[0]}_{i//2}.pdf', 'wb') as output_pdf: output_pdf_writer.write(output_pdf) output_pdf_writer = PdfFileWriter() else: output_pdf_writer.addPage(input_pdf_reader.getPage(i)) if input_pdf_reader.getNumPages() % 2 != 0: with open(f'{os.path.splitext(input_path)[0]}_{input_pdf_reader.getNumPages()//2}.pdf', 'wb') as output_pdf: output_pdf_writer.write(output_pdf) ``` 以上代码将每两页作为一组,将其拆分成多个文件拆分后的文件名为原文件名加上下划线和组数,例如 `input_0.pdf`、`input_1.pdf` 等。 ## PDF 合并 PDF 合并可以将多个 PDF 文件合并成一个文件。 以下是一个简单的合并示例,将多个 PDF 文件合并成一个文件: ```python from PyPDF2 import PdfFileMerger def merge_pdf(input_paths, output_path): pdf_merger = PdfFileMerger() for input_path in input_paths: with open(input_path, 'rb') as input_pdf: pdf_merger.append(input_pdf) with open(output_path, 'wb') as output_pdf: pdf_merger.write(output_pdf) ``` 以上代码将所有输入的 PDF 文件按照顺序合并成一个文件,并保存到指定的输出文件中。 以上就是使用 PyPDF2 实现 PDF 分割合并的简单示例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值