Python实现PDF密码保护:PyPDF2 3.0.0+版本旧代码失效求助
适配PyPDF2 3.0.0+版本的PDF密码保护方案
旧代码失效原因
PyPDF2 3.0.0及以上版本对API进行了重构,旧版本的PdfFileReader、PdfFileWriter类以及numPages、getPage()等方法均被移除或替换,导致原有代码无法正常运行。
新版本可用代码
# 导入PyPDF2新版本的核心类 from PyPDF2 import PdfReader, PdfWriter # 创建PDF写入器对象 writer = PdfWriter() # 读取目标PDF文件 reader = PdfReader("myfile.pdf") # 遍历所有页面并添加到写入器中 for page in reader.pages: writer.add_page(page) # 设置加密密码 user_password = "pass" owner_password = "pass" # 所有者密码,可设置与用户密码不同,用于获取PDF修改权限 # 对PDF进行加密 writer.encrypt(user_pwd=user_password, owner_pwd=owner_password) # 将加密后的PDF写入新文件 with open("myfile_encrypted.pdf", "wb") as output_file: writer.write(output_file)
关键API变更说明
- 类名替换:
PdfFileReader→PdfReader,PdfFileWriter→PdfWriter - 页面获取方式:旧版通过
numPages+getPage(idx)的方式改为直接遍历reader.pages属性 - 方法命名规范:
addPage()→add_page(),Write()→write(),统一为下划线命名风格 - 加密参数:新版本
encrypt()方法需显式指定user_pwd(用户打开密码)和owner_pwd(所有者权限密码),旧版的单参数调用方式不再支持
内容的提问来源于stack exchange,提问作者gouravi tandel
相关产品推荐
相关产品推荐

