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的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
python中sleep函数用法实例分析
Apr 29 Python
Python验证码识别的方法
Jul 10 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
mac使用python识别图形验证码功能
Jan 10 Python
Python 实现集合Set的示例
Dec 21 Python
python实现剪贴板的操作
利用Pycharm连接服务器的全过程记录
关于Python OS模块常用文件/目录函数详解
Python+Appium自动化测试的实战
如何使用pdb进行Python调试
Pytest中skip skipif跳过用例详解
Pytest中skip和skipif的具体使用方法
You might like
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Tensorflow 实现释放内存
2020/02/03 Python
Pycharm修改python路径过程图解
2020/05/22 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
党组织公开承诺书
2014/03/29 职场文书
中国梦团日活动总结
2014/07/07 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL