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

共 2210字,需浏览 5分钟

 ·

2020-12-26 19:24

    有的时候有剪裁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"03"0-2.pdf")
    split_pdf("test.pdf"712"7-11.pdf")
    split_pdf("test.pdf"1823"18-22.pdf")
    split_pdf("test.pdf"2733"26-32.pdf")
    split_pdf("test.pdf"4044"40-43.pdf")
    split_pdf("test.pdf"4651"46-50.pdf")
    split_pdf("test.pdf"5866"58-65.pdf")
    split_pdf("test.pdf"7784"77-83.pdf")
    split_pdf("test.pdf"9397"93-96.pdf")
    split_pdf("test.pdf"102106"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

往期精彩回顾





获取本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/qFiUFMV

本站qq群704220115。

加入微信群请扫码:

浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报