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发送邮件接收邮件示例分享
Jan 21 Python
跟老齐学Python之print详解
Sep 28 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
解决django model修改添加字段报错的问题
Nov 18 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
python飞机大战游戏实例讲解
Dec 04 Python
Django使用echarts进行可视化展示的实践
Jun 10 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
PHP远程调试之XDEBUG
2015/12/29 PHP
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
详解vue 命名视图
2019/08/14 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
财务出纳员岗位职责
2013/11/26 职场文书
同居协议书范本
2014/04/23 职场文书
一般党员对照检查材料
2014/09/24 职场文书
党员思想汇报材料
2014/12/19 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers