分享

实例6:用Python给PDF批量加密

 Four兄 2019-08-25

每个人都有秘密,每个公司也是。我们的很多文件不想给某些人看到,那就可以利用PDF的加密功能设置密码。如果我们生成了很多PDF,一个一个地加密,将费时费力。这种重复的繁重的事儿交给Python,它会不辱使命,你会轻松百倍:)

import PyPDF2 #可从PDF文档提取信息
import os #用于获取需要合并的PDF文件所在路径
path='data/' # 文件夹路径
#1.获取需要加密的文件名及路径
files=[]
for file in os.listdir(path):
if file.endswith('.pdf'): #排除文件夹内的其它干扰文件,只获取PDF文件
files.append(path+file)
files
>>['data/INV1.pdf',
'data/INV2.pdf',
'data/INV3.pdf',
'data/INV4.pdf',
'data/INV5.pdf']

以上是先获取我们需要加密的PDF文件所在路径及文件名。详细解释请见:实例4:用Python提取不同PDF文件中的页面合并进新的PDF文件

#2.获取每个PDF文件并加密保存
for file in files:
pdf_obj=open(file,'rb')# 以二进制读取,将保留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')# 加密,密码设为'pass',可个性化调整
#写入并保存PDF文件
pdf_output_file=open(file.split('.')[0]+'_sec.pdf','wb') #以二进制写入,将保留源PDF中的所有信息
pdf_writer.write(pdf_output_file)
pdf_output_file.close()

我们使用for循环,逐个给每个PDF文件加密。首先打开PDF文件pdf_obj=open(file,'rb'),然后读取信息pdf_reader=PyPDF2.PdfFileReader(pdf_obj),然后建一个写入变量pdf_writer=PyPDF2.PdfFileWriter(),随后遍历每个PDF文件的每一页,然后加入到写入变量pdf_writer。页面加入完了之后,设置密码pdf_writer.encrypt('pass')。密码设置完成后,就保存文件。为避免源文件出问题,此处我们保存为新的文件,命名方式为在源文件名后加上“_sec”。
其中file.split('.')[0]+'_sec.pdf'的原理可通过如下理解。更多详细解释请参考:实例4:用Python提取不同PDF文件中的页面合并进新的PDF文件

这个处理速度较慢,需要耐心等待。加密完成后的结果如下:

我们试着打开一个加密后的文件,果然弹出输入密码的对话框,输入我们设定的密码即可进入。

所有源代码和说明都在Jupyter notebook上完成,所用到的Excel 资料已上传GitHub, 欢迎Fork或下载到本地随意玩。。。转载请注明出处,谢谢。
GitHub链接:

https://github.com/weidylan/Office_Automation_by_Using_Python

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多