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 15 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 Python
python热力图实现的完整实例
Jun 25 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
Javascript堆排序算法详解
2014/12/03 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue自定义filters过滤器
2018/04/26 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python按行读取文件的简单实现方法
2016/06/22 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
迎新晚会邀请函
2014/02/01 职场文书
个人课题方案
2014/05/08 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
学校通报表扬范文
2015/05/04 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js