【问题标题】:Remove encryption from PDF file using Apache PDFBox使用 Apache PDFBox 从 PDF 文件中删除加密
【发布时间】:2013-01-19 22:47:17
【问题描述】:

使用QPDF,您可以像这样简单地从 PDF 文件中删除限制/加密

qpdf --decrypt infile outfile

我想用 Java 中的 PDFBox 做同样的事情:

PDDocument doc = PDDocument.load(inputFilename);
if (doc.isEncrypted()) {
   // remove the encryption to alter the document
}

我用StandardDecryptionMaterial 试过这个,但我不知道所有者密码是什么。 QPDF 是如何做到的?

示例文档:
https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

【问题讨论】:

  • 根据 PDF 的加密类型,很容易解密(否则如何显示)。但是,它打破了这种加密的概念,允许任何未经授权(所有者密码)的人删除加密。如果您有加密的 PDF 文件并且没有所有者密码,如果您需要未加密的版本,您应该求助于文档所有者。

标签: java pdf pdfbox


【解决方案1】:

这是您需要做的(灵感来自 PDFBox WriteDecodedDoc 命令行工具):

if (doc.isEncrypted()) {
    try {
        doc.decrypt("");
        doc.setAllSecurityToBeRemoved(true);
    } catch (Exception e) {
        throw new Exception("The document is encrypted and we can't decrypt it.", e);
    }
}

注意:您可能必须包含Bouncy Castle JAR。

【讨论】:

  • 这是已弃用的 API。请使用stackoverflow.com/a/29676262/873282 中概述的新 API。
  • 没有doc.decrypt()这样的方法——使用doc.setAllSecurityToBeRemoved(true)就足够了;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 2021-01-05
  • 2021-02-21
  • 2014-07-11
  • 1970-01-01
  • 2015-12-20
相关资源
最近更新 更多