In this tutorial, I am going to show you how to generate encrypted pdf from Java application using PDFBox.
PdfBox Dependency :
pom.xml
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
Encrypted pdf from Java :
The below example takes regular pdf as input and generates a new encrypted pdf (asking password when it opens).
JavaEncryptedPdf.java
package com.onlinetutorialspoint.pdfbox;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class JavaEncryptedPdf {
public static final int KEY_40 = 40;
public static final int KEY_128 = 128;
public static final int KEY_256 = 256;
public static void main(String args[]) {
try (PDDocument doc = PDDocument.load(new File("C:\\Desktop\\sample.pdf"))) {
// Can use any one of the above defined encryption key either 40,128,256
// But 256 will be available in PDFBox 2.0 or above versions.
int key = KEY_128;
// Giving permission to the user
AccessPermission permissions = new AccessPermission();
// Disable printing, everything else is allowed
permissions.setCanPrint(false);
// setting for readonly access
permissions.setReadOnly();
// Owner password (to open the file with all permissions) is "owner@123"
// User password (to open the file but with restricted permissions) is user@123
StandardProtectionPolicy spp = new StandardProtectionPolicy("owner@123", "user@123", permissions);
spp.setEncryptionKeyLength(key);
spp.setPermissions(permissions);
doc.protect(spp);
doc.save("C:\\Desktop\\sample-encrypted.pdf");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
By running the above example, it will generate sample-encrypted.pdf at a given location. We can open the sample-encrypted.pdf by providing the password either user or owner.
Asking for Password :
After giving the valid password :
Invalid Password :
Reference :
Happy Learning 🙂