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函数的笔记整理
Apr 07 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
在Python的web框架中编写创建日志的程序的教程
Apr 30 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
python使用Matplotlib画条形图
Mar 25 Python
Python中正则表达式的用法总结
Feb 22 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
python中使用.py配置文件的方法详解
Nov 23 Python
pandas DataFrame.shift()函数的具体使用
May 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 Hex RGB颜色值互换的使用
2013/05/10 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
物理教师自荐信范文
2013/12/28 职场文书
教师辞职报告范文
2014/01/20 职场文书
党支部公开承诺书
2014/03/28 职场文书
公司奖励通知
2015/04/21 职场文书
运动会加油稿
2015/07/22 职场文书
运动会宣传稿100字
2015/07/23 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB