Comment ajouter un code-barres à un PDF en Java
Introduction
Vous êtes-vous déjà retrouvé à lutter contre l’authenticité des documents dans votre application Java ? Vous n’êtes pas seul. Que vous construisiez un système d’inventaire, gériez des contrats ou manipuliez des documents de chaîne d’approvisionnement, il y a de fortes chances que vous ayez besoin d’une méthode fiable pour signer et vérifier les PDF automatiquement.
Les signatures numériques traditionnelles sont excellentes, mais parfois vous avez besoin de quelque chose de plus spécialisé — comme des signatures à code‑barres qui fonctionnent parfaitement avec les systèmes de numérisation et les flux de travail automatisés. C’est là que les codes‑barres GS1DotCode sont utiles.
Ce que vous allez apprendre :
- Comment signer des documents PDF avec des codes‑barres GS1DotCode en Java
- Comment extraire et enregistrer les images de signature de code‑barres
- Quand (et pourquoi) utiliser les signatures à code‑barres plutôt que les méthodes traditionnelles
- Les pièges courants et comment les éviter
À la fin de ce guide, vous disposerez d’une solution prête à l’emploi que vous pourrez intégrer à n’importe quel projet Java.
Réponses rapides
- Quelle bibliothèque ajoute des codes‑barres aux PDF en Java ? GroupDocs.Signature pour Java.
- Quel format de code‑barres est couvert ? GS1DotCode, une matrice de points 2‑D compacte.
- Ai‑je besoin d’une licence payante ? Un essai gratuit suffit pour les tests ; la production nécessite une licence commerciale.
- Puis‑je extraire le code‑barres sous forme d’image ? Oui, en utilisant l’API
BarcodeSignature. - Quelle version de Java est requise ? JDK 8 ou supérieur.
Qu’est‑ce que « ajouter un code‑barres » ?
Ajouter un code‑barres désigne le processus d’insertion programmatique d’un graphique de code‑barres lisible par machine dans un fichier PDF afin que le code‑barres devienne partie intégrante du flux de contenu du document. Cela implique de générer l’image du code‑barres, de la positionner sur une page et d’enregistrer le PDF modifié, en veillant à ce que le code‑barres reste recherchable et imprimable.
Pourquoi choisir les codes‑barres GS1DotCode ?
GS1DotCode est conçu pour les situations où l’espace est limité. Contrairement aux codes‑barres linéaires qui s’étendent horizontalement, DotCode crée une matrice 2‑D de points qui emboîtent une grande quantité d’informations dans une petite zone. Cela le rend parfait pour :
- Petites étiquettes produit où chaque millimètre compte
- Impression à grande vitesse sur les lignes de production (le format est conçu pour cela)
- Suivi de la chaîne d’approvisionnement où vous devez encoder des structures de données complexes
Le format peut gérer jusqu’à 3 116 caractères dans un espace compact et se lit de façon fiable même à grande vitesse ou avec des dommages partiels. Si vous travaillez dans le commerce de détail ou la logistique, vos partenaires utilisent probablement déjà les standards GS1 — vous parlez donc le même langage.
Astuce : Utilisez GS1DotCode lorsque vous devez intégrer plus de 20 caractères sur une étiquette de moins de 1 po × 1 po.
Prérequis
Avant de commencer à coder, vérifiez que votre environnement satisfait aux exigences suivantes.
Bibliothèques et dépendances requises
- GroupDocs.Signature pour Java 23.12 ou ultérieure (prend en charge 30 + formats de documents)
- Maven ou Gradle pour la gestion des dépendances
Configuration de l’environnement
- JDK 8 ou plus récent installé et configuré dans votre
PATH - Un IDE tel qu’IntelliJ IDEA, Eclipse ou NetBeans
- Un fichier PDF d’exemple pour expérimenter (tout PDF non protégé convient)
Prérequis de connaissances
- Syntaxe Java de base (variables, méthodes, objets)
- Familiarité avec la déclaration de dépendances Maven ou Gradle
- Compréhension des I/O de fichiers en Java (par ex.
FileInputStream)
Si l’un de ces éléments manque, faites une pause et installez‑le maintenant ; les étapes suivantes supposent qu’ils sont présents.
Installation de GroupDocs.Signature pour Java
Maven
Si vous utilisez Maven, ajoutez la dépendance suivante à votre pom.xml :
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Maven téléchargera la bibliothèque ainsi que toutes les dépendances transitives requises automatiquement.
Gradle
Pour les utilisateurs de Gradle, insérez cette ligne dans votre fichier build.gradle :
implementation 'com.groupdocs:groupdocs-signature:23.12'
Gradle résout le paquet de la même manière « hands‑off ».
Téléchargement direct
Si vous préférez la gestion manuelle, téléchargez les fichiers JAR depuis la page officielle des releases : GroupDocs.Signature for Java releases. Placez les JARs sur le classpath de votre projet.
Astuce : Maven ou Gradle simplifient les futures mises à jour — il suffit d’incrémenter le numéro de version.
Acquisition de licence
GroupDocs propose trois options de licence :
- Essai gratuit – aucune carte de crédit, filigranes appliqués à la sortie
- Licence temporaire – évaluation complète de 30 jours
- Licence commerciale – supprime les limites d’essai et accorde les droits de production
Après avoir obtenu le fichier de licence, placez‑le dans le dossier resources de votre projet et chargez‑le avant la création de tout objet Signature.
License.setLicense charge le fichier de licence GroupDocs, activant le fonctionnement complet sans restrictions d’essai.
Exécutez le fragment suivant pour vérifier que la bibliothèque se charge correctement :
import com.groupdocs.signature.Signature;
public class InitializeGroupDocs {
public static void main(String[] args) {
// Create an instance of Signature
Signature signature = new Signature("path/to/your/document.pdf");
System.out.println("Initialization successful!");
}
}
Si vous voyez « Initialization successful! », la configuration est terminée. Sinon, revérifiez le classpath et le chemin de la licence.
Guide d’implémentation
Nous couvrirons deux fonctionnalités principales : (1) signer un PDF avec un code‑barres GS1DotCode et (2) extraire ce code‑barres sous forme d’image.
Fonctionnalité 1 : signer le document avec un code‑barres GS1DotCode
Comment signer un PDF avec un code‑barres GS1DotCode en Java ?
Chargez le PDF cible avec new Signature("source.pdf"), configurez un objet BarcodeSignOptions contenant les données au format GS1, puis appelez sign() pour produire un nouveau PDF qui intègre le code‑barres. Cette opération écrit le code‑barres directement dans le flux de contenu du PDF, le préservant lors de l’impression et de la re‑numérisation.
Le processus comprend trois étapes concises : créer une instance Signature, configurer BarcodeSignOptions, et invoquer sign(). Le code ci‑dessous montre chaque étape.
1. initialiser l’objet signature
La classe Signature est le point d’entrée pour toutes les opérations de traitement de documents dans GroupDocs.Signature.
import com.groupdocs.signature.Signature;
String sourceFilePath = "YOUR_DOCUMENT_DIRECTORY/document.pdf";
final Signature signature = new Signature(sourceFilePath);
Pourquoi c’est important : L’objet
Signatureabstrait la gestion des fichiers, diffusant de gros PDF efficacement sans charger le fichier entier en mémoire.
2. configurer les options du code‑barres
BarcodeSignOptions vous permet de spécifier le type de code‑barres, les données encodées, la position et les dimensions.
import com.groupdocs.signature.domain.signatures.BarcodeSignature;
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
BarcodeSignOptions gs1DotCodeOptions = new BarcodeSignOptions("(01)04912345123459(15)970331(30)128(10)ABC123", BarcodeTypes.GS1DotCode);
gs1DotCodeOptions.setLeft(100); // Set barcode position
gs1DotCodeOptions.setTop(100);
gs1DotCodeOptions.setHeight(150);
gs1DotCodeOptions.setWidth(200);
Points clés :
- La chaîne encodée suit les Identifiants d’Application (AI) GS1 tels que
(01)pour le GTIN,(15)pour la date d’expiration, etc.setLeft()etsetTop()utilisent des points (72 pts = 1 po).- La taille minimale recommandée pour une numérisation fiable est 108 pt × 108 pt (1,5 po × 1,5 po).
3. signer le document
Ajoutez les options configurées à une liste (vous pouvez combiner plusieurs types de signature) et appelez sign().
import java.util.ArrayList;
import java.util.List;
List<com.groupdocs.signature.options.sign.SignOptions> listOptions = new ArrayList<>();
listOptions.add(gs1DotCodeOptions);
signature.sign("YOUR_OUTPUT_DIRECTORY/signed_document_with_gs1dotcode.pdf", listOptions);
Note de performance : Réutiliser une même instance
Signaturepour des opérations par lots réduit le surcoût de création d’objets et améliore le débit.
Fonctionnalité 2 : enregistrer le contenu de la signature code‑barres dans un fichier
Comment extraire une image de code‑barres d’un PDF signé en Java ?
BarcodeSignature représente un objet de signature de code‑barres extrait d’un document signé, offrant l’accès à ses données et à son contenu image.
Créez une instance BarcodeSignature (ou récupérez‑en une via search()), lisez ses données d’image encodées en Base64 via getContent(), décodez‑les et écrivez les octets dans un fichier PNG. Vous obtenez ainsi une image autonome que vous pouvez afficher dans une UI ou envoyer à une imprimante d’étiquettes.
1. simuler la création d’une signature code‑barres
Dans les scénarios réels vous obtiendriez le BarcodeSignature à partir d’un résultat de recherche ; ici nous l’instancions manuellement à titre d’illustration.
import com.groupdocs.signature.domain.signatures.BarcodeSignature;
import java.io.FileOutputStream;
String base64String = "SampleBase64EncodedData";
BarcodeSignature barcodeSignature = new BarcodeSignature(base64String);
2. enregistrer le contenu dans un fichier
Décodez la chaîne Base64 et écrivez les octets résultants sur le disque à l’aide d’un bloc try‑with‑resources.
int imageNumber = 1;
String formatExtension = ".png"; // Assume PNG format
try (FileOutputStream outputStream = new FileOutputStream("YOUR_OUTPUT_DIRECTORY/barcode_image" + imageNumber + formatExtension)) {
byte[] byteArray = barcodeSignature.getContent();
if (byteArray != null) {
outputStream.write(byteArray);
}
}
Piège :
getContent()peut renvoyernullsi la signature a été créée sans incorporer d’image. Vérifiez toujours la valeurnullavant d’écrire.
Problèmes courants et solutions
Problème : le code‑barres ne se scanne pas
Symptômes : Le code‑barres apparaît correct dans le visualiseur PDF mais les scanners renvoient des erreurs.
Solutions :
- Augmentez la taille du code‑barres à au moins 108 pt × 108 pt.
- Assurez‑vous que la résolution de l’imprimante est ≥ 300 dpi.
- Vérifiez que la chaîne de données GS1 suit la syntaxe AI correcte ; une parenthèse manquante casse le scanner.
Problème : OutOfMemoryError sur de gros PDF
Symptômes : Le traitement de documents supérieurs à 50 Mo provoque des échecs de mémoire.
Solutions :
- Lancez la JVM avec un tas plus grand, par ex.
-Xmx2g. - Traitez les documents par lots plus petits.
- Libérez explicitement les objets
Signature:signature.dispose()après chaque fichier.
Problème : le code‑barres apparaît flou
Symptômes : Le code‑barres rendu semble pixelisé dans le PDF de sortie.
Solutions :
- Utilisez des dimensions plus grandes ; la bibliothèque rend des graphiques vectoriels quand c’est possible, mais le redimensionnement après génération introduit des artefacts.
- Évitez les conversions raster‑vers‑vectoriel ; laissez GroupDocs gérer le rendu directement à partir de la définition vectorielle.
Problème : exceptions de licence
Symptômes : Erreurs comme « License not found » ou « Trial limitations exceeded ».
Solutions :
- Placez le fichier de licence à la racine du classpath (
src/main/resources). - Appelez
License.setLicense("GroupDocs.Signature.lic")avant toute instanciation deSignature. - Pour les licences temporaires, confirmez la date d’expiration (30 jours à compter de l’émission).
Quand utiliser cette approche
Cas d’utilisation pertinents
- Suivi de la chaîne d’approvisionnement – intégrer les ID produit, numéros de lot et dates d’expiration directement sur les documents d’expédition.
- Impression d’étiquettes automatisée – générer des codes‑barres à la volée pour chaque facture PDF.
- Industries réglementées – les standards GS1 sont obligatoires dans de nombreux environnements de détail et de santé.
Quand envisager des alternatives
- Si vous avez uniquement besoin d’intégrité cryptographique, une signature numérique PKI standard est plus appropriée.
- Pour de simples annotations visuelles, une signature texte ou un tampon image peut suffire.
- Lorsque la taille du document est une contrainte critique, évitez d’ajouter des images de code‑barres haute résolution ; privilégiez les QR codes qui peuvent être plus petits pour une densité de données comparable.
Bonnes pratiques de sécurité
Validation des données
Sanitisez toutes les données fournies par l’utilisateur avant de les encoder dans un code‑barres. Des chaînes GS1 malformées peuvent entraîner des erreurs de numérisation en aval ou, dans le pire des cas, déclencher des dépassements de tampon dans le firmware de scanners anciens.
Contrôle d’accès
Mettez en place un contrôle d’accès basé sur les rôles (RBAC) afin que seules les personnes autorisées puissent appeler l’API de signature. Stockez le fichier de licence de façon sécurisée et restreignez les permissions du système de fichiers.
Journalisation d’audit
Consignez chaque opération de signature avec des détails tels que l’ID utilisateur, le horodatage, le chemin du fichier source et la charge utile GS1 exacte. Exemple de fragment de journalisation :
// Simple logging example (use a proper logging framework in production)
System.out.println("Document signed by: " + userId + " at " + new Date());
System.out.println("Barcode data: " + barcodeData);
Détection de falsification
Combinez une signature code‑barres avec une signature numérique cryptographique. Le code‑barres fournit des données lisibles par machine, tandis que la signature numérique garantit l’intégrité et la non‑répudiation.
Applications pratiques
1. Gestion de la chaîne d’approvisionnement
Chaque bordereau reçoit un code‑barres GS1DotCode encodant le GTIN, le lot et la destination de l’expédition. Les scanners à chaque point de contrôle mettent à jour automatiquement le système ERP, réduisant les erreurs de saisie manuelle de 98 %.
2. Contrôle d’inventaire
Lors de la réception des marchandises, le PDF est signé avec un code‑barres contenant le numéro de commande et les quantités d’articles. Le personnel d’entrepôt scanne le code‑barres et la base de données d’inventaire se met à jour en temps réel.
3. Point de vente au détail
Les factures imprimées avec un code‑barres permettent aux caissiers de traiter les retours en scannant la facture au lieu de saisir manuellement l’ID de transaction, réduisant le temps moyen de passage en caisse de 30 secondes par retour.
4. Documentation médicale
Les ordonnances signées avec un code‑barres GS1DotCode intègrent l’ID patient, le code du médicament et les instructions de dosage. Les pharmacies scannent le code‑barres, éliminant les erreurs de transcription qui provoquent des événements indésirables liés aux médicaments.
Considérations de performance
Gestion de la mémoire
GroupDocs.Signature diffuse les données PDF, mais vous devez tout de même fermer les ressources rapidement :
try (Signature signature = new Signature(sourceFilePath)) {
// Do your signing operations here
} // Signature automatically disposed here
L’utilisation de try‑with‑resources garantit que l’objet Signature libère les descripteurs de fichiers même en cas d’exception.
Astuces pour le traitement par lots
- Réutilisez la même instance
BarcodeSignOptionslorsque la charge utile est identique pour de nombreux documents. - Parallelisez la signature avec
ExecutorServicepour les charges de travail CPU‑intensives ; un serveur typique à 8 cœurs peut signer ≈ 150 PDF par minute lorsqu’un fichier fait moins de 5 Mo. - Limitez les appels de validation de licence externes afin d’éviter le throttling.
Optimisation du format de fichier
- Privilégiez PDF/A‑1b pour l’archivage ; il compresse les flux et réduit la taille du fichier jusqu’à 40 %.
- Gardez les dimensions du code‑barres aussi petites que nécessaire ; un code‑barres de 1,5 po × 1,5 po ajoute environ 15 KB à un PDF de 2 Mo.
Conclusion
Vous disposez maintenant d’un flux de travail complet, prêt pour la production, permettant d’ajouter des signatures de code‑barres GS1DotCode à des fichiers PDF en Java, d’en extraire les images et d’intégrer le processus dans des pipelines de gestion documentaire plus larges. N’oubliez pas de :
- Valider les charges utiles GS1 avant l’encodage.
- Choisir des dimensions de code‑barres qui équilibrent fiabilité de numérisation et contraintes de mise en page.
- Combiner les signatures de code‑barres avec des signatures cryptographiques pour une couverture de sécurité totale.
Prochaines étapes : explorez les autres types de signature proposés par GroupDocs.Signature — QR codes, tampons texte et certificats numériques, tous partageant une API cohérente.
FAQ
Q : Qu’est‑ce que GS1DotCode et en quoi diffère‑t‑il des QR codes ?
R : GS1DotCode est une matrice de points 2‑D compacte qui stocke jusqu’à 3 116 caractères dans un espace plus petit que les QR codes, ce qui le rend idéal pour les très petites étiquettes et l’impression à grande vitesse.
Q : Puis‑je utiliser un essai gratuit pour des déploiements en production ?
R : L’essai gratuit est limité à l’évaluation et ajoute un filigrane aux fichiers de sortie. L’utilisation en production nécessite une licence achetée ou temporaire de 30 jours.
Q : Comment positionner le code‑barres sur une page spécifique ?
R : Appelez setPageNumber(pageIndex) sur l’objet BarcodeSignOptions, puis ajustez setLeft() et setTop() pour le placer précisément.
Q : GroupDocs.Signature prend‑il en charge les PDF protégés par mot de passe ?
R : Oui. Fournissez le mot de passe lors de la construction de l’objet Signature : new Signature("file.pdf", "password").
Q : Comment vérifier qu’une signature code‑barres a été ajoutée correctement ?Signature.search() recherche les signatures dans un document et renvoie une collection d’objets de signature correspondants. Utilisez Signature.search() avec BarcodeSearchOptions. Les objets BarcodeSignature retournés contiennent les données encodées et le contenu image pour la vérification.
Q : Quelle est la taille minimale du code‑barres pour une numérisation fiable ?
R : Visez au moins 108 pt × 108 pt (1,5 po × 1,5 po). Des tailles plus grandes améliorent la lisibilité, surtout avec des imprimantes basse résolution.
Q : Puis‑je signer plusieurs PDF simultanément ?
R : Oui. Créez un pool de threads et instanciez un objet Signature distinct par thread ; la bibliothèque est thread‑safe tant que chaque thread travaille sur son propre document.
Q : Y a‑t‑il une limite au nombre de codes‑barres que je peux intégrer dans un même PDF ?
R : Aucun plafond strict, mais chaque code‑barres ajoute environ 15 KB de données. Pour des PDF supérieurs à 100 Mo, envisagez un traitement par lots pour gérer la mémoire.
Q : La bibliothèque fonctionne‑t‑elle sur des plateformes non Windows ?
R : GroupDocs.Signature pour Java est indépendante de la plateforme et s’exécute sur tout OS disposant d’une JRE compatible, y compris Linux et macOS.
Dernière mise à jour : 2026-08-25
Testé avec : GroupDocs.Signature 23.12 pour Java
Auteur : GroupDocs