2

我见过支持 Dot net 实现的开源和商业 PDF 组件,我认为市场上几乎所有可用的组件,但奇怪的是识别文档是否受保护,每个都以异常而不是属性的形式显示.这背后有什么棘手的吗?我希望

Component.Load(inputFile.pdf);
If(Component.isProtected)
{
Component.Open(inputFile.pdf,password);
}
else
{
Component.Open(inputFile.pdf);
}

而不是以下常规方法

Try{
Component.Open(inputFile.pdf);
}
catch(Exception ex)
{
//bad password
//Some exception
}
4

2 回答 2

1

基本上可以通过检查 PDF 规范第 115-136 页所述的相应“字典”来检测所有内容:http ://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet /acrobat/pdfs/pdf_reference_1-7.pdf

于 2013-08-14T04:40:25.513 回答
0

Aspose.Pdf for .NET可以做到这一点,它是一个商业 .NET 组件。它有一个布尔属性IsEncrypted用于加密文件检测。示例代码如下。

// load the source PDF doucment
PdfFileInfo fileInfo = new PdfFileInfo(dataDir + "protected.pdf");
// determine that source PDF file is Encrypted with password
bool encrypted = fileInfo.IsEncrypted;
MessageBox.Show("Encrypted: " + encrypted);

我在 Aspose 工作,担任开发人员布道者。

于 2013-08-15T10:48:04.143 回答