A assinatura digital em PDF permite proteger o documento antes de ser compartilhado com as partes interessadas. A falsificação no conteúdo de um documento PDF assinado digitalmente pode ser facilmente detectada e verificada. Para assinar digitalmente os documentos PDF de forma programática, mostrarei como adicionar e verificar assinaturas digitais em PDF usando Java. Abordaremos os seguintes cenários relacionados a assinaturas digitais em PDFs.
- Biblioteca Java para assinar digitalmente PDF
- Adicionar assinaturas digitais a PDF usando Java
- Assinar PDF digitalmente com um servidor de carimbo de data/hora usando Java
- Verificar assinatura digital em um PDF usando Java
Biblioteca Java para assinar digitalmente PDF
Para adicionar e verificar assinaturas digitais em PDF, usaremos Aspose.PDF for Java. Junto com outros recursos de manipulação de PDF, o Aspose.PDF para Java permite adicionar e verificar assinaturas digitais em PDFs sem problemas. Você pode baixar o JAR da API ou instalá-lo em seu aplicativo baseado em Maven.
Repositório:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Dependência:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.6</version>
</dependency>
Adicionar assinatura digital a um PDF usando Java
A seguir estão as etapas para adicionar uma assinatura digital a um documento PDF usando o Aspose.PDF para Java.
- Crie uma instância da classe Document e inicialize-a com o caminho do documento PDF.
- Inicialize a classe PdfFileSignature e passe para ela o objeto Document.
- Crie uma instância da classe PKCS7 e inicialize-a com o caminho de um certificado e a senha.
- Inicialize a classe DocMDPSignature para o tipo de assinatura MDP.
- Defina um Retângulo para colocar a assinatura na página do documento.
- Assine digitalmente o documento PDF usando o método PdfFileSignature.Certify().
- Salve o PDF assinado usando o método PdfFileSignature.Save().
O exemplo de código a seguir mostra como assinar digitalmente um PDF usando Java.
// Criar um objeto Documento
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Definir aparência da assinatura
signature.setSignatureAppearance("aspose-logo.png");
// Crie qualquer um dos três tipos de assinatura
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// Salvar arquivo PDF assinado digitalmente
signature.save("Digitally Signed PDF.pdf");
Assinar PDF digitalmente com um servidor de carimbo de data/hora usando Java
O Aspose.PDF para Java também permite adicionar assinaturas digitais ao PDF com o servidor TimeStamp. A classe TimestampSettings é usada para esta finalidade. O exemplo de código a seguir mostra como adicionar assinatura digital a um PDF com um servidor TimeStamp usando Java.
// Criar um objeto Documento
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Definir aparência da assinatura
signature.setSignatureAppearance("aspose-logo.png");
// Crie qualquer um dos três tipos de assinatura
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// Salvar arquivo PDF assinado digitalmente
signature.save("Digitally Signed PDF.pdf");
Verificar assinatura digital em um PDF usando Java
Quando você recebe um PDF assinado digitalmente, pode verificar sua assinatura com bastante facilidade. A seguir estão as etapas para verificar um PDF assinado digitalmente.
- Crie uma instância da classe PdfFileSignature.
- Vincule o arquivo PDF usando o método PdfFileSigntature.bindPdf(string).
- Verifique a validade da assinatura usando o método PdfFileSignature.verifySigned().
O exemplo de código a seguir mostra como verificar um documento PDF assinado digitalmente usando Java.
// Criar assinatura de arquivo PDF
PdfFileSignature pdfSign = new PdfFileSignature();
// Vincular PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Verifique a assinatura usando o nome da assinatura
if (pdfSign.verifySigned("Signature1"))
{
if (pdfSign.isCertified()) // Certified?
{
if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
{
// Faça alguma coisa
}
}
}
Conclusão
Neste artigo, você aprendeu como adicionar assinatura digital a um PDF usando Java. Além disso, vimos como verificar um arquivo PDF assinado digitalmente em algumas etapas. Você pode aprender mais sobre Java PDF API usando a documentação, bem como os exemplos de código-fonte hospedados no GitHub.