如果要读取一份已加密的文档,你必须要使用正确的密码对文档解密才能访问,否则程序会报“PyPDF2.errors.PdfReadError:File has not been decrypted”的错误。调用PdfReader对象的decrypt()方法可以解密,把正确的密码传进去就可以了。
又有一个问题,如果一个文档没有被加密,但你又调用了decrypt()方法,程序也会报错,那么我们怎么知道一个文档有没有被加密?可以访问PdfReader对象的isEncrypted属性,如果文档被加密则它会返回True,所以使用pypdf2解密文档的正确写法如下:
from PyPDF2 import PdfReader
secret = "fLa5fpao%3paH"
reader = PdfReader("./pdf_ files/合并文档.pdf")
if reader.isEncrypted:
reader.decrypt(secret)
print(reader.getPage(0))