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写的ARP攻击代码实例
Jun 04 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
替换python字典中的key值方法
Jul 06 Python
Python一行代码实现快速排序的方法
Apr 30 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python 中@property的用法详解
Jan 15 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 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 数组字符串搜索array_search技巧
2016/07/05 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python中return语句用法实例分析
2015/08/04 Python
Python Requests 基础入门
2016/04/07 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python发展简史 Python来历
2019/05/14 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
关于抽烟的检讨书
2014/02/25 职场文书
股东出资证明书范例
2014/10/04 职场文书
怎么写工作检讨书
2014/11/16 职场文书
民间借贷借条如何写
2015/05/26 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang