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 pickle 和 shelve模块的用法
Sep 16 Python
Python闭包实现计数器的方法
May 05 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
python递归查询菜单并转换成json实例
Mar 27 Python
使用python生成目录树
Mar 29 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
python随机数分布random均匀分布实例
Nov 27 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
Python 在局部变量域中执行代码
Aug 07 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Python Django项目和应用的创建详解
Nov 27 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP strripos函数用法总结
2019/02/11 PHP
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
科研先进个人典型材料
2014/01/31 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python