java - 在 iText 中使用 setEncryption 方法时是否可以仅设置所有者密码?

标签 java pdf encryption itext itextpdf

使用 PdfWriter 类的设置加密方法时,是否可以将所有者密码设置为某个值,将用户密码设置为 null 或空?

我尝试使用类似这样的代码

 String OWNER = "test";
 PdfWriter.setEncryption(null,OWNER.getBytes(),
                        PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);

我无需输入任何密码即可打开使用此代码生成的 PDF。 但是,当我尝试使用 Adob​​e Acrobat 打开它进行编辑时,它会在查看模式下打开文档并抛出错误“这是 protected 文档。不允许编辑。” 错误截图:http://dropbox.com/s/1ef551o1z0n9ug1/editerror.jpg

知道为什么会发生这种情况吗?我做错了什么吗?

另外一点,

我用

生成了这个新文档
PdfWriter.setEncryption("test1".getBytes(),"test".getBytes(), 
                        PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); 

链接:http://dropbox.com/s/8jeia7ezervrz18/Test_Success.pdf

输入密码“test1”后我可以查看它,并可以使用密码“test”对其进行编辑。当我在之前的情况下将 USER 作为 null 传递时,我不确定到底出了什么问题。

我在我的项目中使用以下一组 jars

  • itext-2.1.7.jar
  • bcmail-jdk14.jar
  • bcprov-jdk14.jar

最佳答案

    private static String user = "";
    private static String admin = "ADMIN";      
writer.setEncryption(admin.getBytes(), user.getBytes(),
                PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);

通过上述方法您可以设置管理员密码。您的类路径设置可能存在问题。在 Gardle 上使用 Mavel 获取依赖项

关于java - 在 iText 中使用 setEncryption 方法时是否可以仅设置所有者密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21988646/

相关文章:

java - 未应用 Spring 模型

php - 如何从文档中提取/识别文本?

iphone - 如果不是 "IPHONE UDID"使用什么?

javascript - Node.js 和 Mongodb 源代码的安全 + 加密选项

java - 尝试从文件中单独读取每一行代码

java - 如果不是 GL_QUADS,那又如何呢?

java - 如何在 Docker 容器中安装/添加 jdk 7

windows - 通过批处理脚本 (.bat) 关闭 pdf 文件

c# - ItextSharp - 使用 C# 自动填写 pdf 表单 - 复选框问题

Java - 使用数组中的值的replace()方法正在更改数组值?