Criar PDF Data Matrix com Código de Barras HIBC em Java
Se você está desenvolvendo software de logística farmacêutica ou de saúde, provavelmente já se deparou com o problema de rastreamento baseado em papel, assinaturas perdidas e pesadelos de auditoria. Criar um PDF Data Matrix que incorpora um código de barras HIBC LIC resolve esses problemas ao fornecer um rastro à prova de violação, legível por máquina, que resiste à impressão, digitalização e revisão regulatória. Neste tutorial você verá exatamente como adicionar suporte a PDF com código QR, bem como aos formatos Aztec e Data Matrix, usando o GroupDocs.Signature para Java.
Respostas Rápidas
- Qual biblioteca manipula códigos de barras HIBC em Java? GroupDocs.Signature para Java.
- Qual formato de código de barras é o mais compacto? Data Matrix – ideal para rótulos pequenos.
- Posso adicionar QR e Data Matrix ao mesmo PDF? Sim, basta criar
QrCodeSignOptionsseparados. - Preciso de conexão com a internet em tempo de execução? Não, a biblioteca funciona totalmente offline após a instalação.
- Qual versão do Java é recomendada? Java 11+ para desempenho de nível de produção.
O que é assinatura de PDF com código de barras HIBC?
A classe Signature no GroupDocs.Signature para Java representa um documento PDF e fornece métodos para incorporar códigos de barras HIBC como assinaturas digitais. Ao assinar um PDF com um código de barras HIBC, você cria um registro verificável e à prova de violação que pode ser escaneado em qualquer ponto da cadeia de suprimentos.
Por que usar Data Matrix e códigos QR juntos?
O GroupDocs.Signature suporta mais de 50 formatos de entrada e saída e pode processar PDFs com centenas de páginas sem carregar o arquivo inteiro na memória. Usar Data Matrix para rótulos densos e de área pequena e QR para documentos mais espaçosos oferece o melhor equilíbrio entre legibilidade, capacidade de dados (até 4.296 caracteres para QR) e eficiência de espaço de impressão.
Pré‑requisitos
- JDK 11 ou superior (Java 8 funciona, mas Java 11+ é recomendado para desempenho ideal).
- IDE como IntelliJ IDEA, Eclipse ou VS Code com extensões Java.
- Maven ou Gradle para gerenciamento de dependências (exemplos abaixo).
- PDF de exemplo (por exemplo,
sample.pdf) para testar a implementação. - Licença válida do GroupDocs.Signature (teste gratuito para desenvolvimento, licença paga para produção).
Configurando GroupDocs.Signature para Java
Configuração Maven
Adicione a dependência ao seu pom.xml:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Configuração Gradle
Para projetos Gradle, adicione isto ao seu build.gradle:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Opção de Download Direto
Você também pode baixar o arquivo JAR diretamente em GroupDocs.Signature for Java releases e adicioná‑lo ao classpath do seu projeto manualmente. Essa abordagem funciona bem em ambientes com rede restrita.
Obtendo uma Licença
Solicite um teste gratuito ou licença temporária ao GroupDocs para remover marcas d’água e desbloquear todos os recursos. Implantações em produção exigem licença adquirida.
Inicialização Básica
A classe Signature é o ponto de entrada para todas as operações de assinatura. Ela carrega o PDF, aplica o código de barras e grava o arquivo assinado.
import com.groupdocs.signature.Signature;
class InitializeSignature {
public static void main(String[] args) {
Signature signature = new Signature("sample.pdf");
// Proceed with signing operations...
}
}
Como criar um PDF Data Matrix com código de barras HIBC?
Carregue seu PDF de origem, configure um objeto QrCodeSignOptions para o formato Data Matrix e chame sign() – isso é tudo que você precisa para incorporar um código de barras HIBC Data Matrix compatível. As etapas a seguir mostram o código exato necessário. QrCodeSignOptions define as configurações para uma assinatura de código de barras, como tipo, conteúdo, tamanho e posição.
- Importe as classes necessárias – elas dão acesso ao motor de assinatura e às opções de Data Matrix.
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
- Instancie o objeto
Signaturecom caminhos absolutos para os arquivos de origem e destino.
String sourceFilePath = "YOUR_DOCUMENT_DIRECTORY";
String destinFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithHIBCLICQR.pdf";
final Signature signature = new Signature(sourceFilePath);
- Configure as opções de Data Matrix – defina a string HIBC, escolha
QrCodeTypes.HIBCLICDataMatrixe defina as coordenadas de posicionamento.QrCodeTypesenumera os formatos de código de barras suportados para assinaturas HIBC.
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICQR);
hibcLic_QR.setLeft(1); // Set the position from left
hibcLic_QR.setTop(1); // Set the position from top
hibcLic_QR.setReturnContent(true); // Return content after signing
hibcLic_QR.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- Aplique a assinatura ao PDF.
signature.sign(destinFilePath, hibcLic_QR);
- Libere os recursos para fechar manipuladores de arquivos e evitar vazamentos de memória.
finally {
if (signature != null) signature.dispose();
}
Exemplo completo em funcionamento
Aqui está o fluxo completo em um único bloco (os marcadores representam o código exato que você colará dos trechos anteriores):
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
public class HibcQrSigning {
public static void main(String[] args) {
String sourceFilePath = "sample.pdf";
String destinFilePath = "output/SignWithHIBCLICQR.pdf";
Signature signature = null;
try {
signature = new Signature(sourceFilePath);
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions(
"A123PROD30917/75#422011907#GP293",
QrCodeTypes.HIBCLICQR
);
hibcLic_QR.setLeft(1);
hibcLic_QR.setTop(1);
hibcLic_QR.setReturnContent(true);
hibcLic_QR.setReturnContentType(FileType.PNG);
signature.sign(destinFilePath, hibcLic_QR);
System.out.println("PDF signed successfully with HIBC QR code");
} catch (Exception e) {
System.err.println("Error signing PDF: " + e.getMessage());
e.printStackTrace();
} finally {
if (signature != null) signature.dispose();
}
}
}
Resposta direta (40–70 palavras)
Para criar um PDF Data Matrix, instancie Signature com seu PDF de origem, configure QrCodeSignOptions para QrCodeTypes.HIBCLICDataMatrix e forneça uma string HIBC formatada corretamente, então chame signature.sign(outputPath, options). A biblioteca grava o PDF assinado no destino, preservando o layout e incorporando o código de barras como assinatura à prova de violação.
Como adicionar QR code PDF usando GroupDocs.Signature?
Carregue o PDF, configure QrCodeSignOptions para o formato QR e invoque sign(). Esse padrão de duas linhas funciona para qualquer tamanho de PDF e dimensiona automaticamente a imagem QR para legibilidade ótima. QrCodeSignOptions configura a assinatura do código QR, incluindo seu conteúdo e propriedades visuais. Ele posiciona o código com base nas coordenadas definidas, garantindo que não sobreponha conteúdo existente e permaneça escaneável após a impressão.
- Importe classes específicas de QR
QrCodeSignOptions hibcLic_AZ = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICAztec);
hibcLic_AZ.setLeft(1); // Set the position from left
hibcLic_AZ.setTop(200); // Set the position from top
hibcLic_AZ.setReturnContent(true); // Return content after signing
hibcLic_AZ.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- Crie e configure as opções de QR – observe o uso de
QrCodeTypes.HIBCLICQR.
signature.sign(destinFilePath, hibcLic_AZ);
- Assine o documento
QrCodeSignOptions hibcLic_DM = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICDataMatrix);
hibcLic_DM.setLeft(1); // Set the position from left
hibcLic_DM.setTop(400); // Set the position from top
hibcLic_DM.setReturnContent(true); // Return content after signing
hibcLic_DM.setReturnContentType(FileType.PNG); // Specify return content type as PNG
Resposta direta: Use
QrCodeTypes.HIBCLICQRemQrCodeSignOptions, defina a string de conteúdo HIBC, posicione o código comsetLeft()esetTop(), então chamesignature.sign(outputPath, options). O código QR é incorporado instantaneamente, pronto para captura por smartphone ou scanner.
Erros Comuns a Evitar
1. Esquecer de Liberar Recursos
Errado:
Signature signature = new Signature("sample.pdf");
signature.sign(destinFilePath, options);
// Oops, no dispose() call
Correção: Envolva o uso de Signature em um bloco try‑with‑resources ou chame explicitamente close() em um bloco finally.
2. Usar Strings de Formato HIBC Incorretas
Errado: Usar strings genéricas como “12345”.
Correção: Siga o padrão HIBCC (por exemplo, A123PROD30917/75#422011907#GP293). Valide com o validador online HIBCC.
3. Codificar Caminhos de Arquivo
Errado:
String sourceFilePath = "C:/Users/John/Documents/test.pdf";
Correção: Armazene caminhos em um arquivo de configuração ou variável de ambiente e leia‑os em tempo de execução.
4. Ignorar Conflitos de Posicionamento de Código de Barras
Coloque os códigos de barras longe de texto ou assinaturas existentes. Use coordenadas PDF (origem no canto inferior esquerdo) e teste com uma amostra impressa.
5. Não Testar com Scanners Reais
Imprima o PDF assinado e escaneie‑o com o hardware exato usado no seu fluxo de trabalho. Verifique a legibilidade em diferentes qualidades de impressão.
Aplicações Práticas na Saúde
| Cenário | Código de Barras Recomendado | Por que se adequa |
|---|---|---|
| Distribuição farmacêutica | QR Code | Alta capacidade de dados, amplamente escaneado por smartphones. |
| Gestão de inventário | Data Matrix | Pequena pegada, ideal para rótulos de prateleira densos. |
| Conformidade regulatória (FDA 21 CFR Part 11) | QR + Data Matrix | Formato duplo fornece redundância e auditabilidade. |
| Rastreamento de dispositivos médicos | Aztec Code | Tamanho compacto funciona em embalagens com espaço limitado. |
Considerações de Desempenho e Melhores Práticas
Padrão de Processamento em Lote
List<String> filesToSign = getFileList();
for (String filePath : filesToSign) {
Signature signature = null;
try {
signature = new Signature(filePath);
// Sign and save
} finally {
if (signature != null) signature.dispose();
}
}
- Crie uma nova instância
Signaturepor arquivo para manter o uso de memória baixo. - Use um pool de threads fixo (
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() - 1)) para processamento paralelo, mas monitore o tamanho do heap, pois cadaSignaturemantém o PDF completo na memória.
Mantenha as Bibliotecas Atualizadas
As versões do GroupDocs melhoram a velocidade de processamento em até 20 % e adicionam novos recursos de conformidade HIBC. Agende verificações de dependências trimestrais.
Cache de Modelos
Carregue um modelo PDF uma única vez, clone‑o para cada variante de código de barras e assine os clones. Isso reduz I/O e acelera fluxos de trabalho de alto volume.
Perguntas Frequentes
P: O GroupDocs.Signature pode assinar tipos de arquivo além de PDF?
R: Sim, também suporta DOCX, XLSX, PPTX, PNG, JPEG e TIFF com a mesma API de assinatura de código de barras.
P: Como solucionar erros “Conteúdo de código de barras inválido”?
R: Verifique se sua string HIBC segue exatamente a sintaxe HIBCC, use o validador online e assegure‑se de estar usando a constante QrCodeTypes correta para o formato escolhido.
P: Qual é a capacidade máxima de dados para cada formato HIBC?
R: QR ≈ 4.296 caracteres alfanuméricos, Aztec ≈ 3.832 numéricos / 3.067 alfanuméricos, Data Matrix ≈ 3.116 numéricos / 2.335 alfanuméricos. Mantenha os códigos abaixo de 200 caracteres para confiabilidade de escaneamento ideal.
P: É possível incorporar vários tipos de código de barras em um único PDF?
R: Absolutamente. Crie objetos QrCodeSignOptions separados com posições diferentes e chame signature.sign() para cada um. Apenas garanta que não se sobreponham.
P: Preciso de conexão com a internet para assinar em tempo de execução?
R: Não. Após o JAR estar no classpath e a licença ativada, todas as operações são realizadas localmente.
Recursos Adicionais
- Documentação do GroupDocs.Signature para Java
- Guia de Referência da API
- Downloads da Última Versão
- Comprar Licença
- Obter Teste Gratuito
- Solicitar Licença Temporária
- Fórum do GroupDocs
Última Atualização: 2026-05-16
Testado Com: GroupDocs.Signature 23.12 para Java
Autor: GroupDocs
signature.sign(destinFilePath, hibcLic_DM);