Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove encryption from PDF file using Apache PDFBox

Tags:

java

pdf

pdfbox

With QPDF, you can simply remove restrictions / encryption from a PDF file like so:

qpdf --decrypt infile outfile

I would like to do the same thing with PDFBox in Java:

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

I've tried this with StandardDecryptionMaterial, but I have no idea what the owner password is. How does QPDF does this?

Sample document:
https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

like image 414
Josh Nankin Avatar asked Feb 05 '13 04:02

Josh Nankin


1 Answers

This is what you'd need to do (inspired from the PDFBox WriteDecodedDoc command line tool):

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);
    }
}

Note: you may have to include the Bouncy Castle JAR.

like image 100
Josh Nankin Avatar answered Oct 16 '22 08:10

Josh Nankin