2013-02-05 12 views
5

qpdf के साथ, आप बस प्रतिबंध/एन्क्रिप्शन एक PDF से तो जैसे निकाल सकते हैं:pdfbox साथ पीडीएफ से एन्क्रिप्शन निकालने के लिए, qpdf तरह

qpdf --decrypt infile outfile 

मैं जावा में PDFBox साथ एक ही बात करना चाहते हैं:

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

पीडीएफ के एन्क्रिप्शन के प्रकार पर निर्भर यह डिक्रिप्ट करने के लिए आसान (और कैसे यह प्रदर्शित करने के लिए) है शामिल करने के लिए हो सकता है। यह एन्क्रिप्शन को हटाने के लिए किसी भी प्राधिकरण (स्वामी पासवर्ड) के बिना किसी को अनुमति देने के लिए, इस एन्क्रिप्शन की अवधारणा को धड़कता है। आप पीडीएफ फाइलों एन्क्रिप्टेड है और मालिक पासवर्ड नहीं है, तो आप यदि आप एन्क्रिप्ट न किए गए संस्करण की आवश्यकता दस्तावेज़ मालिक को चालू करने के लिए उम्मीद कर रहे हैं। – 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

यह बहिष्कृत एपीआई है। कृपया http://stackoverflow.com/a/29676262/873282 पर उल्लिखित नई एपीआई का उपयोग करें। – koppor

+0

वहाँ नहीं है इस तरह के एक विधि doc.decrypt() - यह doc.setAllSecurityToBeRemoved (सही) का उपयोग करने के लिए पर्याप्त है, –

संबंधित मुद्दे