Como implementar serialização e criptografia de código QR personalizadas em PDFs usando GroupDocs.Signature para Java

Introdução

Na era digital, a assinatura segura de documentos é essencial para manter a integridade e a autenticidade dos dados. Conheça o GroupDocs.Signature para Java — uma biblioteca poderosa projetada para simplificar a adição de assinaturas a documentos. Este tutorial guiará você na implementação de serialização personalizada de QR code com criptografia em PDFs usando o GroupDocs.Signature para Java.

que você aprenderá:

  • Como configurar e configurar o GroupDocs.Signature para Java
  • Implementando serialização personalizada para assinaturas de código QR
  • Criptografando dados serializados em um código QR
  • Aplicando esses recursos para proteger seus documentos

Antes de começarmos a implementação, vamos garantir que você tenha tudo o que precisa para acompanhar.

Pré-requisitos

Para usar este tutorial de forma eficaz, certifique-se de atender aos seguintes pré-requisitos:

  1. Bibliotecas e dependências necessárias:

    • GroupDocs.Signature para Java versão 23.12 ou superior
    • Maven ou Gradle para gerenciamento de dependências (opcional)
  2. Requisitos de configuração do ambiente:

    • Java Development Kit (JDK) instalado em sua máquina
    • Uma compreensão básica da programação Java
  3. Pré-requisitos de conhecimento:

    • Familiaridade com Java e conceitos de programação orientada a objetos
    • Conhecimento básico de trabalho com PDFs em Java

Configurando GroupDocs.Signature para Java

Para começar, você precisa configurar a biblioteca GroupDocs.Signature no ambiente do seu projeto.

Instalação do Maven

Se você estiver usando Maven, adicione a seguinte dependência ao seu pom.xml arquivo:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Instalação do Gradle

Para usuários do Gradle, inclua esta linha em seu build.gradle arquivo:

implementation 'com.groupdocs:groupdocs-signature:23.12'

Download direto

Alternativamente, você pode baixar a versão mais recente diretamente de GroupDocs.Signature para versões Java.

Etapas de aquisição de licença

  • Teste gratuito: Comece baixando uma versão de teste para testar seus recursos.
  • Licença temporária: Você pode solicitar uma licença temporária, se necessário, o que lhe permite avaliar o produto sem quaisquer restrições.
  • Comprar: Para uso a longo prazo, considere comprar uma licença completa.

Uma vez instalado, inicialize o GroupDocs.Signature no seu projeto:

import com.groupdocs.signature.Signature;

public class SetupGroupDocs {
    public static void main(String[] args) {
        Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
        // Seu código aqui...
    }
}

Guia de Implementação

Agora, vamos nos aprofundar na implementação da serialização e criptografia de código QR personalizadas com o GroupDocs.Signature para Java.

Classe de serialização personalizada para assinaturas de código QR

Visão geral

Este recurso envolve a criação de uma classe que lida com a serialização de metadados em uma assinatura de código QR. DocumentSignatureData A classe armazena atributos como ID, autor, data de assinatura e fator de dados.

import com.groupdocs.signature.domain.extensions.serialization.FormatAttribute;
import java.math.BigDecimal;
import java.util.Date;

class DocumentSignatureData {
    @FormatAttribute(propertyName = "SignID")
    public String ID;

    public void setID(String value) { 
        this.ID = value; 
    }

    @FormatAttribute(propertyName = "SAuth")
    public String author;

    public void setAuthor(String value) {
        this.author = value;
    }

    @FormatAttribute(propertyName = "SDate", propertyFormat = "yyyy-MM-dd")
    public Date signed = new Date();

    public void setSigned(Date value) {
        this.signed = value;
    }

    @FormatAttribute(propertyName = "SDFact", propertyFormat = "N2")
    public BigDecimal dataFactor = new BigDecimal(0.01);

    public void setDataFactor(BigDecimal value) {
        this.dataFactor = value;
    }
}

Explicação

  • Atributos: O @FormatAttribute anotações especificam como cada atributo é serializado no código QR.
    • EU IAUm identificador exclusivo para a assinatura.
    • Autor:A pessoa que assinou o documento.
    • Data de assinatura: Carimbo de data e hora em que o documento foi assinado.
    • Fator de Dados: Dados numéricos adicionais associados à assinatura.

Assinatura de código QR com serialização e criptografia de dados personalizadas

Visão geral

Esta seção demonstra como assinar um documento usando um código QR que inclui dados serializados personalizados e criptografia.

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.Padding;
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import java.util.UUID;

class SignWithQRCodeCustomSerialization {
    String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf"; 
    String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", "SignedQRCodeCustomSerialization.pdf").getPath();

    public void signDocument() throws Exception {
        Signature signature = new Signature(filePath);

        // Implemente sua lógica de criptografia personalizada aqui
        IDataEncryption encryption = new CustomXOREncryption();

        DocumentSignatureData documentSignature = new DocumentSignatureData();
        documentSignature.setID(UUID.randomUUID().toString());
        documentSignature.setAuthor(System.getenv("USERNAME")); 
        documentSignature.setSigned(new Date());
        documentSignature.setDataFactor(new BigDecimal("11.22"));

        QrCodeSignOptions options = new QrCodeSignOptions();
        options.setData(documentSignature);
        options.setEncodeType(QrCodeTypes.QR);
        options.setDataEncryption(encryption);

        // Configurar alinhamento e aparência
        options.setHeight(100);
        options.setWidth(100);
        options.setVerticalAlignment(VerticalAlignment.Bottom);
        options.setHorizontalAlignment(HorizontalAlignment.Right);
        
        Padding padding = new Padding();
        padding.setRight(10);
        padding.setBottom(10);
        options.setMargin(padding);

        signature.sign(outputFilePath, options);
    }
}

Explicação

  • Criptografia personalizada: Implemente sua própria lógica de criptografia em CustomXOREncryption ou usar qualquer outro método de implementação IDataEncryption.
  • Opções de assinatura: Configure a aparência e o alinhamento do código QR com opções como altura, largura, preenchimento, etc.
  • Processo de assinatura: O signature.sign() O método aplica a assinatura do código QR ao documento.

Dicas para solução de problemas

  • Certifique-se de que todas as dependências estejam configuradas corretamente na sua ferramenta de compilação (Maven/Gradle).
  • Verifique se os caminhos dos arquivos para documentos de entrada e saída estão corretos.
  • Confirme se sua lógica de criptografia personalizada está implementada e integrada corretamente.

Aplicações práticas

Aqui estão algumas aplicações reais desse recurso:

  1. Assinatura de documentos legais: Assine contratos com segurança com metadados incorporados em códigos QR para garantir autenticidade.
  2. Processamento de faturas: Adicione automaticamente assinaturas criptografadas às faturas para maior segurança e rastreabilidade.
  3. Rastreamento Logístico: Use documentos assinados para rastrear remessas, incorporando identificadores exclusivos e carimbos de data/hora em códigos QR.
  4. Certificações acadêmicas: Incorpore informações dos alunos com segurança em certificados digitais usando assinatura de código QR