for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt('a123') # 设置密码为 a123 with open(path + r'\test.pdf', 'wb') as out: pdf_writer.write(out)
上面代码的运行逻辑是:实例化一个 PDF 写入器和读取器,读取器读取完目标 PDF 文件后,一页一页交给写入器,然后对写入器设置密码并输出。看一下运行结果:
可见这个 PDF 文件成功设置上了密码,如果有多个PDF需要加密,可以写一个简单的循环利用上述脚本批量处理,此处不再展开说明。
PDF 已知密码解密
如果知道密码的情况下,想直接取消 PDF 的加密,可以用 .decrypt,解密的过程需要读取器和写入器共同配合。但区别于加密 .encrypt,.decrypt 是针对读取器进行解密的,而不是写入器
from PyPDF2 import PdfFileWriter, PdfFileReader path = r'C:\xxx'
for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open(path + r'\test.pdf', 'wb') as out: pdf_writer.write(out)