每個(gè)人都有秘密,每個(gè)公司也是。我們的很多文件不想給某些人看到,那就可以利用PDF的加密功能設(shè)置密碼。如果我們生成了很多PDF,一個(gè)一個(gè)地加密,將費(fèi)時(shí)費(fèi)力。這種重復(fù)的繁重的事兒交給Python,它會(huì)不辱使命,你會(huì)輕松百倍:) import PyPDF2 #可從PDF文檔提取信息 import os #用于獲取需要合并的PDF文件所在路徑 path='data/' # 文件夾路徑 #1.獲取需要加密的文件名及路徑 files=[] for file in os.listdir(path): if file.endswith('.pdf'): #排除文件夾內(nèi)的其它干擾文件,只獲取PDF文件 files.append(path+file) files >>['data/INV1.pdf', 'data/INV2.pdf', 'data/INV3.pdf', 'data/INV4.pdf', 'data/INV5.pdf']
以上是先獲取我們需要加密的PDF文件所在路徑及文件名。詳細(xì)解釋請見:實(shí)例4:用Python提取不同PDF文件中的頁面合并進(jìn)新的PDF文件 #2.獲取每個(gè)PDF文件并加密保存 for file in files: pdf_obj=open(file,'rb')# 以二進(jìn)制讀取,將保留PDF中的所有信息 pdf_reader=PyPDF2.PdfFileReader(pdf_obj) pdf_writer=PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): page_obj=pdf_reader.getPage(page_num) pdf_writer.addPage(page_obj) pdf_writer.encrypt('pass')# 加密,密碼設(shè)為'pass',可個(gè)性化調(diào)整 #寫入并保存PDF文件 pdf_output_file=open(file.split('.')[0]+'_sec.pdf','wb') #以二進(jìn)制寫入,將保留源PDF中的所有信息 pdf_writer.write(pdf_output_file) pdf_output_file.close()
我們使用for 循環(huán),逐個(gè)給每個(gè)PDF文件加密。首先打開PDF文件pdf_obj=open(file,'rb') ,然后讀取信息pdf_reader=PyPDF2.PdfFileReader(pdf_obj) ,然后建一個(gè)寫入變量pdf_writer=PyPDF2.PdfFileWriter() ,隨后遍歷每個(gè)PDF文件的每一頁,然后加入到寫入變量pdf_writer 。頁面加入完了之后,設(shè)置密碼pdf_writer.encrypt('pass') 。密碼設(shè)置完成后,就保存文件。為避免源文件出問題,此處我們保存為新的文件,命名方式為在源文件名后加上“_sec”。 其中file.split('.')[0]+'_sec.pdf' 的原理可通過如下理解。更多詳細(xì)解釋請參考:實(shí)例4:用Python提取不同PDF文件中的頁面合并進(jìn)新的PDF文件 
這個(gè)處理速度較慢,需要耐心等待。加密完成后的結(jié)果如下: 
我們試著打開一個(gè)加密后的文件,果然彈出輸入密碼的對話框,輸入我們設(shè)定的密碼即可進(jìn)入。 
所有源代碼和說明都在Jupyter notebook上完成,所用到的Excel 資料已上傳GitHub, 歡迎Fork或下載到本地隨意玩。。。轉(zhuǎn)載請注明出處,謝謝。 GitHub鏈接:
https://github.com/weidylan/Office_Automation_by_Using_Python
|