背景:
接上篇文章《使用Python批量提取中信银行回单中的信息》,最终因工作需要,需将一份有多页的pdf,拆分成1页回单就是1个pdf,同时对拆分后的银行回单用身份证号命名。
实现路径:
首先,要先将一份多页银行回单的pdf,拆成1页一个pdf,这个前提是导出的原pdf文件中,就是一页一个回单的形式;
其次,拆分后的pdf,先进行名称,暂且按“拆分+页数”命名;
注意:这里不要直接按页数数字名义,重命名替换的时候容易匹配错误。
最后,因为银行回单中本身没有‘身份证号’,所以需要另外准备一个Excel表,列2列数据,第一列是“拆分1,拆分2……”,第二列是对应回单顺序上收款人的身份证号
代码实现如下:
# 1.拆分
import re
from PyPDF2 import PdfFileReader,PdfFileWriter
import os
import xlrd
#注意,out_path填写你电脑上要保存拆分好的pdf的文件夹地址,文件夹最后要加\\
out_Path = 'C:\\Users\\Desktop\\目录\\'
#读取原始PDF
pdfreader = PdfFileReader('未拆分前回单pdf地址')
number_of_pages = pdfreader.getNumPages()
#遍历PDF中每一页
for i in range(number_of_pages):
page = pdfreader.getPage(i)
pdfwriter = PdfFileWriter()
pdfwriter.addPage(page)
out_file_name = out_Path + "拆分" + str(i+1) + '.pdf'
#新的pdf以页数命名,保存到指定路径
with open(out_file_name,'wb') as out:
pdfwriter.write(out)
# 3.重命名
#dirpath后的地址为拆分后pdf所在文件夹的地址
dirpath = "C:\\Users\\Desktop\\目录"
#新名称所在的Excel路径
excelpath = "C:\\Users\\Desktop\\excelname.xls"
pattern = '.pdf'
xl = xlrd.open_workbook(excelpath)
sheet1 = xl.sheet_by_name('Sheet1')
#读取第一列数据
idlist = sheet1.col_values(0)
newlist = sheet1.col_values(1)
print("第一列是:",idlist)
print("第二列是:",newlist)
#文件列表
file_names = os.listdir(dirpath)
print("文件名:" , file_names)
#遍历目录中的所有文件
for i in file_names:
id = re.sub(pattern, "",i)
print("id:",id)
if id in idlist:
newname = newlist[idlist.index(id)]
print("idlist.index(id):",idlist.index(id))
print("newname:",newname)
#文件名称变更
os.renames(os.path.join(dirpath,i),os.path.join(dirpath,newname + ".pdf"))