2013-02-05 14 views
5

Z qpdf, można po prostu usunąć ograniczenia/szyfrowania z pdf tak:usunąć szyfrowanie PDF z PDFBox, jak qpdf

qpdf --decrypt infile outfile 

chciałbym zrobić to samo z PDFBox w Javie:

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

Próbowałem tego z StandardDecryptionMaterial, ale nie mam pojęcia, co to jest hasło właściciela. Jak to robi qpdf?

dokument próbki: https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

+1

W zależności od rodzaju szyfrowania pliku PDF, to jest łatwe do odszyfrowania (jak inaczej go wyświetlić). Jednak koncepcja tego szyfrowania jest idealna, aby umożliwić każdemu, bez jakiejś autoryzacji (hasło właściciela), usunięcie szyfrowania. Jeśli masz zaszyfrowane pliki PDF i nie masz hasła właściciela, powinieneś zwrócić się do właściciela dokumentu, jeśli potrzebujesz wersji niezaszyfrowanej. – mkl

Odpowiedz

17

To, co trzeba by zrobić. Zainspirowany narzędziem PDF WriteDecodedDoc. Być może trzeba będzie obejmować BouncyCastle słoik (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

To jest wycofana funkcja API. Użyj nowego interfejsu API zgodnie z opisem pod adresem http://stackoverflow.com/a/29676262/873282. – koppor

+0

nie ma takiej metody doc.decrypt() - wystarczy użyć doc.setAllSecurityToBeRemoved (true); –

Powiązane problemy