在python需要加密PDF文件,需要下载PyPDF2依赖模块,
-
PyPDF2模块安装:
pip inastll PyPDF2
-
在文件导入
from PyPDF2 import PdfFileWriter, PdfFileReader
-
读取PDF文件:
reader = PdfFileReader(field_pdf)
PdfFileReader():参数可以File对象或支持标准读取的对象并寻找类似于File对象的方法。
也可能是表示PDF文件路径的字符串。 -
创建PDF写入对象:
writer = PdfFileWriter()
使用函数appendPagesFromReader(),参数为读取的PDF对象,
复制读取的数据,用于修改数据,writer.appendPagesFromReader(reader)
-
文件加密
调用函数encrypt(),用于加密文件writer.encrypt(user_pwd=self.password_name, owner_pwd=None,use_128bit=True)
user_pwd:“用户密码”,允许打开
owner_pwd:“所有者密码”,允许
默认情况下,所有者密码与用户密码相同。
bool use_128bit:标记是否使用128bit加密。如果为false,将使用40位加密。 -
文件保存:
打开文件,创建一个文件对象odoopdf=open('odoopdf.pdf','wb')
将odoopdf对象添加到write函数为PDF文件写入。
writer.write(odoopdf)
PDF文件加密参考
·示例:
from PyPDF2 import PdfFileWriter, PdfFileReader
def pdf_add_password(pdf_content, pwd=None):
"""
:param pdf_content: 文件内容或路径
:param pwd: 用户密码
"""
# 创建PDF对象,使用PdfFileReader读取PDF文件
reader = PdfFileReader(pdf_content)
# 创建PDF写入对象,使用PdfFileWriter类
writer = PdfFileWriter()
# 将读取的对象reader添加到写入对象writer,使用appendPagesFromReader函数添加
writer.appendPagesFromReader(reader)
if pwd:
# 加密
writer.encrypt(user_pwd=pwd, owner_pwd=None, use_128bit=True)
# 创建一个文件对象
odoopdf = open('odoopdf.pdf', 'wb')
# 将odoopdf对象添加到write函数为PDF文件写入。
writer.write(odoopdf)
# 文件路径
pdf_url = '/home/odoo/123.pdf'
pdf_add_password(pdf_url, '123')