2013-02-05 24 views
5

Con QPDF, è possibile semplicemente eliminare le restrizioni/codifica da un PDF in questo modo:rimuovere la crittografia da pdf con PDFBox, come QPDF

qpdf --decrypt infile outfile 

vorrei fare la stessa cosa con PDFBox in Java:

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

Ho provato questo con StandardDecryptionMaterial, ma non ho idea di cosa sia la password del proprietario. Come fa qpdf a fare questo?

documento Esempio: https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

+1

A seconda del tipo di crittografia del PDF è facile da decifrare (in quale altro modo per visualizzarlo). Batte il concetto di questa crittografia, tuttavia, per consentire a chiunque senza alcuna autorizzazione (password del proprietario) di rimuovere la crittografia. Se si dispone di file PDF crittografati e non si dispone della password del proprietario, è necessario rivolgersi al proprietario del documento se si richiede una versione non crittografata. – mkl

risposta

17

Questo è quello che avresti bisogno di fare. Ispirato dallo strumento PDFBox WriteDecodedDoc. Potrebbe essere necessario includere il vaso 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

Questa è l'API deprecata. Utilizza la nuova API come descritto su http://stackoverflow.com/a/29676262/873282. – koppor

+0

non esiste un tale metodo doc.decrypt() - è sufficiente usare doc.setAllSecurityToBeRemoved (true); –

Problemi correlati