Python合并pdf文件的工具


Posted in Python onJuly 01, 2021

  如果你需要一个PDF文件合并工具,那么本文章完全可以满足您的要求。哈喽,大家好呀,这里是滑稽研究所。不多废话,本期我们利用Python合并把多个pdf文件合并为一个。我们提前准备了5个pdf文件,来验证代码。

Python合并pdf文件的工具
  源代码:

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

# 使用os模块的walk函数,搜索出指定目录下的全部PDF文件
# 获取同一目录下的所有PDF文件的绝对路径
def getFileName(filedir):

    file_list = [os.path.join(root, filespath) \
                 for root, dirs, files in os.walk(filedir) \
                 for filespath in files \
                 if str(filespath).endswith('pdf')
                 ]
    return file_list if file_list else []

# 合并同一目录下的所有PDF文件
def MergePDF(filepath, outfile):

    output = PdfFileWriter()
    outputPages = 0
    pdf_fileName = getFileName(filepath)

    if pdf_fileName:
        for pdf_file in pdf_fileName:
            print("路径:%s"%pdf_file)

            # 读取源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文件
        outputStream = open(os.path.join(filepath, outfile), "wb")
        output.write(outputStream)
        outputStream.close()
        print("PDF文件合并完成!")

    else:
        print("没有可以合并的PDF文件!")

# 主函数
def main():
    file_dir = input('请输入存有Pdf的文件夹').replace('/','//')# 存放PDF的原文件夹
    outfile = "pick_me.pdf" # 输出的PDF文件的名称
    MergePDF(file_dir, outfile)
    print('done')

main()

Python合并pdf文件的工具
Python合并pdf文件的工具

  可以看到5个PDF文件合并到了一起,那么到这里就结束了吗?当然不是,代码运行遇到PDF文件中文件格式较多时,比如多图,word格式等,会出现以下报错。

Python合并pdf文件的工具

  最后一行报错的意思为:

PyPDF2。utils.PdfReadError:对于键/Im82,字典中字节0xc0161处有多个定义

  通俗一点就是说遇到了一个多义词,程序不知道该取哪个意思了。我们点进pdf.py文件里,找到下图位置。

Python合并pdf文件的工具

  严格模式默认是打开的,我们改成False。

构造方法:
PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = True)
stream:File 对象或支持与 File 对象类似的标准读取和查找方法的对象,也可以是表示 PDF 文件路径的字符串。
strict(bool):确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是 True
warndest : 记录警告的目标(默认是 sys.stderr)
overwriteWarnings(bool):确定是否 warnings.py 用自定义实现覆盖 Python 模块(默认为 True)

  我们重新运行程序.

Python合并pdf文件的工具

  打开文件夹,可以看到我们的文件已经合并好了,打开之后的格式也是没有错误的。
  那么,问题解决。

Python合并pdf文件的工具

  如果你只是需要应该PDF合并工具代码直接拿走用即可,如果你想学习pypdf2这个实用的库,并且希望对这段代码进行改进来适配自己的情况

到此这篇关于Python合并pdf文件的文章就介绍到这了,更多相关Python合并pdf文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python正则表达式中的括号匹配问题
Dec 14 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
python随机数分布random测试
Aug 27 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
Python中six模块基础用法
Dec 08 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Python中文纠错的简单实现
Jul 07 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
CURL状态码列表(详细)
2013/06/27 PHP
php创建图像具体步骤
2017/03/13 PHP
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python正则实现提取电话功能
2018/02/24 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
护理学应聘自荐书范文
2014/02/05 职场文书
社区食品安全实施方案
2014/03/28 职场文书
中学生检讨书范文
2014/11/03 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
民主生活会意见
2015/06/05 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python