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数据处理numpy.median的实例讲解
Apr 02 Python
详解django的serializer序列化model几种方法
Oct 16 Python
python调用java的jar包方法
Dec 15 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python性能测量工具cProfile使用解析
Sep 26 Python
pytorch中获取模型input/output shape实例
Dec 30 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
python中的列表和元组区别分析
Dec 30 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
浅谈PHP的数据库接口和技术
2016/12/09 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
javascript测试题练习代码
2012/10/10 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python 布尔操作实现代码
2013/03/23 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Python Flask基础教程示例代码
2018/02/07 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
房屋改造计划书
2014/01/10 职场文书
《去年的树》教学反思
2014/04/11 职场文书
公司合作协议书范本
2014/04/18 职场文书
产品委托授权书范本
2014/09/16 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
责任书范本大全
2015/05/11 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server