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性能优化的20条建议
Oct 25 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
python发送邮件实例分享
Jul 28 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
python中的函数递归和迭代原理解析
Nov 14 Python
Python networkx包的实现
Feb 14 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
关于Python中进度条的六个实用技巧分享
Apr 05 Python
python缺失值填充方法示例代码
Dec 24 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读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
js局部刷新页面时间具体实现
2013/07/04 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
vue上传图片组件编写代码
2017/07/26 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python中字典dict常用操作方法实例总结
2015/04/04 Python
python动态参数用法实例分析
2015/05/25 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python中模块string.py详解
2017/03/12 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
基于python使用tibco ems代码实例
2019/12/20 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
大一自我鉴定范文
2013/12/27 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
工程技术员岗位职责
2014/03/02 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
Python 键盘事件详解
2021/11/11 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL