How to protect an already existing PDF with a password?

Tags: password encryptioniText 7

How to set 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);
pdfDoc.close();

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 this link if you want to see how to answer this question in iText 5.