使用 PdfWriter 类的设置加密方法时,是否可以将所有者密码设置为某个值,将用户密码设置为 null 或空?
我尝试使用类似这样的代码
String OWNER = "test";
PdfWriter.setEncryption(null,OWNER.getBytes(),
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);
我无需输入任何密码即可打开使用此代码生成的 PDF。 但是,当我尝试使用 Adobe 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/