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 list转dict示例分享
Jan 28 Python
Python网站验证码识别
Jan 25 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
python实现简易淘宝购物
Nov 22 Python
Python类的动态绑定实现原理
Mar 21 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python 逐步回归算法
Apr 06 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的开合式多级菜单程序
2006/10/09 PHP
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
python 控制语句
2011/11/03 Python
django 多数据库配置教程
2018/05/30 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
上班离岗检讨书
2014/01/27 职场文书
主管会计岗位职责
2014/03/13 职场文书
感恩之星事迹材料
2014/05/03 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
525心理健康活动总结
2015/05/08 职场文书
合理化建议书范文
2015/09/14 职场文书
python元组打包和解包过程详解
2021/08/02 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python