Πώς να δημιουργήσετε υπογραφή barcode Java για έγγραφα PDF
Εισαγωγή
Σε αυτό το tutorial θα μάθετε πώς να create barcode signature Java για αρχεία PDF χρησιμοποιώντας το GroupDocs.Signature. Είτε χρειάζεστε να ενσωματώσετε κωδικούς προϊόντων, IDs ελέγχου, ή οποιαδήποτε δομημένα δεδομένα σε μια σύμβαση, οι υπογραφές barcode σας επιτρέπουν να προσθέσετε πληροφορίες αναγνώσιμες από μηχανή που μπορούν να σαρωθούν άμεσα, ενώ το έγγραφο παραμένει κρυπτογραφικά ασφαλές. Θα περάσουμε από τη ρύθμιση, τον κώδικα, την προσαρμογή και συμβουλές βέλτιστων πρακτικών ώστε να μπορείτε να προσθέτετε υπογραφές barcode στα PDFs σας μέσα σε λίγα λεπτά.
Γρήγορες Απαντήσεις
- Ποια βιβλιοθήκη προσθέτει υπογραφές barcode σε Java; GroupDocs.Signature for Java.
- Ποιος τύπος barcode είναι ο καλύτερος για λιανική;
GS1CompositeBar(βιομηχανικό πρότυπο για παρακολούθηση προϊόντων). - Χρειάζομαι άδεια για παραγωγή; Ναι – απαιτείται αγορασμένη άδεια GroupDocs.
- Μπορώ να προσθέσω τόσο ψηφιακές όσο και υπογραφές barcode; Απόλυτα· συνδυάστε τις για ασφάλεια και δυνατότητα σάρωσης.
- Είναι ο κώδικας συμβατός με Java 11 και νεότερες εκδόσεις; Ναι, το API λειτουργεί με JDK 8+.
Τι είναι το create barcode signature java;
create barcode signature java αναφέρεται στη διαδικασία ενσωμάτωσης ενός barcode σε PDF προγραμματιστικά χρησιμοποιώντας κώδικα Java. Το GroupDocs.Signature παρέχει ένα απλό API που δημιουργεί την εικόνα του barcode, την τοποθετεί στη σελίδα και αποθηκεύει το υπογεγραμμένο έγγραφο σε μια αδιάσπαστη λειτουργία.
Γιατί να χρησιμοποιήσετε υπογραφές Barcode;
Οι υπογραφές barcode σας παρέχουν metadata αναγνώσιμα από μηχανή μέσα σε ένα νομικά υπογεγραμμένο PDF. Επιτρέπουν άμεση οπτική επαλήθευση, βελτιστοποιούν τη σάρωση της εφοδιαστικής αλυσίδας και επιτρέπουν σε downstream συστήματα να εξάγουν δομημένα δεδομένα χωρίς να ανοίξουν το αρχείο. Υποστηρίζονται πάνω από 60 μορφές barcode, και το GS1CompositeBar μπορεί να κωδικοποιήσει αναγνωριστικά προϊόντων, σειριακούς αριθμούς και κωδικούς παρτίδας σε ένα ενιαίο συμπαγές σύμβολο — ιδανικό για λιανική, υγειονομική περίθαλψη και χρηματοοικονομικό τομέα.
Προαπαιτούμενα
- Java Development Kit: JDK 8 ή νεότερο (Java 11, 17, 21 όλα λειτουργούν).
- Εργαλείο Κατασκευής: Maven ή Gradle – επιλέξτε αυτό που προτιμάτε.
- IDE: IntelliJ IDEA, Eclipse ή VS Code.
- Βιβλιοθήκη GroupDocs.Signature: Προσθέστε την εξάρτηση όπως φαίνεται παρακάτω.
- Άδεια: Δωρεάν δοκιμή για ανάπτυξη· αγορασμένη άδεια για παραγωγή.
Προσθήκη του GroupDocs.Signature στο Project σας
Για χρήστες Maven, προσθέστε αυτό στο pom.xml σας:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Για χρήστες Gradle, προσθέστε αυτό στο build.gradle σας:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Σχετικά με τις άδειες: Η GroupDocs προσφέρει δωρεάν δοκιμή που είναι ιδανική για δοκιμές και ανάπτυξη. Μπορείτε να τη κατεβάσετε από τη σελίδα εκδόσεων. Όταν είστε έτοιμοι για παραγωγή, θα χρειαστεί να αγοράσετε άδεια ή να ζητήσετε προσωρινή από την ιστοσελίδα GroupDocs. Για λεπτομερή χρήση του API δείτε το API Reference, συμβουλευτείτε τον Developer Guide για βήμα‑βήμα οδηγίες, και θέστε ερωτήσεις στο GroupDocs Forum. Ο ίδιος σύνδεσμος αγοράς εμφανίζεται επίσης ως η σελίδα αγοράς.
Πώς να ρυθμίσετε το GroupDocs.Signature σε Java;
Η κλάση Signature αντιπροσωπεύει ένα έγγραφο και παρέχει μεθόδους για την εφαρμογή υπογραφών, αναζήτηση περιεχομένου και διαχείριση πόρων. Δημιουργήστε ένα αντικείμενο Signature για να ανοίξετε το PDF σας και να το προετοιμάσετε για υπογραφή. Η κλάση Signature είναι το βασικό στοιχείο του GroupDocs.Signature που διαχειρίζεται τη φόρτωση εγγράφων, τη διαχείριση πόρων και τη ροή εργασίας υπογραφής, εξασφαλίζοντας ότι όλες οι λειτουργίες εκτελούνται με ασφάλεια και αποδοτικότητα.
import com.groupdocs.signature.Signature;
// Point to your PDF file
Signature signature = new Signature("path/to/your/document.pdf");
Σημαντικό: Πάντα απελευθερώστε το αντικείμενο Signature μετά τη χρήση — αυτό απελευθερώνει τους χειριστές αρχείων και ελευθερώνει μνήμη.
Πώς να διαμορφώσετε τις επιλογές υπογραφής Barcode;
Η κλάση BarcodeSignOptions ορίζει κάθε πτυχή του barcode που πρόκειται να ενσωματώσετε, από το περιεχόμενο δεδομένων μέχρι το οπτικό στυλ. Λειτουργεί ως δοχείο για όλες τις ρυθμίσεις που σχετίζονται με barcode, όπως τύπο, μέγεθος, χρώματα και θέση. Παρακάτω υπάρχει μια ελάχιστη διαμόρφωση που δημιουργεί ένα barcode GS1CompositeBar που περιέχει GTIN και σειριακό αριθμό, και επίσης δείχνει πώς να ορίσετε περιθώρια και χρώματα φόντου για βέλτιστη αναγνωσιμότητα.
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
// Create barcode with GS1 format data
BarcodeSignOptions options = new BarcodeSignOptions("(01)03212345678906/(21)A1B2C3D4E5F6G7H8");
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
Η συμβολοσειρά "(01)03212345678906/(21)A1B2C3D4E5F6G7H8" ακολουθεί το πρότυπο GS1:
(01)= GTIN (παγκόσμιος αναγνωριστικός κωδικός προϊόντος)03212345678906= πραγματικός κωδικός προϊόντος(21)= αναγνωριστικό σειριακού αριθμούA1B2C3D4E5F6G7H8= μοναδικός σειριακός αριθμός
Μπορείτε να το αντικαταστήσετε με οποιοδήποτε κείμενο για QR codes, Code128, DataMatrix κ.λπ. Υποστηρίζονται πάνω από 60 τύποι barcode — δείτε τα έγγραφα GroupDocs για την πλήρη λίστα.
Πώς να τοποθετήσετε και να προσαρμόσετε το Barcode;
Η τοποθέτηση και το στυλ ελέγχονται μέσω του ίδιου αντικειμένου BarcodeSignOptions. Χρησιμοποιήστε setTop, setLeft, setWidth και setHeight για να ορίσετε ακριβείς συντεταγμένες και διαστάσεις. Η ρύθμιση setAllPages(true) προσθέτει το barcode αυτόματα σε κάθε σελίδα, ενώ setPageNumber(1) στοχεύει μια συγκεκριμένη σελίδα. Μπορείτε επίσης να περιστρέψετε το barcode, να προσθέσετε χρώμα φόντου ή να προσαρμόσετε τα περιθώρια ώστε το barcode να μην επικαλύπτεται με υπάρχον περιεχόμενο.
// Set position and apply to all pages
options.setTop(200); // Set vertical position
options.setAllPages(true);
Για πιο ακριβή διάταξη, μπορείτε επίσης να αγκυροβολήσετε το barcode σε συγκεκριμένη σελίδα, να το περιστρέψετε ή να προσθέσετε χρώμα φόντου:
options.setLeft(100); // 100 pixels from left edge
options.setTop(200); // 200 pixels from top
options.setWidth(300); // Barcode width in pixels
options.setHeight(100); // Barcode height in pixels
options.setPageNumber(1); // Only sign page 1 (removes setAllPages)
Η οπτική προσαρμογή (χρώματα προσκηνίου/φόντου, περιθώρια, ετικέτες κειμένου) είναι διαθέσιμη μέσω πρόσθετων ιδιοτήτων:
options.setMargin(new Padding(10)); // Add padding around barcode
options.setBackground(new Background()); // Set background color
options.setForeColor(Color.BLACK); // Barcode color
options.setBackgroundColor(Color.WHITE); // Background color
Πώς να υπογράψετε το έγγραφο με Barcode;
Η μέθοδος sign στο αντικείμενο Signature εφαρμόζει τις διαμορφωμένες επιλογές και γράφει το υπογεγραμμένο έγγραφο στο δίσκο. Επιστρέφει ένα αντικείμενο SignResult που σας λέει πόσες υπογραφές εφαρμόστηκαν και αν προέκυψαν προειδοποιήσεις. Αυτή η μέθοδος διαχειρίζεται όλη τη χαμηλού επιπέδου επεξεργασία PDF, έτσι δεν χρειάζεται να δουλέψετε απευθείας με βιβλιοθήκες PDF.
try {
SignResult signResult = signature.sign(outputPath, options);
System.out.println("Document signed successfully!");
System.out.println("Signed document saved to: " + outputPath);
} finally {
if (signature != null) {
signature.dispose();
}
}
Το περιβάλλον try‑finally εγγυάται ότι το αντικείμενο Signature απελευθερώνεται ακόμα και αν προκύψει εξαίρεση, αποτρέποντας διαρροές χειριστών αρχείων.
if (signResult.getSucceeded().size() > 0) {
System.out.println("Successfully added " + signResult.getSucceeded().size() + " signature(s)");
}
Πλήρες Παράδειγμα Εργασίας
Συνδυάζοντας όλα τα παραπάνω, εδώ είναι μια μέθοδος που φορτώνει ένα PDF, προσθέτει ένα barcode GS1CompositeBar και αποθηκεύει το υπογεγραμμένο αρχείο:
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
public class BarcodeSigningExample {
public void signPdfWithBarcode(String inputPath, String outputPath) {
Signature signature = null;
try {
// Initialize signature
signature = new Signature(inputPath);
// Configure barcode
BarcodeSignOptions options = new BarcodeSignOptions(
"(01)03212345678906/(21)A1B2C3D4E5F6G7H8"
);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
options.setTop(200);
options.setAllPages(true);
// Sign and save
SignResult result = signature.sign(outputPath, options);
System.out.println("Signing completed: " + result.getSucceeded().size() + " signature(s) added");
} catch (Exception e) {
System.err.println("Error signing document: " + e.getMessage());
e.printStackTrace();
} finally {
if (signature != null) {
signature.dispose();
}
}
}
}
Αυτή η μέθοδος είναι έτοιμη για παραγωγή: επικυρώνει την είσοδο, διαχειρίζεται πόρους και αναφέρει το αποτέλεσμα.
Πώς να προσθέσετε τόσο ψηφιακές όσο και υπογραφές Barcode;
Για μέγιστη ασφάλεια, προσθέστε πρώτα μια κρυπτογραφική ψηφιακή υπογραφή, έπειτα τοποθετήστε το barcode από πάνω. Η ψηφιακή υπογραφή εγγυάται την ακεραιότητα του εγγράφου, ενώ το barcode παρέχει γρήγορη οπτική επαλήθευση και δεδομένα αναγνώσιμα από μηχανή. Χρησιμοποιήστε την κλάση DigitalSignOptions για το πρώτο βήμα και στη συνέχεια εφαρμόστε BarcodeSignOptions όπως φαίνεται παραπάνω.
// First, add digital signature
DigitalSignOptions digitalOptions = new DigitalSignOptions("certificate.pfx");
digitalOptions.setPassword("cert_password");
signature.sign(outputPath, digitalOptions);
// Then, add barcode on top
BarcodeSignOptions barcodeOptions = new BarcodeSignOptions("DATA");
barcodeOptions.setEncodeType(BarcodeTypes.QR);
signature.sign(outputPath, barcodeOptions);
Το αποτέλεσμα είναι ένα PDF που είναι νομικά δεσμευτικό (ψηφιακή υπογραφή) και άμεσα αναγνώσιμο από οποιονδήποτε scanner barcode.
Εργασία με διαφορετικούς τύπους Barcode
Η αλλαγή μορφής barcode είναι τόσο απλή όσο η αλλαγή μιας τιμής enum. Παρακάτω υπάρχει ένα παράδειγμα που αντικαθιστά το GS1CompositeBar με QR code:
// Define barcode sign options with sample text
BarcodeSignOptions options = new BarcodeSignOptions("Sample Text");
// Assign specific barcode type
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
Και η ίδια αλλαγή για ένα γραμμικό barcode Code128:
options.setEncodeType(BarcodeTypes.QR); // QR code
options.setEncodeType(BarcodeTypes.Code128); // Code 128
options.setEncodeType(BarcodeTypes.DataMatrix); // Data Matrix
Θυμηθείτε ότι κάθε τύπος barcode έχει τα δικά του όρια χωρητικότητας δεδομένων — τα QR codes μπορούν να αποθηκεύσουν χιλιάδες χαρακτήρες, ενώ το Code39 περιορίζεται σε αλφαριθμητικούς χαρακτήρες.
Πραγματικές Περιπτώσεις Χρήσης
Διαχείριση Εφοδιαστικής Αλυσίδας
Η ενσωμάτωση ενός GS1CompositeBar σε αποδεικτικά αποστολής επιτρέπει στο προσωπικό της αποθήκης να σαρώσει αριθμούς παραγγελιών, προορισμούς και κωδικούς παρτίδας χωρίς να ανοίξει το PDF.
BarcodeSignOptions options = new BarcodeSignOptions(
"(01)" + gtin + "/(21)" + serialNumber + "/(10)" + batchNumber
);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
Τεκμηρίωση Υγειονομικής Περίθαλψης
QR codes σε έντυπα συγκατάθεσης μπορούν να σαρωθούν για αυτόματη αρχειοθέτηση του εγγράφου στο σωστό αρχείο ασθενούς.
String patientData = "PATIENT_ID:" + patientId + "|DOC_TYPE:CONSENT|DATE:" + dateString;
BarcodeSignOptions options = new BarcodeSignOptions(patientData);
options.setEncodeType(BarcodeTypes.QR);
Χρηματοοικονομικές Υπηρεσίες
Τα IDs συναλλαγών κωδικοποιημένα σε barcode επιτρέπουν στους ελεγκτές να επαληθεύσουν τη συμμόρφωση με μια απλή σάρωση.
String complianceData = "TXN:" + transactionId + "|AGENT:" + agentId + "|BRANCH:" + branchCode;
BarcodeSignOptions options = new BarcodeSignOptions(complianceData);
options.setEncodeType(BarcodeTypes.PDF417);
Ποιοτικός Έλεγχος Κατασκευής
Αναφορές επιθεώρησης που υπογράφονται με barcodes που περιέχουν αριθμούς παρτίδας και IDs επιθεωρητών κάνουν την ανάλυση αιτιών άμεση.
String qcData = "BATCH:" + batchNumber + "|INSPECTOR:" + inspectorId + "|RESULT:" + passFailStatus;
BarcodeSignOptions options = new BarcodeSignOptions(qcData);
options.setEncodeType(BarcodeTypes.DataMatrix);
Συνηθισμένα Προβλήματα Υλοποίησης
Ζήτημα 1: Εξαίρεση «Το αρχείο είναι ήδη σε χρήση»
Απάντηση: Το αρχείο παραμένει κλειδωμένο εάν ένα προηγούμενο αντικείμενο Signature δεν απελευθερώθηκε. Πάντα τυλίξτε τον κώδικα υπογραφής σε ένα try‑finally block και καλέστε signature.dispose().
Signature signature = null;
try {
signature = new Signature(filePath);
// ... your code ...
} finally {
if (signature != null) {
signature.dispose();
}
}
Ζήτημα 2: Το Barcode δεν εμφανίζεται στο PDF
Απάντηση: Επαληθεύστε ότι οι τιμές setTop/setLeft βρίσκονται εντός των ορίων της σελίδας, αυξήστε το πλάτος/ύψος του barcode και βεβαιωθείτε ότι τα χρώματα προσκηνίου/φόντου έχουν αντίθεση με το φόντο της σελίδας.
// Make sure dimensions are reasonable
options.setTop(100); // Not 10000
options.setLeft(100);
options.setWidth(300); // At least 200 pixels for readability
options.setHeight(100);
// Ensure contrast
options.setForeColor(Color.BLACK);
options.setBackgroundColor(Color.WHITE);
Ζήτημα 3: Εξαίρεση «Μη έγκυρα δεδομένα Barcode»
Απάντηση: Τα GS1 barcodes απαιτούν αυστηρή σύνταξη με παρενθέσεις. Χρησιμοποιήστε τους σωστούς Αναγνωριστές Εφαρμογών (π.χ., (01), (21)) και αποφύγετε μη υποστηριζόμενους χαρακτήρες.
// Correct:
"(01)03212345678906/(21)ABC123"
// Incorrect:
"03212345678906ABC123"
Ζήτημα 4: OutOfMemoryError με μεγάλα PDFs
Απάντηση: Αυξήστε το heap της JVM (-Xmx4G) και εξετάστε την υπογραφή σελίδας-προς-σελίδα αντί της χρήσης setAllPages(true) για πολύ μεγάλα έγγραφα.
java -Xmx2G -jar your-application.jar
Ζήτημα 5: Αποτυχία Σάρωσης Barcode
Απάντηση: Βεβαιωθείτε ότι το barcode έχει τουλάχιστον 200 × 100 px, χρησιμοποιεί χρώματα υψηλής αντίθεσης και δεν παραμορφώνεται από τη συμπίεση PDF.
// Increase size
options.setWidth(400);
options.setHeight(150);
// Maximize contrast
options.setForeColor(Color.BLACK);
options.setBackgroundColor(Color.WHITE);
// Add quiet zone (blank space around barcode)
options.setMargin(new Padding(10));
Ασφάλεια και Επικύρωση
Είναι οι υπογραφές Barcode ασφαλείς;
Ένα barcode μόνο του δεν είναι κρυπτογραφικά προστατευμένο, επομένως οποιοσδήποτε μπορεί να δημιουργήσει ένα νέο. Συνδυάστε το με ψηφιακή υπογραφή για να εγγυηθείτε τόσο την αυθεντικότητα όσο και τη δυνατότητα σάρωσης. Το μοτίβο διπλής υπογραφής (πρώτα ψηφιακή, μετά barcode) παρέχει νομική ισχύ μαζί με λειτουργική ευκολία.
Επικύρωση Δεδομένων Barcode
Μετά τη σάρωση, επαληθεύστε ότι η ψηφιακή υπογραφή του εγγράφου είναι ακόμη έγκυρη και ότι το payload του barcode ταιριάζει με τα αναμενόμενα πρότυπα. Χρησιμοποιήστε το API search() της GroupDocs με BarcodeSearchOptions για αυτόματη εξαγωγή και επικύρωση του περιεχομένου του barcode.
public boolean validateScannedBarcode(String scannedData, String documentPath) {
// Verify digital signature first
if (!verifyDigitalSignature(documentPath)) {
return false;
}
// Validate barcode format
if (!scannedData.matches("(01)\\d{14}/(21)[A-Z0-9]+")) {
return false;
}
// Check against database
String productId = extractProductId(scannedData);
return database.productExists(productId);
}
Σκέψεις Απόδοσης
Διαχείριση Πόρων
Πάντα απελευθερώστε τα αντικείμενα Signature μετά από κάθε λειτουργία για να αποφύγετε διαρροές μνήμης:
signature.dispose();
Όταν επεξεργάζεστε πολλά αρχεία, δημιουργήστε και απελευθερώστε ένα νέο Signature ανά έγγραφο:
for (String filePath : documentPaths) {
Signature signature = null;
try {
signature = new Signature(filePath);
// ... signing logic ...
} finally {
if (signature != null) {
signature.dispose();
}
}
}
Επεξεργασία Παρτίδας
Για μικρές παρτίδες (< 100 αρχεία), η διαδοχική επεξεργασία είναι απλή:
for (String path : paths) {
signDocument(path);
}
Για μεγαλύτερα φορτία, η παράλληλη επεξεργασία μπορεί να επιταχύνει τη διαδικασία — όμως παρακολουθείτε την πίεση I/O και περιορίστε τα νήματα σε 4‑8:
paths.parallelStream().forEach(path -> signDocument(path));
Βελτιστοποίηση Μνήμης για Μεγάλα PDFs
Αυξήστε το μέγεθος του heap, επεξεργαστείτε τις σελίδες ξεχωριστά και καθαρίστε τις αναφορές μετά από κάθε βήμα. Αυτό αποτρέπει το OutOfMemoryError σε έγγραφα μεγαλύτερα από 50 MB.
Caching Επιλογών Barcode
Εάν επαναχρησιμοποιείτε την ίδια διαμόρφωση barcode σε πολλά αρχεία, κάντε caching το αντικείμενο BarcodeSignOptions:
// Create once, reuse many times
private static BarcodeSignOptions createStandardBarcodeOptions(String data) {
BarcodeSignOptions options = new BarcodeSignOptions(data);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
options.setTop(200);
options.setAllPages(true);
return options;
}
Προηγμένες Λειτουργίες
Πολλαπλές Υπογραφές σε Ένα Έγγραφο
Προσθέστε πολλά barcodes (ή συνδυάστε τα με ψηφιακές υπογραφές) καλώντας το sign πολλές φορές με διαφορετικά αντικείμενα επιλογών:
// Add QR code in top-left
BarcodeSignOptions qrOptions = new BarcodeSignOptions("https://example.com");
qrOptions.setEncodeType(BarcodeTypes.QR);
qrOptions.setTop(50);
qrOptions.setLeft(50);
signature.sign(outputPath, qrOptions);
// Add GS1 barcode in bottom-right
BarcodeSignOptions gs1Options = new BarcodeSignOptions("(01)03212345678906");
gs1Options.setEncodeType(BarcodeTypes.GS1CompositeBar);
gs1Options.setTop(700);
gs1Options.setLeft(400);
signature.sign(outputPath, gs1Options);
Δυναμικό Περιεχόμενο Barcode
Δημιουργήστε δεδομένα barcode από μεταδεδομένα εγγράφου, χρονικές σφραγίδες ή αναζητήσεις βάσης δεδομένων:
// Extract data from PDF or database
String orderId = extractOrderIdFromPdf(filePath);
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME);
String barcodeData = String.format("ORDER:%s|TIME:%s", orderId, timestamp);
BarcodeSignOptions options = new BarcodeSignOptions(barcodeData);
Ενσωμάτωση με Spring Boot
Αποκτήστε ένα REST endpoint που λαμβάνει PDF, προσθέτει barcode και επιστρέφει το υπογεγραμμένο αρχείο:
@Service
public class DocumentSigningService {
public void signWithBarcode(MultipartFile file, String barcodeData) {
// ... implementation ...
}
}
Παράδειγμα REST API
Ένας ελάχιστος ελεγκτής που παραπέμπει στην υπηρεσία υπογραφής:
@PostMapping("/sign-document")
public ResponseEntity<byte[]> signDocument(
@RequestParam("file") MultipartFile file,
@RequestParam("barcode") String barcodeData
) {
// Sign document and return as byte array
}
Συχνές Ερωτήσεις
Q: What is a GS1CompositeBar barcode?
A: A GS1CompositeBar combines linear and 2D components to store product IDs, serial numbers, and other data in a single scannable symbol, widely used in retail and logistics.
Q: Can I use other barcode types besides GS1CompositeBar?
A: Yes—GroupDocs.Signature supports over 60 types, including QR, Code128, DataMatrix, PDF417, and Aztec. Switch the setEncodeType() value to change the format.
Q: Do I need a license for production use?
A: A valid GroupDocs license is required for production deployments. A free trial is available for development and testing.
Q: Will barcode scanners read barcodes from signed PDFs?
A: Absolutely, provided the barcode is at least 200 × 100 px and has sufficient contrast. Smartphone scanning apps work on‑screen; hardware scanners work on printed copies.
Q: How do I handle errors during signing?
A: Wrap your code in try‑catch blocks, log full stack traces, and always call signature.dispose() in a finally block to release resources.
Q: Can I sign other document formats?
A: Yes—GroupDocs.Signature also supports DOCX, XLSX, PPTX, images, and many more. Just change the input file extension; the API remains the same.
Q: Are there file‑size limits?
A: No hard limit, but documents over 50 MB may require a larger JVM heap and page‑by‑page processing to stay memory‑efficient.
Q: How do I sign PDFs stored in cloud storage?
A: Download the file to a temporary local path, apply the signature, then upload it back to your cloud bucket. Clean up temporary files afterward.
Συμπέρασμα
Τώρα έχετε έναν πλήρη, έτοιμο για παραγωγή οδηγό για create barcode signature java σε έγγραφα PDF. Συνδυάζοντας κρυπτογραφικές ψηφιακές υπογραφές με barcodes αναγνώσιμα από μηχανή, επιτυγχάνετε τόσο νομική ισχύ όσο και λειτουργική αποδοτικότητα σε εφοδιαστική αλυσίδα, υγειονομική περίθαλψη, χρηματοοικονομικό τομέα και βιομηχανική παραγωγή. Δοκιμάστε διαφορετικούς τύπους barcode, ενσωματώστε τον κώδικα στις υπάρχουσες υπηρεσίες σας και εξερευνήστε την επεξεργασία παρτίδας για μεγάλες κλίμακες.
Last Updated: 2026-05-21
Tested With: GroupDocs.Signature 23.10 for Java
Author: GroupDocs
String filePath = "YOUR_DOCUMENT_DIRECTORY" + "/sample.pdf";
String fileName = new java.io.File(filePath).getName();
String outputPath = "YOUR_OUTPUT_DIRECTORY" + "/SignedWithBarcodeGS1CompositeBar/" + fileName;
String documentDir = System.getenv("DOCUMENT_DIR");
String outputDir = System.getenv("OUTPUT_DIR");
Signature signature = new Signature(filePath);