我想知道 pdf 文档的哪些页面被加密。我想知道这一点,因为有些 pdf 文档被合并,其中一个文档进行了加密,而另一个文档则没有。所以这意味着某些页面没有加密。在这里,我尝试使用
doc_not_encrypted.pdf
和 doc_is_encrypted.pdf
: 创建可重现的代码
import pypdf
File = open("doc_not_encrypted.pdf", "rb")
reader = pypdf.PdfReader(File)
if reader.is_encrypted:
print("This document is encrypted!")
else:
print("This document is not encrypted!")
This document is not encrypted!
import pypdf
File = open("doc_is_encrypted.pdf", "rb")
reader = pypdf.PdfReader(File)
if reader.is_encrypted:
print("This document is encrypted!")
else:
print("This document is not encrypted!")
This document is encrypted!
现在假设文档已合并:
import pypdf
File = open("doc_merged.pdf", "rb")
reader = pypdf.PdfReader(File)
if reader.is_encrypted:
print("This document is encrypted!")
else:
print("This document is not encrypted!")
This document is encrypted!
当然它是加密的,但我想知道是否有人知道是否可以使用
pypdf
来确定实际加密的页面?
在这里您可以获取文件以使问题重现。
合并 PDF 文件时,页面内容将写入新文件。
因此,新的 PDF 容器文件为所有新页面提供了任何安全性。
根据库的不同,它可能会继承用于设置新文件特征的基础文件设置。
因此,新文件要么全部解除限制,要么是通用安全级别,而不知道任何源的设置。
在这种情况下,合并文件将被关闭,并在用于打开文件之前在所有其他对象上最后设置加密。
25 0 obj
<< /Filter /Standard /V 4 /R 4 /Length 128 /CF << /StdCF << /AuthEvent /DocOpen
/CFM /AESV2 /Length 16 >> >> /StmF /StdCF /StrF /StdCF /O <2568fb1816e3ac4a4660dd35e9436a729a68a2ac204243ff2e338ece412a7342>
/U <c686fdb45642751d551f73a81554ab1100000000000000000000000000000000> /P -3392
>>
endobj
该文件具有指向该加密对象的指针(
/Encrypt 25 0 R
)作为最终的写入任务。
trailer
<< /Size 26 /Root 17 0 R /Encrypt 25 0 R /Info 24 0 R /ID [ <241033727543d09e56c911229e7033f1>
<241033727543d09e56c911229e7033f1> ] >>
startxref
27556
%%EOF