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 26 Python
python验证码识别的实例详解
Sep 09 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
Django框架首页和登录页分离操作示例
May 28 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
pandas数据处理之绘图的实现
Jun 15 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
深入探讨opencv图像矫正算法实战
May 21 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
laravel入门知识点整理
2020/09/15 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
学习jQuey中的return false
2015/12/18 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python实现的栈(Stack)
2018/01/26 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
服装创业计划书范文
2014/02/05 职场文书
同居协议书范本
2014/04/23 职场文书
学校消防安全责任书
2014/07/23 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
贷款承诺书
2015/01/20 职场文书
给领导敬酒词
2015/08/12 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技