我一直致力於在PDF上設置密碼以防止複製/粘貼並允許打印,添加水印和設置所有者密碼以防止進一步的更改。如何最好使用ItextPDF來真正保護PDF?
一切運作良好,沒有問題。
然後我下載了這個免費的15天PDF清除工具,a-pdf。在眨眼時,無論密碼的複雜程度如何,它都會取消所有的保護(使用50個字符長度進行嘗試,將所有類型的字符)。
我看到在itextPDF中有其他方法來加密文檔。我使用以下內容:
File f = new File("C:/TEMP/zip/waterMarked.pdf");
String hardPassword = "D [email protected] CqAk+NQCW)[email protected]&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.
有誰知道更好的方法來保護PDF文件免受Java代碼?
您遇到的問題與您正在進行的類型或限制有關:爲顯示PDF,計算機需要訪問與從文檔中複製文本所需的數據幾乎相同的數據。您無法可靠地允許打印並防止從文檔複製和粘貼。你所嘗試的一切只是提高了線索。 –
請勿在禁止複製的情況下創建PDF。爲了複製文檔中的文本,必須打開OCR非常煩人,無論您是否嘗試阻止,我都會這樣做。 – endolith