zoukankan      html  css  js  c++  java
  • Python一键搞定批量合成PDF

    大家好,今天分享一个实用的办公脚本:将多个PDF合并为一个PDF,例如我手上现在有如下3个PDF分册,需要整合成一个完整的PDF

    图片

    如果换成你操作的话,是不是打开百度搜索:PDF合并,然后去第三方网站操作,可能会收费不说还担心文件泄漏,现在有请Python出场,简单快速,光速合并,拿走就用!

    首先导入需要的库和路径设置

     
    import os
     
    from PyPDF2 import PdfFileReader, PdfFileWriter
     
    if __name__ == '__main__':
     
        # 设置存放多个pdf文件的文件夹
     
        dir_path = r'C:Scientific ResearchKnowladgeOphthalmologyChinese Ophthalmology' 
     
        # 目标文件的名字
     
        file_name = "中华眼科学(第3版)合并版.pdf" 

    接着获取所有pdf文件的绝对路径,这里需要利用os库中的os.walk遍历文件和os.path.join拼接路径

     
    for dirpath, dirs, files in os.walk(dir_path):
     
        print(dirpath)
     
        print(files)
     
    # 结果返回当前路径、当前路径下文件夹,并以列表返回所有文件

    图片

    建议直接将需要合并的pdf放在一个文件夹,这样就无需再对文件后缀进行判断,包装成函数后如下:

     
    def GetFileName(dir_path):
     
        file_list = [os.path.join(dirpath, filesname) 
     
                     for dirpath, dirs, files in os.walk(dir_path) 
     
                     for filesname in files]
     
        return file_list


    图片

    现在建立合并PDF的函数

     
    def MergePDF(dir_path, file_name):
     
        # 实例化写入对象
     
        output = PdfFileWriter()
     
        outputPages = 0
     
        # 调用上一个函数获取全部文件的绝对路径
     
        file_list = GetFileName(dir_path)
     
     
     
        for pdf_file in file_list:
     
            print("文件:%s" % pdf_file.split('\')[-1], end=' ')
     
     
     
            # 读取PDF文件
     
            input = PdfFileReader(open(pdf_file, "rb"))
     
            # 获得源PDF文件中页面总数
     
            pageCount = input.getNumPages()
     
            outputPages += pageCount
     
            print("页数:%d" % pageCount)
     
            # 分别将page添加到输出output中
     
            for iPage in range(pageCount):
     
                output.addPage(input.getPage(iPage))
     
        print("
    合并后的总页数:%d" % outputPages)
     
        # 写入到目标PDF文件
     
        print("PDF文件正在合并,请稍等......")
     
        with open(os.path.join(dir_path, file_name), "wb") as outputfile:
     
            # 注意这里的写法和正常的上下文文件写入是相反的
     
            output.write(outputfile)
     
        print("PDF文件合并完成")

    图片

    可以看到虽然待合并的PDF文件比较大,但是依旧快速的合并成功!

    在这里还是要推荐下我自己建的Python学习群:609616831,完整代码放在群里了,只需将代码中PDF的路径和文件名修改即可使用!群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!

  • 相关阅读:
    LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
    LeetCode 1041. Robot Bounded In Circle (困于环中的机器人)
    LeetCode 1037. Valid Boomerang (有效的回旋镖)
    LeetCode 1108. Defanging an IP Address (IP 地址无效化)
    LeetCode 704. Binary Search (二分查找)
    LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
    LeetCode 852. Peak Index in a Mountain Array (山脉数组的峰顶索引)
    LeetCode 817. Linked List Components (链表组件)
    LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)
    29. Divide Two Integers
  • 原文地址:https://www.cnblogs.com/python-miao/p/14329830.html
Copyright © 2011-2022 走看看