×

pdf 加密 解密 密码 pypdf2

用Python为PDF文档加密和解密

鹭岛小千 鹭岛小千 发表于2021-08-04 21:48:16 浏览934 评论0

抢沙发发表评论

【问题描述】用Python如何为PDF文档批量加密和解密呢?

31-1.png


【小千解答】使用scandir获取文件清单,使用PyPDF2库实现加密和解密。

代码如下:

import os
from PyPDF2 import PdfFileReader,PdfFileWriter

xqpath = 'd:\\xqoffice'

# 加密
for xqfile in os.scandir(xqpath):
    pdf_reader = PdfFileReader(xqfile.path)
    pdf_writer = PdfFileWriter()
    for pagenum in range(pdf_reader.getNumPages()):
        pageobj = pdf_reader.getPage(pagenum)
        pdf_writer.addPage(pageobj)
    pdf_writer.encrypt('xqoffice.cn')
    with open(xqfile.path,'wb') as xqpdf:
        pdf_writer.write(xqpdf)

# 解密
for xqfile in os.scandir(xqpath):
    pdf_reader = PdfFileReader(xqfile.path)
    pdf_reader.decrypt('xqoffice.cn')
    pdf_writer = PdfFileWriter()
    for pagenum in range(pdf_reader.getNumPages()):
        pageobj = pdf_reader.getPage(pagenum)
        pdf_writer.addPage(pageobj)
    with open(xqfile.path,'wb') as xqpdf:
        pdf_writer.write(xqpdf)


注:如果运行代码报错如下,参照参考资料3修改PyPDF2库的源码。

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 8-9: ordinal not in range(256)


打赏码.png


【参考资料】

  1. Home page for the PyPDF2 project

  2. The pyPdf.pdf Module

  3. PyPDF2 编码问题

  4. PyPDF2详解

  5. 用Python给PDF批量加密

  6. python操作PDF------加水印及加密解密

  7. 深入学习Python解析并解密PDF文件内容的方法

  8. PDF 拆分、合并、水印添加、加密解密,这款 Python 库都能做


群贤毕至

访客