首页 > 解决方案 > 如果使用 itextsharp 对 pdf 进行密码保护,因为 isencrypted 在最新库中为假,如何处理?

问题描述

如何识别 pdf 是否受密码保护,因为 IsEncrypted() 在使用 itextsharp 最新库时为假?

即使 PDF 文件受密码保护,我们仍然可以使用 ITEXT sharp 进行识别

我尝试了下面的代码仍然没有运气

currentReader = new PdfReader(filePath);
if (currentReader.IsEncrypted()) throw new Exception(" The Uploaded file is Encrypted");

标签: pdfitextitext7protection

解决方案


在 iText 7 中,在读取对象PdfReader之前未设置加密标志。这通常仅在它与 a关联PdfReader时发生PdfDocument,即当您将 a 实例化为构造函数参数时。PdfDocumentPdfReader

因此,做

currentReader = new PdfReader(filePath);
new PdfDocument(currentReader);
if (currentReader.IsEncrypted()) throw new Exception(" The Uploaded file is Encrypted");

当心,new PdfDocument(currentReader)可能会抛出自己的异常,特别是BadPasswordException这也意味着加密,但也可能只是表明 PDF 损坏的其他异常。


推荐阅读