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实现登录接口的示例代码
Jul 21 Python
Python面向对象编程基础解析(一)
Oct 26 Python
简单实现python进度条脚本
Dec 18 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python unittest单元测试框架总结
Sep 08 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
python使用PyQt5的简单方法
Feb 27 Python
python验证身份证信息实例代码
May 06 Python
Python实现的文轩网爬虫完整示例
May 16 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PDO::setAttribute讲解
2019/01/29 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
python如何写try语句
2020/07/14 Python
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
生日邀请函范文
2014/01/13 职场文书
出国签证在职证明
2014/01/16 职场文书
岗位职责的构建方法
2014/02/01 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
快递员岗位职责
2014/09/12 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
开学第一天的感想
2015/08/10 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫