2

ドットネット実装をサポートするオープンソースおよび商用 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 ページで説明されているように、それぞれの「辞書」をチェックすることで検出できます。 /acrobat/pdfs/pdf_reference_1-7.pdf

于 2013-08-14T04:40:25.513 に答える
0

これは、商用 .NET コンポーネントであるAspose.Pdf for .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 に答える