2013-04-11 2 views
9

आवश्यकता एक समय में पीडीएफ के एक बैच को संसाधित करना है और सफलता पर उनमें से प्रत्येक को उपयोगकर्ता पासवर्ड से एन्क्रिप्ट करना है।अज्ञात यादृच्छिक स्वामी पासवर्ड के साथ बनाए गए पीडीएफ को कैसे पढ़ा जाए?

हालांकि, इन पीडीएफ को किसी भी संपादन को रोकने के लिए यादृच्छिक रूप से जेनरेट किए गए डायनामिक मालिक पासवर्ड (किसी को भी नहीं पता) के साथ पहले एन्क्रिप्ट किया गया था।

मैं एन्क्रिप्शन के लिए iText का उपयोग के रूप में नीचे दिखाया गया है:

byte[] userPass = "user".getBytes(); 
byte[] ownerPass = "owner".getBytes(); 
PdfReader reader = new PdfReader("Misc.pdf"); 

PdfStamper stamper = new PdfStamper(reader, 
      new FileOutputStream("Processed_Encrypted.pdf")); 
stamper.setEncryption(userPass, ownerPass, 
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 
     | PdfWriter.DO_NOT_ENCRYPT_METADATA); 
stamper.close(); 
reader.close(); 

लेकिन इस कोड फेंकता एक com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner password

सकते हैं कि कैसे इस त्रुटि/बाईपास मालिक पासवर्ड को हल करने पर कुछ एक गाइड?

यहां मैं यह स्पष्ट करना चाहता हूं कि हम कानूनी रूप से इन पीडीएफ के मालिक हैं, इसलिए कोई अपराध/हैकिंग नहीं की गई है।

पीएस: समाधान iText तक सीमित नहीं है, किसी अन्य जावा लाइब्रेरी का उपयोग कर सकते हैं (नि: शुल्क या लाइसेंस प्राप्त) भी।

उत्तर

19

PdfReader में static boolean वैरिएबल नाम unethicalreading है। स्पष्ट कारणों से, यह चर डिफ़ॉल्ट रूप से false पर सेट है। आप इस तरह सच को यह चर सेट कर सकते हैं:

PdfReader.unethicalreading = true; 

अब से, PdfReader एक मालिक पासवर्ड की उपस्थिति पर ध्यान नहीं देगा। यदि उपयोगकर्ता पासवर्ड होता है तो यह केवल अपवाद फेंक देगा।

इसे अपने जोखिम पर उपयोग करें।

+0

धन्यवाद कि काम किया :) –

+0

धन्यवाद ब्रूनो ने मुझे – OMG

+0

धन्यवाद में मदद की। अच्छा कर रहा है। – swemon

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