python 对PDF文件加密、设置只读、不可编辑pypdf2

您所在的位置:网站首页 如何将pdf文件设置为只读 python 对PDF文件加密、设置只读、不可编辑pypdf2

python 对PDF文件加密、设置只读、不可编辑pypdf2

2024-07-14 22:45| 来源: 网络整理| 查看: 265

问题:

想对PDF加密,设置只读权限,让别人不能修改我的PDF。

pypdf2的使用:https://www.jianshu.com/p/e3d384e51db9(这个是随便搜的一篇中文的,其实它就是官方文档翻译了一下。)

pypdf2官方文档:https://pythonhosted.org/PyPDF2/

 

给PDF添加水印后,如何设置只读权限呢?

(关于PDF添加水印,可以看之前的文章:

https://blog.csdn.net/he99774/article/details/102962731)

答案是:加密。

 

所以这里用到了pypdf2的加密功能。

但是pypdf2的加密功能只能设置密码,是不能设置对应的权限的(比如编辑、复印等权限)。

所以这里修改了pypdf2的源代码来简单的实现PDF文件不可编辑。

 

具体操作如下。

1.pypdf2如下路径,有一个pdf.py

2.修改pdy.py。找到P=-1,修改为P=-3904

(这里的P代表权限,-3904表示除了阅读外,关闭其他所有权限。更多的参数设置我还没有查,可以自行搜索。)

 

修改P后,然后正常使用pypdf2的加密函数就可以了。

加密代码如下:

from PyPDF2 import PdfFileWriter, PdfFileReader #给pdf批量加水印 #input_pdf = 'y8.PDF',输入文件 #output = 'y8_q1.pdf',输出pdf #watermark = 's.pdf'水印文件 def create_watermark(input_pdf, output, watermark): watermark_obj = PdfFileReader(watermark) watermark_page = watermark_obj.getPage(0) pdf_reader = PdfFileReader(input_pdf) pdf_writer = PdfFileWriter() # 给所有页面添加水印 for page_num in range(pdf_reader.getNumPages()): print("page:",page_num) page = pdf_reader.getPage(page_num) if page_num%2 == 0: page.mergePage(watermark_page) pdf_writer.addPage(page) ###这一行是加密,如果只想加密,上面的添加水印都可以删除。 pdf_writer.encrypt(user_pwd="",owner_pwd="xx1234") # 设置pdf密码 # pdf_writer. # pdf_writer.encrypt() with open(output, 'wb') as out: pdf_writer.write(out)

 

解决方案来源:https://stackoverflow.com/questions/13109867/python-pdf-set-password-protected-print-copy-paste-options



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3