Wie man Barcode‑Signatur in Java für PDF‑Dokumente erstellt

Einleitung

In diesem Tutorial lernen Sie, wie Sie Barcode‑Signatur Java für PDF‑Dateien mit GroupDocs.Signature erstellen. Ob Sie Produktcodes, Audit‑IDs oder beliebige strukturierte Daten in einen Vertrag einbetten müssen – Barcode‑Signaturen ermöglichen das Hinzufügen maschinenlesbarer Informationen, die sofort gescannt werden können, während das Dokument gleichzeitig kryptografisch gesichert bleibt. Wir führen Sie durch Einrichtung, Code, Anpassung und Best‑Practice‑Tipps, sodass Sie in wenigen Minuten Barcode‑Signaturen zu Ihren PDFs hinzufügen können.

Schnelle Antworten

  • Welche Bibliothek fügt Barcode‑Signaturen in Java hinzu? GroupDocs.Signature for Java.
  • Welcher Barcode‑Typ ist am besten für den Einzelhandel? GS1CompositeBar (Industrie‑Standard für Produktverfolgung).
  • Benötige ich eine Lizenz für die Produktion? Ja – eine erworbene GroupDocs‑Lizenz ist erforderlich.
  • Kann ich sowohl digitale als auch Barcode‑Signaturen hinzufügen? Absolut; kombinieren Sie sie für Sicherheit und Scan‑Fähigkeit.
  • Ist der Code mit Java 11 und neuer kompatibel? Ja, die API funktioniert mit JDK 8+.

Was ist „create barcode signature java“?

create barcode signature java bezieht sich auf den Vorgang, programmgesteuert einen Barcode in ein PDF mit Java‑Code einzubetten. GroupDocs.Signature bietet eine einfache API, die das Barcode‑Bild erzeugt, es auf der Seite positioniert und das signierte Dokument in einem nahtlosen Vorgang speichert.

Warum Barcode‑Signaturen verwenden?

Barcode‑Signaturen liefern maschinenlesbare Metadaten innerhalb eines rechtlich signierten PDFs. Sie ermöglichen sofortige visuelle Verifizierung, optimieren das Scannen in der Lieferkette und erlauben nachgelagerten Systemen, strukturierte Daten zu extrahieren, ohne die Datei zu öffnen. Über 60 Barcode‑Formate werden unterstützt, und GS1CompositeBar kann Produkt‑IDs, Seriennummern und Chargencodes in einem kompakten Symbol kodieren – ideal für Einzelhandel, Gesundheitswesen und Finanzen.

Voraussetzungen

  • Java Development Kit: JDK 8 oder neuer (Java 11, 17, 21 funktionieren alle).
  • Build‑Tool: Maven oder Gradle – wählen Sie das, das Sie bevorzugen.
  • IDE: IntelliJ IDEA, Eclipse oder VS Code.
  • GroupDocs.Signature‑Bibliothek: Fügen Sie die Abhängigkeit wie unten gezeigt hinzu.
  • Lizenz: Kostenlose Testversion für die Entwicklung; eine gekaufte Lizenz für die Produktion.

Hinzufügen von GroupDocs.Signature zu Ihrem Projekt

Für Maven‑Benutzer fügen Sie dies zu Ihrer pom.xml hinzu:

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

Für Gradle‑Benutzer fügen Sie dies zu Ihrer build.gradle hinzu:

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

Über Lizenzierung: GroupDocs bietet eine kostenlose Testversion, die sich perfekt zum Testen und Entwickeln eignet. Sie können sie von ihrer releases page herunterladen. Wenn Sie bereit für die Produktion sind, müssen Sie eine Lizenz erwerben oder eine temporäre Lizenz von der GroupDocs‑Website anfordern. Für detaillierte API‑Nutzung siehe die API Reference, konsultieren Sie den Developer Guide für Schritt‑für‑Schritt‑Anleitungen, und stellen Sie Fragen im GroupDocs Forum. Der gleiche Kauf‑Link ist auch als purchase page aufgeführt.

Wie richtet man GroupDocs.Signature in Java ein?

Die Signature‑Klasse repräsentiert ein Dokument und bietet Methoden zum Anwenden von Signaturen, Durchsuchen von Inhalten und Verwalten von Ressourcen. Erstellen Sie eine Signature‑Instanz, um Ihr PDF zu öffnen und für die Signatur vorzubereiten. Die Signature‑Klasse ist die Kernkomponente von GroupDocs.Signature, die das Laden von Dokumenten, das Ressourcen‑Handling und den Signatur‑Workflow verwaltet und sicherstellt, dass alle Vorgänge sicher und effizient ausgeführt werden.

import com.groupdocs.signature.Signature;

// Point to your PDF file
Signature signature = new Signature("path/to/your/document.pdf");

Wichtig: Entsorgen Sie das Signature‑Objekt immer nach Gebrauch – das gibt Dateihandles frei und reduziert den Speicherverbrauch.

Wie konfiguriert man die Barcode‑Sign‑Optionen?

Die BarcodeSignOptions‑Klasse definiert jeden Aspekt des Barcodes, den Sie einbetten möchten, von den Daten bis zum visuellen Stil. Sie dient als Container für alle barcode‑bezogenen Einstellungen wie Typ, Größe, Farben und Platzierung. Nachfolgend eine minimale Konfiguration, die einen GS1CompositeBar‑Barcode mit einem GTIN und einer Seriennummer erzeugt und zeigt, wie Sie Ränder und Hintergrundfarben für optimale Lesbarkeit setzen.

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);

Der String "(01)03212345678906/(21)A1B2C3D4E5F6G7H8" folgt dem GS1‑Standard:

  • (01) = GTIN (globaler Produktidentifikator)
  • 03212345678906 = tatsächlicher Produktcode
  • (21) = Seriennummer‑Identifikator
  • A1B2C3D4E5F6G7H8 = eindeutige Seriennummer

Sie können diesen Text durch beliebige Inhalte für QR‑Codes, Code128, DataMatrix usw. ersetzen. Über 60 Barcode‑Typen werden unterstützt – siehe die GroupDocs‑Dokumentation für die vollständige Liste.

Wie positioniert und passt man den Barcode an?

Platzierung und Stil werden über dasselbe BarcodeSignOptions‑Objekt gesteuert. Verwenden Sie setTop, setLeft, setWidth und setHeight, um genaue Koordinaten und Abmessungen festzulegen. setAllPages(true) fügt den Barcode automatisch zu jeder Seite hinzu, während setPageNumber(1) eine bestimmte Seite anspricht. Sie können den Barcode zudem rotieren, eine Hintergrundfarbe hinzufügen oder Ränder anpassen, damit er nicht mit vorhandenen Inhalten überlappt.

// Set position and apply to all pages
options.setTop(200); // Set vertical position
options.setAllPages(true);

Für ein präziseres Layout können Sie den Barcode zudem an einer bestimmten Seite verankern, rotieren oder eine Hintergrundfarbe hinzufügen:

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)

Visuelle Anpassungen (Vorder‑/Hintergrundfarben, Ränder, Textbeschriftungen) stehen über zusätzliche Eigenschaften zur Verfügung:

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

Wie signiert man das Dokument mit einem Barcode?

Die sign‑Methode der Signature‑Instanz wendet die konfigurierten Optionen an und schreibt das signierte Dokument auf die Festplatte. Sie liefert ein SignResult‑Objekt, das angibt, wie viele Signaturen angewendet wurden und ob Warnungen aufgetreten sind. Diese Methode übernimmt die gesamte low‑level PDF‑Manipulation, sodass Sie nicht direkt mit PDF‑Bibliotheken arbeiten müssen.

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();
    }
}

Der umgebende try‑finally‑Block stellt sicher, dass das Signature‑Objekt auch bei einer Ausnahme freigegeben wird, wodurch Dateihandle‑Lecks vermieden werden.

Sie können das SignResult prüfen, um den Erfolg zu bestätigen:

if (signResult.getSucceeded().size() > 0) {
    System.out.println("Successfully added " + signResult.getSucceeded().size() + " signature(s)");
}

Vollständiges funktionierendes Beispiel

Hier ein einzelner Methoden‑Code, der ein PDF lädt, einen GS1CompositeBar‑Barcode hinzufügt und die signierte Datei speichert:

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();
            }
        }
    }
}

Diese Methode ist produktionsreif: Sie validiert Eingaben, verwaltet Ressourcen und meldet das Ergebnis.

Wie fügt man sowohl digitale als auch Barcode‑Signaturen hinzu?

Für maximale Sicherheit fügen Sie zuerst eine kryptografische digitale Signatur hinzu und legen dann den Barcode darüber. Die digitale Signatur garantiert die Integrität des Dokuments, während der Barcode eine schnelle visuelle Verifizierung und maschinenlesbare Daten liefert. Verwenden Sie die DigitalSignOptions‑Klasse für den ersten Schritt und anschließend BarcodeSignOptions wie oben gezeigt.

// 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);

Das resultierende PDF ist sowohl rechtlich bindend (digitale Signatur) als auch sofort von jedem Barcode‑Scanner lesbar.

Arbeiten mit verschiedenen Barcode‑Typen

Der Wechsel des Barcode‑Formats ist so einfach wie das Ändern eines Enum‑Werts. Im Folgenden ein Beispiel, das den GS1CompositeBar durch einen QR‑Code ersetzt:

// Define barcode sign options with sample text
BarcodeSignOptions options = new BarcodeSignOptions("Sample Text");

// Assign specific barcode type
options.setEncodeType(BarcodeTypes.GS1CompositeBar);

Und hier die gleiche Änderung für einen linearen Code128‑Barcode:

options.setEncodeType(BarcodeTypes.QR);           // QR code
options.setEncodeType(BarcodeTypes.Code128);      // Code 128
options.setEncodeType(BarcodeTypes.DataMatrix);   // Data Matrix

Beachten Sie, dass jeder Barcode‑Typ eigene Kapazitätsgrenzen hat – QR‑Codes können Tausende von Zeichen speichern, während Code39 auf alphanumerische Zeichen beschränkt ist.

Echte Anwendungsfälle

Supply‑Chain‑Management

Das Einbetten eines GS1CompositeBar in Versandmanifesten ermöglicht es Lagerpersonal, Auftragsnummern, Zielorte und Chargencodes zu scannen, ohne das PDF zu öffnen.

BarcodeSignOptions options = new BarcodeSignOptions(
    "(01)" + gtin + "/(21)" + serialNumber + "/(10)" + batchNumber
);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);

Gesundheits‑Dokumentation

QR‑Codes auf Einwilligungsformularen können gescannt werden, um das Dokument automatisch dem richtigen Patienten‑Datensatz zuzuordnen.

String patientData = "PATIENT_ID:" + patientId + "|DOC_TYPE:CONSENT|DATE:" + dateString;
BarcodeSignOptions options = new BarcodeSignOptions(patientData);
options.setEncodeType(BarcodeTypes.QR);

Finanzdienstleistungen

In Barcodes codierte Transaktions‑IDs ermöglichen Auditoren, die Konformität mit einem einfachen Scan zu prüfen.

String complianceData = "TXN:" + transactionId + "|AGENT:" + agentId + "|BRANCH:" + branchCode;
BarcodeSignOptions options = new BarcodeSignOptions(complianceData);
options.setEncodeType(BarcodeTypes.PDF417);

Qualitätskontrolle in der Fertigung

Prüfberichte, die mit Barcodes versehen sind und Chargen‑ sowie Prüfer‑IDs enthalten, ermöglichen eine sofortige Ursachenanalyse.

String qcData = "BATCH:" + batchNumber + "|INSPECTOR:" + inspectorId + "|RESULT:" + passFailStatus;
BarcodeSignOptions options = new BarcodeSignOptions(qcData);
options.setEncodeType(BarcodeTypes.DataMatrix);

Häufige Implementierungsprobleme

Problem 1: „File is already in use“-Ausnahme

Antwort: Die Datei bleibt gesperrt, wenn eine vorherige Signature‑Instanz nicht freigegeben wurde. Verpacken Sie den Signatur‑Code immer in einen try‑finally‑Block und rufen Sie signature.dispose() auf.

Signature signature = null;
try {
    signature = new Signature(filePath);
    // ... your code ...
} finally {
    if (signature != null) {
        signature.dispose();
    }
}

Problem 2: Barcode erscheint nicht im PDF

Antwort: Stellen Sie sicher, dass die Werte für setTop/setLeft innerhalb der Seitenränder liegen, erhöhen Sie Breite/Höhe des Barcodes und sorgen Sie dafür, dass Vorder‑/Hintergrundfarben einen ausreichenden Kontrast zum Seitenhintergrund bieten.

// 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);

Problem 3: „Invalid Barcode Data“-Ausnahme

Antwort: GS1‑Barcodes erfordern eine strenge Klammer‑Notation. Verwenden Sie die korrekten Application Identifiers (z. B. (01), (21)) und vermeiden Sie nicht unterstützte Zeichen.

// Correct:
"(01)03212345678906/(21)ABC123"

// Incorrect:
"03212345678906ABC123"

Problem 4: OutOfMemoryError bei großen PDFs

Antwort: Erhöhen Sie den JVM‑Heap (-Xmx4G) und erwägen Sie, Seiten einzeln zu signieren, anstatt setAllPages(true) für sehr große Dokumente zu verwenden.

java -Xmx2G -jar your-application.jar

Problem 5: Barcode‑Scanning schlägt fehl

Antwort: Stellen Sie sicher, dass der Barcode mindestens 200 × 100 px groß ist, hohe Kontrastfarben verwendet und nicht durch PDF‑Kompression verzerrt wird.

// 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));

Sicherheit und Validierung

Sind Barcode‑Signaturen sicher?

Ein Barcode allein ist nicht kryptografisch geschützt, sodass jeder einen neuen erzeugen könnte. Kombinieren Sie ihn mit einer digitalen Signatur, um sowohl Authentizität als auch Scan‑Fähigkeit zu gewährleisten. Das Muster der doppelten Signatur (zuerst digital, dann Barcode) liefert rechtliche Durchsetzbarkeit plus betriebliche Bequemlichkeit.

Validierung von Barcode‑Daten

Nach dem Scannen prüfen Sie, ob die digitale Signatur des Dokuments noch gültig ist und ob die Barcode‑Payload den erwarteten Mustern entspricht. Verwenden Sie GroupDocs’ search()‑API mit BarcodeSearchOptions, um Barcode‑Inhalte automatisch zu extrahieren und zu validieren.

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);
}

Leistungsüberlegungen

Ressourcen‑Management

Entsorgen Sie Signature‑Objekte stets nach jedem Vorgang, um Speicherlecks zu vermeiden:

signature.dispose();

Beim Verarbeiten vieler Dateien erstellen und entsorgen Sie ein neues Signature‑Objekt pro Dokument:

for (String filePath : documentPaths) {
    Signature signature = null;
    try {
        signature = new Signature(filePath);
        // ... signing logic ...
    } finally {
        if (signature != null) {
            signature.dispose();
        }
    }
}

Batch‑Verarbeitung

Für kleine Stapel (< 100 Dateien) ist die sequentielle Verarbeitung einfach:

for (String path : paths) {
    signDocument(path);
}

Für größere Workloads kann parallele Verarbeitung die Geschwindigkeit erhöhen – achten Sie jedoch auf I/O‑Belastung und begrenzen Sie die Threads auf 4‑8:

paths.parallelStream().forEach(path -> signDocument(path));

Speicheroptimierung für große PDFs

Erhöhen Sie den Heap, verarbeiten Sie Seiten einzeln und löschen Sie Referenzen nach jedem Schritt. Das verhindert OutOfMemoryError bei Dokumenten über 50 MB.

Caching von Barcode‑Optionen

Wenn Sie dieselbe Barcode‑Konfiguration für viele Dateien wiederverwenden, cachen Sie die BarcodeSignOptions‑Instanz:

// 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;
}

Erweiterte Funktionen

Mehrere Signaturen in einem Dokument

Fügen Sie mehrere Barcodes (oder eine Mischung aus digitalen Signaturen) hinzu, indem Sie sign mehrfach mit unterschiedlichen Options‑Objekten aufrufen:

// 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);

Dynamischer Barcode‑Inhalt

Generieren Sie Barcode‑Daten aus Dokument‑Metadaten, Zeitstempeln oder Datenbank‑Abfragen:

// 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);

Integration mit Spring Boot

Stellen Sie einen REST‑Endpunkt bereit, der ein PDF empfängt, einen Barcode hinzufügt und die signierte Datei zurückgibt:

@Service
public class DocumentSigningService {
    public void signWithBarcode(MultipartFile file, String barcodeData) {
        // ... implementation ...
    }
}

REST‑API‑Beispiel

Ein minimaler Controller, der den Signatur‑Service aufruft:

@PostMapping("/sign-document")
public ResponseEntity<byte[]> signDocument(
    @RequestParam("file") MultipartFile file,
    @RequestParam("barcode") String barcodeData
) {
    // Sign document and return as byte array
}

Häufig gestellte Fragen

Q: Was ist ein GS1CompositeBar‑Barcode?
A: Ein GS1CompositeBar kombiniert lineare und 2D‑Komponenten, um Produkt‑IDs, Seriennummern und weitere Daten in einem einzigen scannbaren Symbol zu speichern; er wird breit im Einzelhandel und in der Logistik eingesetzt.

Q: Kann ich andere Barcode‑Typen neben GS1CompositeBar verwenden?
A: Ja – GroupDocs.Signature unterstützt über 60 Typen, darunter QR, Code128, DataMatrix, PDF417 und Aztec. Ändern Sie einfach den Wert von setEncodeType(), um das Format zu wechseln.

Q: Benötige ich eine Lizenz für den Produktionseinsatz?
A: Eine gültige GroupDocs‑Lizenz ist für Produktionsumgebungen erforderlich. Eine kostenlose Testversion steht für Entwicklung und Tests zur Verfügung.

Q: Lesen Barcode‑Scanner Barcodes aus signierten PDFs?
A: Absolut, vorausgesetzt der Barcode ist mindestens 200 × 100 px groß und hat ausreichenden Kontrast. Smartphone‑Scanning‑Apps funktionieren auf dem Bildschirm; Hardware‑Scanner arbeiten mit ausgedruckten Kopien.

Q: Wie gehe ich mit Fehlern beim Signieren um?
A: Umschließen Sie Ihren Code mit try‑catch‑Blöcken, protokollieren Sie vollständige Stack‑Traces und rufen Sie stets signature.dispose() im finally‑Block auf, um Ressourcen freizugeben.

Q: Kann ich andere Dokumentformate signieren?
A: Ja – GroupDocs.Signature unterstützt ebenfalls DOCX, XLSX, PPTX, Bilder und viele weitere Formate. Ändern Sie einfach die Eingabedateierweiterung; die API bleibt gleich.

Q: Gibt es Dateigrößen‑Limits?
A: Kein festes Limit, jedoch können Dokumente über 50 MB einen größeren JVM‑Heap und eine Seiten‑für‑Seite‑Verarbeitung erfordern, um speichereffizient zu bleiben.

Q: Wie signiere ich PDFs, die im Cloud‑Speicher liegen?
A: Laden Sie die Datei in ein temporäres lokales Verzeichnis, wenden Sie die Signatur an und laden Sie sie anschließend zurück in Ihren Cloud‑Bucket. Entfernen Sie danach die temporären Dateien.

Fazit

Sie haben nun einen vollständigen, produktionsreifen Leitfaden, um Barcode‑Signatur Java für PDF‑Dokumente zu erstellen. Durch die Kombination kryptografischer digitaler Signaturen mit maschinenlesbaren Barcodes erreichen Sie sowohl rechtliche Durchsetzbarkeit als auch betriebliche Effizienz in Lieferketten, Gesundheitswesen, Finanzen und Fertigung. Experimentieren Sie mit verschiedenen Barcode‑Typen, integrieren Sie den Code in Ihre bestehenden Services und prüfen Sie Batch‑Verarbeitung für großflächige Einsätze.


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);

Verwandte Tutorials