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语言使用技巧分享
May 31 Python
Python中is与==判断的区别
Mar 28 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Python列表(List)知识点总结
Feb 18 Python
int在python中的含义以及用法
Jun 27 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
基于python使用tibco ems代码实例
Dec 20 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
python asyncio 协程库的使用
Jan 21 Python
Python 批量下载阴阳师网站壁纸
May 19 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
js Math 对象的方法
2013/09/01 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
python实现维吉尼亚加密法
2019/03/20 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
pygame实现飞机大战
2020/03/11 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
浅谈JS的原型和原型链
2021/06/04 Javascript