python如何将多个PDF进行合并


Posted in Python onAugust 13, 2019

背景

由于工作性质,经常面对不同的问题,某些场景下SQL+Excel、常用办公软件不能处理,这时到网上找一些案例,自己动手用python处理。后续,借此博客记录比较典型的处理过程。

后续,陆续实际处理的问题,如

1. 合并PDF
2. 拆分PDF
3. 敏感字段MD5脱敏
4. 从非架构化的大文本文件中提取指定条件的记录

需求

工作和生活中有时会遇到将多个pdf文件,合并成一个大文件的情况。例如,扫描时,普通扫描仪或打印机一页生成一个PDF,而一份资料实际多页。Adobe的收费版有合并功能,我们可以自己动手解决。根据网上搜索了几个合并pdf的例子,都是2.X环境下的程序,因此将部分函数替换为3.x环境下。

合并多个PDF的python

'''# -*- coding:utf-8*-'''
import sys
import importlib
importlib.reload(sys)

import os
import os.path
from PyPDF2 import PdfFileReader, PdfFileWriter 
import time
time1=time.time()

# 使用os模块walk函数,搜索出某目录下的全部pdf文件
######################获取同一个文件夹下的所有PDF文件名#######################
def getFileName(filepath):
 file_list = []
 for root,dirs,files in os.walk(filepath):
  for filespath in files:
   # print(os.path.join(root,filespath))
   file_list.append(os.path.join(root,filespath))

 return file_list



##########################合并同一个文件夹下所有PDF文件########################
def MergePDF(filepath,outfile):
 output=PdfFileWriter()
 outputPages=0
 in_file_path =filepath +r'input/'
 print(in_file_path)
 pdf_fileName=getFileName(in_file_path)
 i=0
 for each in pdf_fileName:
  i=i+1
  print(i,each)
  # 读取源pdf文件
  input = PdfFileReader(open(each, "rb"))

  # 如果pdf文件已经加密,必须首先解密才能使用pyPdf
  if input.isEncrypted == True:
   input.decrypt("map")

  # 获得源pdf文件中页面总数
  pageCount = input.getNumPages()
  outputPages += pageCount
  print("PageCount: ",pageCount)

  # 分别将page添加到输出output中
  for iPage in range(0, pageCount):
   output.addPage(input.getPage(iPage))


 print("All Pages Number:"+str(outputPages))
 # 最后写pdf文件
 out_file_path=filepath+r'output/'
 outputStream=open(out_file_path+outfile,"wb")
 output.write(outputStream)
 outputStream.close()
 print( "finished")


if __name__ == '__main__':
 file_dir = r'D:/扫描文件/'  # 待合并PDF 所在文件夹
 out=u"某某资料合并文件.pdf"  # 合并后文件名称
 MergePDF(file_dir,out)
 time2 = time.time()
 print( u'总共耗时:' + str(time2 - time1) + 's')

使用注意事项

1、程序第63行,默认指定了一个目录,“D:\扫描文件“,然后在其下建“\input”和“\output”两个子文件夹。
2、将待合并的pdf文件放在“\input”中,合并后的文件默认为“某某资料合并文件.pdf”,可在程序第64行修改你期望的文件名,合并后文件输出到“\output”。
3、合并多个文件时,合并顺序为文件名升序。

补充说明,如何使用python,建议学一本免费的电子书《编程小白的第一本Python入门书》,网上可搜。

最后,如果哪位朋友有兴趣,可以将程序第63和64行,加一个图形界面,用户在window下选择input 和output,选择输出文件名,然后做一个可执行文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Python学习RabbitMQ消息队列
Nov 30 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
使用Python对Csv文件操作实例代码
May 12 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
详解Python正则表达式re模块
Mar 19 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
python 公共方法汇总解析
Sep 16 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
简单了解Python多态与属性运行原理
Jun 15 Python
简单了解如何封装自己的Python包
Jul 08 Python
Django+Django-Celery+Celery的整合实战
Jan 20 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
python批量读取文件名并写入txt文件中
Sep 05 #Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 #Python
Python学习笔记之列表推导式实例分析
Aug 13 #Python
Django中create和save方法的不同
Aug 13 #Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 #Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 #Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 #Python
You might like
PHP采集腾讯微博的实现代码
2012/01/19 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
python实现图片识别汽车功能
2018/11/30 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
儿科护理实习自我鉴定
2013/09/19 职场文书
服装创业计划书范文
2014/02/05 职场文书
优秀党员获奖感言
2014/02/18 职场文书
市场营销方案范文
2014/03/11 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
争先创优公开承诺书
2014/08/30 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
go goroutine 怎样进行错误处理
2021/07/16 Golang