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学习笔记(二)基础语法
Jun 06 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
Python 操作文件的基本方法总结
Aug 10 Python
Django csrf 验证问题的实现
Oct 09 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
新手如何发布Python项目开源包过程详解
Jul 11 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python实现类的创建与使用方法示例
2017/07/25 Python
python使用mysql的两种使用方式
2018/03/07 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
十一酒店活动方案
2014/02/20 职场文书
环保倡议书格式范文
2014/05/14 职场文书
工程造价专业求职信
2014/07/17 职场文书
党员个人对照检查材料
2014/10/01 职场文书
公司离职证明标准格式
2014/11/18 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP