1、
遍历文件夹中所有的PDF,用命令行提供的口令对PDF加密
原来的文件名加上_encrepted.pdf后缀,保存每个加密的PDF
2、
尝试用一个程序读取并解密该文件,确保正确加密
3、
找到文件夹中所有加密的PDF文件包括子文件夹,利用提供的口令,创建PDF的解密拷贝
如果口令不对,则打印一条信息,并继续处理
#! python3
# PDF偏执狂.py
"""
1、
遍历文件夹中所有的PDF,用命令行提供的口令对PDF加密
原来的文件名加上_encrepted.pdf后缀,保存每个加密的PDF
2、
尝试用一个程序读取并解密该文件,确保正确加密
3、
找到文件夹中所有加密的PDF文件包括子文件夹,利用提供的口令,创建PDF的解密拷贝
如果口令不对,则打印一条信息,并继续处理
"""
import PyPDF2
import os
import sys
def EncodeAllPdfs():
'''加密每个PDF并且加上名称后缀'''
# 参数初始化
code = sys.argv[-1] # 命令行参数
# 扫描文件
for root, dirs, files in os.walk("."):
for file in files:
if file.endswith(".pdf"):
print(file+"正在加密!")
# 创建对象
pdfObj = open(file,"rb")
readerObj = PyPDF2.PdfFileReader(pdfObj)
writerObj = PyPDF2.PdfFileWriter()
# 加密操作
for pageNum in range(readerObj.numPages):
writerObj.addPage(readerObj.getPage(pageNum))
writerObj.encrypt(code)
# 创建新文件,增加后缀
resultPdf = open(file[0:-4]+"_encrepted.pdf","wb")
# 给新文件添加内容
writerObj.write(resultPdf)
# 收尾工作
pdfObj.close()
resultPdf.close()
print(file,"加密完成!","生成",file[0:-4]+"_encrepted.pdf")
def DeCodeAllPdfs():
'''解密所有pdf文件'''
code = sys.argv[-1] # 命令行参数
for roots, dirs, files in os.walk("."):
for file in files:
if file.endswith("_encrepted.pdf"):
pdfObj = open(file,"rb")
readerObj = PyPDF2.PdfFileReader(pdfObj)
if readerObj.decrypt(code):
print(file+"解密成功!")
else:
print(file+"解密失败!")
pdfObj.close()
#EncodeAllPdfs() #运行时,请去掉注释符号
#DeCodeAllPdfs()
注:一次只能运行一个子函数!!!
因为:
1.编码和解码同时进行不理想
2.code用的都是最后一个命令行参数,除非你改掉一个,才可以两个子函数同时运行