2013-02-05 101 views
5

隨着qpdf,你可以簡單地從PDF刪除限制/加密,像這樣:從PDFBOX PDF中刪除加密,像qpdf

qpdf --decrypt infile outfile 

我願做同樣的事情PDFBox的在Java中:

PDDocument doc = PDDocument.load(inputFilename); 
if(doc.isEncrypted()) 
{ 
    //remove the encryption to alter the document 
} 

我已經試過StandardDecryptionMaterial這一點,但我不知道主人密碼。 qpdf如何做到這一點?

樣品文件:https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

+1

根據的PDF加密類型很容易解密(怎麼回事,以顯示它)。但是它擊敗了這種加密的概念,允許沒有授權的人(所有者密碼)刪除加密。如果您已加密PDF文件並且沒有所有者密碼,則如果您需要未加密的版本,則需要轉向文檔所有者。 – mkl

回答

17

這是你需要做什麼。受到了PDFBox WriteDecodedDoc工具的啓發。您可能需要包括BouncyCastle的罐子(http://www.bouncycastle.org/latest_releases.html

if (doc.isEncrypted()) { 
     try { 
      doc.decrypt(""); 
      doc.setAllSecurityToBeRemoved(true); 
     } 
     catch (Exception e) { 
      throw new Exception("The document is encrypted, and we can't decrypt it.", e); 
     } 
    } 
+0

這是不贊成使用的API。請按照http://stackoverflow.com/a/29676262/873282中所述使用新的API。 – koppor

+0

沒有這樣的方法doc.decrypt() - 這是足夠使用doc.setAllSecurityToBeRemoved(真); –