How do I set a password for an existing PDF?

Posted on StackOverflow on Dec 2, 2014 by Sreekanth P

It's as simple as this:

PdfReader reader = new PdfReader(src);
WriterProperties props = new WriterProperties()
        .setStandardEncryption(USERPASS, OWNERPASS, EncryptionConstants.ALLOW_PRINTING,
                EncryptionConstants.ENCRYPTION_AES_128 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA);
PdfWriter writer = new PdfWriter(new FileOutputStream(dest), props);
PdfDocument pdfDoc = new PdfDocument(reader, writer);

Note that USERPASS and OWNERPASS are of type byte[]: public static byte[] USERPASS = "superuser".getBytes(); public static byte[] OWNERPASS = "superowner".getBytes();

You have different options for the permissions (look for EncryprionConstants starting with ALLOW_) and also you can chose from different encryption algorithms.

Click How to protect an already existing PDF with a password? if you want to see how to answer this question in iText 5.