我一直在为PDF设置密码,以防止复制/粘贴并允许打印,添加水印并设置所有者密码以防止进一步更改。
一切都按预期运行良好,没有问题。
然后我下载了这个免费的15天PDF解除工具a-pdf。它可以在瞬间删除所有保护,无论密码的复杂性(尝试使用50个字符长度和各种字符)。
我发现itextPDF中还有其他加密文档的方法。我使用了以下方法:
File f = new File("C:/TEMP/zip/waterMarked.pdf");
String hardPassword = "D 5BaIZQ@ CqAk+NQCW)7Dkgb@i&02ifu!2TMX*d 0TGK(j(Kq";
byte[] hardPasswordByte = hardPassword.getBytes();
PdfReader reader = new PdfReader("C:/TEMP/zip/Original_document-9.pdf");
FileOutputStream out = new FileOutputStream(f);
PdfStamper stamp = new PdfStamper(reader, out);
//first argument is the user password. If set to something it asks for password when opening file, not wanted.
stamp.setEncryption(null, hardPasswordByte, PdfWriter.ALLOW_PRINTING, true);
//do stuff on the stamper, save file.
有没有更好的方法可以从Java代码保护PDF文档?