PDFBox - Crittografia di un documento PDF
Nel capitolo precedente abbiamo visto come inserire un'immagine in un documento PDF. In questo capitolo, discuteremo come crittografare un documento PDF.
Crittografia di un documento PDF
È possibile crittografare un documento PDF utilizzando i metodi forniti da StandardProtectionPolicy e AccessPermission classes.
Il AccessPermissionclass viene utilizzata per proteggere il documento PDF assegnandogli i permessi di accesso. Utilizzando questa classe, è possibile impedire agli utenti di eseguire le seguenti operazioni.
- Stampa il documento
- Modifica il contenuto del documento
- Copia o estrai il contenuto del documento
- Aggiungi o modifica annotazioni
- Compila i campi del modulo interattivo
- Estrai testo e grafica per l'accessibilità alle persone con problemi di vista
- Assembla il documento
- Stampa in qualità degradata
Il StandardProtectionPolicy class viene utilizzata per aggiungere una protezione basata su password a un documento.
Di seguito sono riportati i passaggi per crittografare un documento PDF esistente.
Passaggio 1: caricamento di un documento PDF esistente
Carica un documento PDF esistente utilizzando il metodo statico load() del PDDocumentclasse. Questo metodo accetta un oggetto file come parametro, poiché si tratta di un metodo statico, è possibile richiamarlo utilizzando il nome della classe come mostrato di seguito.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Passaggio 2: creazione dell'oggetto autorizzazione di accesso
Istanziare il file AccessPermission classe come mostrato di seguito.
AccessPermission accessPermission = new AccessPermission();
Passaggio 3: creazione dell'oggetto StandardProtectionPolicy
Istanziare il file StandardProtectionPolicy class passando la password del proprietario, la password dell'utente e il file AccessPermission oggetto come mostrato di seguito.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Passaggio 4: impostazione della lunghezza della chiave di crittografia
Impostare la lunghezza della chiave di crittografia utilizzando il setEncryptionKeyLength() metodo come mostrato di seguito.
spp.setEncryptionKeyLength(128);
Passaggio 5: impostazione delle autorizzazioni
Imposta le autorizzazioni utilizzando il setPermissions()metodo della classe StandardProtectionPolicy. Questo metodo accetta un fileAccessPermission oggetto come parametro.
spp.setPermissions(accessPermission);
Passaggio 6: protezione del documento
Puoi proteggere il tuo documento usando il protect() metodo del PDDocumentclasse come mostrato di seguito. Passa ilStandardProtectionPolicy oggetto come parametro di questo metodo.
document.protect(spp);
Passaggio 7: salvataggio del documento
Dopo aver aggiunto il contenuto richiesto, salvare il documento PDF utilizzando il file save() metodo del PDDocument class come mostrato nel seguente blocco di codice.
document.save("Path");
Passaggio 8: chiusura del documento
Infine, chiudi il documento usando close() metodo di PDDocument classe come mostrato di seguito.
document.close();
Esempio
Supponiamo di avere un documento PDF denominato sample.pdf, nel percorso C:/PdfBox_Examples/ con pagine vuote come mostrato di seguito.
Questo esempio mostra come crittografare il documento PDF sopra menzionato. Qui, caricheremo il documento PDF denominatosample.pdfe crittografalo. Salva questo codice in un file con nomeEncriptingPDF.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Compilare ed eseguire il file Java salvato dal prompt dei comandi utilizzando i seguenti comandi.
javac EncriptingPDF.java
java EncriptingPDF
Al momento dell'esecuzione, il programma di cui sopra crittografa il documento PDF fornito visualizzando il seguente messaggio.
Document encrypted
Se provi ad aprire il documento sample.pdf, non è possibile, poiché è crittografato. Invece, richiede di digitare la password per aprire il documento come mostrato di seguito.