当前位置: 首页 > 知识库问答 >
问题:

iText-读取使用未知随机所有者密码创建的PDF

笪建章
2023-03-14

删除此代码时出现以下异常:

public byte[] watermarking(byte[] orig) throws IOException {
        PdfReader pdfReader = new PdfReader(orig);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfStamper pdfStamper = null;

        try {
            pdfStamper = new PdfStamper(pdfReader, baos); //exc here
            ...
            }
            ...
        } catch (DocumentException var8) {
            ...
        }
    }
11:43:11,094 ERROR [de.mlp.xbg.pa.rest.SessionRR] (http-/127.0.0.1:8081-6) PdfReader not opened with owner password: java.lang.IllegalArgumentException: PdfReader not opened with owner password

但是,我被迫使用iText 2.1.7或更高版本(com.lowagieiText),而不是iText 5.0.0或更高版本(com.itextpdfiText)。pdfreader.unethicalreading在旧版本的库中不存在。

共有1个答案

酆翔宇
2023-03-14

这里似乎有一个变通方法,可以使iText忽略带有免责声明的密码:

我把法律问题留给你执行下面的代码。

public static PdfReader unlockPdf(PdfReader reader) {
    if (reader == null) {
        return reader;
    }
    try {
        java.lang.reflect.Field f = reader.getClass().getDeclaredField("encrypted");
        f.setAccessible(true);
        f.set(reader, false);
    } catch (Exception e) { /* ignore */ }
    return reader;
}
 类似资料:
  • 要求是一次处理一批PDF,成功后用用户密码加密每个PDF。 然而,这些PDF的加密之前随机生成的动态所有者密码(不知道任何人),以防止任何编辑。 我使用iText加密,如下所示: 但此代码抛出 是否有一个关于如何解决这个错误/绕过所有者密码的指导? 在这里我想说明的是,我们合法拥有这些PDF,所以没有犯罪/黑客行为。

  • null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:

  • 问题内容: 我想知道是否有一种方法可以选择随机生成的100和500之间的数字以及选择查询。 例如: 我不必将此数字存储在db中,仅用于显示目的。 我尝试过类似的方法,但是无法正常工作。 希望有人帮助我。谢谢 问题答案: 这应该给出您想要的: 通常,生成一个介于>和包含之间的数字。 更新资料 完整的声明应该起作用:

  • 本文向大家介绍Shell创建用户并生成随机密码脚本分享,包括了Shell创建用户并生成随机密码脚本分享的使用技巧和注意事项,需要的朋友参考一下 创建随机数的方法: 在Linux中有一个设备/dev/urandom是用来产生随机数序列的。利用该设备我们可以根据在需要生成随机字符串。 比如我们要产生一个8位的字母和数字混合的随机密码,可以这样: 其实,linux已经提供有个系统环境变量了。 可能有疑问

  • 我有使用JSCH通过sftp传输文件的代码。这段代码可以在我们的一个测试环境中工作,但不能在另一个环境中工作。它不工作的环境启用了FIPS模式,但我不确定这是否导致了问题。在这两种环境中,我都可以使用代码使用的私钥从命令行进行sftp。 JSch和ssh有一些相关的输出,但我不确定在这一点上还能做些什么。SSH密钥和已知主机文件似乎都已正确设置。