我见过支持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
}
答案 0 :(得分:1)
基本上可以通过检查PDF规范第115-136页所述的相应“词典”来检测所有内容:http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
答案 1 :(得分: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工作。