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迭代器与生成器详解
Mar 10 Python
Python数据结构之翻转链表
Feb 25 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Python实现基于POS算法的区块链
Aug 07 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
对Python3 序列解包详解
Feb 16 Python
Python tornado上传文件的功能
Mar 26 Python
基于python纯函数实现井字棋游戏
May 27 Python
python Polars库的使用简介
Apr 21 Python
python如何读取.mtx文件
Apr 22 Python
详解Python中*args和**kwargs的使用
Apr 07 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
Django实现全文检索的方法(支持中文)
2018/05/14 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
浅析Python的命名空间与作用域
2020/11/25 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
煤矿班组长岗位职责
2013/12/29 职场文书
自动一体化专业求职信
2014/03/15 职场文书
医师定期考核实施方案
2014/05/07 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
公司聚餐通知
2015/04/22 职场文书
2016公务员年度考核评语
2015/12/01 职场文书