PDFBox - Criptografando um documento PDF
No capítulo anterior, vimos como inserir uma imagem em um documento PDF. Neste capítulo, discutiremos como criptografar um documento PDF.
Criptografar um documento PDF
Você pode criptografar um documento PDF usando os métodos fornecidos por StandardProtectionPolicy e AccessPermission classes.
o AccessPermissionclasse é usada para proteger o documento PDF atribuindo permissões de acesso a ele. Usando esta classe, você pode impedir que os usuários realizem as seguintes operações.
- Imprima o documento
- Modifique o conteúdo do documento
- Copie ou extraia o conteúdo do documento
- Adicionar ou modificar anotações
- Preencha os campos do formulário interativo
- Extraia texto e gráficos para acessibilidade a pessoas com deficiência visual
- Monte o documento
- Impressão com qualidade degradada
o StandardProtectionPolicy classe é usada para adicionar uma proteção baseada em senha a um documento.
A seguir estão as etapas para criptografar um documento PDF existente.
Etapa 1: Carregando um documento PDF existente
Carregue um documento PDF existente usando o método estático load() do PDDocumentclasse. Este método aceita um objeto de arquivo como parâmetro, uma vez que é um método estático, você pode invocá-lo usando o nome da classe, conforme mostrado abaixo.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Etapa 2: Criação de objeto de permissão de acesso
Instancie o AccessPermission classe como mostrado abaixo.
AccessPermission accessPermission = new AccessPermission();
Etapa 3: Criação do objeto StandardProtectionPolicy
Instancie o StandardProtectionPolicy classe passando a senha do proprietário, a senha do usuário e o AccessPermission objeto como mostrado abaixo.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Etapa 4: Definir o comprimento da chave de criptografia
Defina o comprimento da chave de criptografia usando o setEncryptionKeyLength() método conforme mostrado abaixo.
spp.setEncryptionKeyLength(128);
Etapa 5: Definir as permissões
Defina as permissões usando o setPermissions()método da classe StandardProtectionPolicy. Este método aceita umAccessPermission objeto como parâmetro.
spp.setPermissions(accessPermission);
Etapa 6: Protegendo o Documento
Você pode proteger seu documento usando o protect() método do PDDocumentclasse como mostrado abaixo. Passe oStandardProtectionPolicy objeto como parâmetro para este método.
document.protect(spp);
Etapa 7: Salvar o documento
Depois de adicionar o conteúdo necessário, salve o documento PDF usando o save() método do PDDocument classe conforme mostrado no seguinte bloco de código.
document.save("Path");
Etapa 8: Fechando o Documento
Por fim, feche o documento usando close() método de PDDocument classe como mostrado abaixo.
document.close();
Exemplo
Suponha que temos um documento PDF chamado sample.pdf, no caminho C:/PdfBox_Examples/ com páginas vazias como mostrado abaixo.
Este exemplo demonstra como criptografar o documento PDF mencionado acima. Aqui, vamos carregar o documento PDF chamadosample.pdfe criptografá-lo. Salve este código em um arquivo com o 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();
}
}
Compile e execute o arquivo Java salvo no prompt de comando usando os comandos a seguir.
javac EncriptingPDF.java
java EncriptingPDF
Após a execução, o programa acima criptografa o documento PDF fornecido exibindo a seguinte mensagem.
Document encrypted
Se você tentar abrir o documento sample.pdf, você não pode, uma vez que é criptografado. Em vez disso, ele solicita a digitação da senha para abrir o documento, conforme mostrado abaixo.