因为业务需要,需要批量生成证书文件。想到pdf可以实现读写编辑和打印权限。
实现的代码如下:
def add_encryption(input_pdf, output_pdf, password):
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader(input_pdf)
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
# user_pwd打开pdf文件需要的密码,owner_pwd修改读写编辑和打印权限的密码
pdf_writer.encrypt(user_pwd="", owner_pwd="SHACCAFFE2021", use_128bit=True)
with open(output_pdf, 'wb') as fh:
pdf_writer.write(fh)
但是仅通过上面的代码,只能实现文件打开密码的限制,没办法做到读写编辑和打印权限的限制。只能通过修改PyPDF2的pdf.py文件实现:
找到PyPDF2安装包的路径
Lib\site-packages\PyPDF2
修改pdf文件
# permit everything: # P = -1 # 禁止所有,只能打开 # P = -3904 # permit copy and printing only: P = -44
这里列出了几种情况,可以根据实际需要选择修改:
- P=-1 允许任何修改,没有做限制
- P=-3904 禁止所有修改,只能打开
- P=-44 只允许复制和打印