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

时间:2014-02-24 13:04:13

标签: java pdf encryption itext itextpdf

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

我尝试使用像这样的代码

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

我可以打开使用此代码生成的PDF而无需输入任何密码。 但是当我尝试使用Adobe Acrobat打开它进行编辑时,它会以查看模式打开文档并抛出错误“这是安全文档。不允许编辑”。 错误的屏幕截图: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时,我不确定到底出了什么问题。

我在我的项目中使用以下一套罐子

  • iText的-2.1.7.jar
  • bcmail-jdk14.jar
  • bcprov-jdk14.jar

1 个答案:

答案 0 :(得分:0)

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

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