【问题标题】:How to read the permissions of an encrypted PDF file?如何读取加密PDF文件的权限?
【发布时间】:2021-06-21 13:10:15
【问题描述】:

我正在使用 iText v7 阅读 PDF 文件,并且正在检测加密文件,如下所示:

try (final PdfReader pdfReader = new PdfReader(file.getAbsolutePath())) {
     PdfDocument document = new PdfDocument(pdfReader);
    System.out.println("encrypted = " + pdfReader.isEncrypted());
}

我想知道对 PDF 文件允许哪些单独的权限(打印、复制文本、修改内容、修改注释)。

我知道getPermissions 方法应该返回从文件读取的权限,但我没有设法检查相关标志,即以下代码不会产生正确的结果:

final long perm = - pdfReader.getPermissions();
if ((perm & EncryptionConstants.ALLOW_PRINTING) == EncryptionConstants.ALLOW_PRINTING) {
    System.out.println("Allow printing");
}

我找到的文档在这个主题上有点简洁,主要详细说明了如何创建具有特定权限的加密文件。

【问题讨论】:

    标签: java itext


    【解决方案1】:

    this question 的回答启发,回答我自己的问题。

    使用PdfEncryptor类解码long方法返回的long中的权限标志:

    final int perm = (int) pdfReader.getPermissions();
    if (PdfEncryptor.isDegradedPrintingAllowed(perm)) {
        System.out.println("Allow degraded printing";
    }
    

    在 API 中发现的唯一异常是 getPermissions 返回 longPdfEncryptor 方法将 int 作为参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2011-05-27
      • 2014-05-19
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多