Wie man Barcode‑Signatur in PDF mit Java erstellt
In diesem Tutorial lernen Sie, wie Sie Barcode‑Signatur in PDF‑Dateien mit Java und GroupDocs.Signature erstellen. Barcode‑Signaturen betten maschinenlesbare Identifikatoren ein, die sowohl manipulationssicher als auch leicht zu scannen sind – perfekt für Verträge, Zertifikate, Rechnungen und jedes Dokument, das eine zuverlässige Verifizierung benötigt.
Schnelle Antworten
- Was ist eine Barcode‑Signatur? Ein in ein PDF eingebetteter Barcode, der strukturierte Daten speichert und von Scannern oder Software gelesen werden kann.
- Welcher Barcode‑Typ wird empfohlen? Code128, weil er alphanumerische Daten kompakt verarbeitet.
- Brauche ich eine Lizenz? Eine kostenlose Testversion funktioniert für Tests; für die Produktion ist eine Voll‑Lizenz erforderlich.
- Kann ich den Barcode auf jeder Seitengröße positionieren? Ja – verwenden Sie prozentbasierte Positionierung für automatische Skalierung.
- Ist der Barcode vektor‑basiert? Ja, er fügt dem PDF nur wenige Kilobyte hinzu und bleibt bei jeder Auflösung scharf.
Was ist eine Barcode‑Signatur?
Eine Barcode‑Signatur ist ein vektor‑basierter Barcode, der direkt in eine PDF‑Seite eingebettet wird und sowohl als visuelles Element als auch als kryptografische Signatur fungiert, die später validiert werden kann. Sie speichert strukturierte Daten, wie IDs oder Zeitstempel, und gewährleistet die Integrität des Dokuments, während sie eine maschinenlesbare Referenz bereitstellt.
Warum Barcode‑Signaturen für Ihre PDFs wichtig sind
Barcode‑Signaturen geben PDFs einen kompakten, maschinenlesbaren Identifikator, der sofort gescannt werden kann, wodurch manuelle Dateneingaben entfallen und Fehler reduziert werden. Da sie als Vektorgrafiken eingebettet sind, bleiben sie bei jeder Auflösung scharf und fügen der Datei nur wenige Kilobyte hinzu. Diese Kombination aus Lesbarkeit, Manipulationssicherheit und geringer Größe macht sie ideal für Verträge, Rechnungen, Zertifikate und jedes Dokument, das eine zuverlässige Verifizierung erfordert.
Hier ist eine Herausforderung, der Sie wahrscheinlich begegnet sind: Sie müssen PDFs eindeutige Identifikatoren hinzufügen, die sowohl maschinenlesbar als auch manipulationssicher sind. Vielleicht arbeiten Sie an einem Dokumentenmanagement‑System, verarbeiten Zertifikate oder bearbeiten Verträge, die später verifiziert werden müssen.
Hier kommen Barcode‑Signaturen ins Spiel. Im Gegensatz zu einfachen Textstempeln ermöglichen Barcodes das Einbetten strukturierter Daten, die Scanner (und Ihre Software) sofort lesen können. Und wenn Sie sie mit der PDF‑Signatur über GroupDocs.Signature für Java kombinieren, erhalten Sie eine leistungsstarke Methode, Dokumente zu verfolgen und zu verifizieren, ohne komplexe Datenbankabfragen hinzuzufügen.
In diesem Leitfaden lernen Sie genau, wie Sie Barcode‑Signaturen in Ihren Java‑PDFs implementieren — von der Grundkonfiguration bis zum produktionsreifen Code mit flexibler Positionierung. Egal, ob Sie ein Rechnungssystem, einen Zertifikatsgenerator oder eine Vertragsverwaltungsplattform bauen, am Ende haben Sie alles, was Sie benötigen.
Was Sie beherrschen werden:
- GroupDocs.Signature für Java in wenigen Minuten einrichten
- Code128‑Barcode‑Signaturen erstellen (und warum sie oft die beste Wahl sind)
- Barcodes mit prozentbasierten Layouts positionieren, die auf jeder PDF‑Größe funktionieren
- Häufige Stolperfallen vermeiden, die Entwickler aus der Bahn werfen
- Ihre Implementierung ordnungsgemäß testen
Wie man Barcode‑Signatur in Java erstellt
Das Erstellen einer Barcode‑Signatur in Java umfasst das Laden des Ziel‑PDFs, das Konfigurieren der Barcode‑Optionen wie Daten, Typ, Größe und Position und anschließend das Anwenden der Signatur, um ein neues Dokument zu erzeugen. GroupDocs.Signature übernimmt das Rendering und die kryptografische Bindung, sodass Sie nur die gewünschten Parameter bereitstellen und Dateipfade verwalten müssen.
Voraussetzungen und Umgebungs‑Checkliste
Bevor Sie beginnen, prüfen Sie, ob Sie die folgenden Dinge bereit haben:
- Java Development Kit (JDK) 8 oder neuer – erforderlich für alle GroupDocs‑Java‑Bibliotheken.
- Maven oder Gradle – zur Verwaltung der GroupDocs.Signature‑Abhängigkeit.
- Eine IDE wie IntelliJ IDEA, Eclipse oder VS Code mit Java‑Erweiterungen.
- GroupDocs.Signature für Java (Version 23.12 oder neuer wird empfohlen).
- Grundlegende Java‑Kenntnisse – Sie sollten sich beim Erstellen von Klassen, dem Umgang mit Ausnahmen und der Arbeit mit Datei‑I/O sicher fühlen.
GroupDocs.Signature in Ihrem Projekt einrichten
Die Bibliothek in Ihr Projekt zu integrieren ist einfach. Wählen Sie Ihr Build‑Tool:
Für Maven‑Benutzer fügen Sie diese Abhängigkeit zu Ihrer pom.xml hinzu:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Verwenden Sie Gradle? Fügen Sie diese Zeile zu Ihrer build.gradle hinzu:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Bevorzugen Sie manuelle Einrichtung? Laden Sie das JAR direkt von GroupDocs.Signature for Java releases herunter und fügen Sie es Ihrem Klassenpfad hinzu.
Lizenzierung erledigen
Bevor Sie in die Produktion gehen, sollten Sie die Lizenzierung erledigen:
- Kostenlose Testversion: Perfekt zum Testen — holen Sie sie von der GroupDocs‑Website, um die Kernfunktionen zu erkunden.
- Temporäre Lizenz: Benötigen Sie mehr Zeit für die Evaluierung? Beantragen Sie eine 30‑tägige temporäre Lizenz.
- Voll‑Lizenz: Bereit für die Produktion? Kaufen Sie eine Lizenz für unbegrenzte Nutzung.
Hier ein kurzer Plausibilitäts‑Check, um sicherzustellen, dass alles funktioniert:
Signature signature = new Signature("sample.pdf");
System.out.println("Signature object created successfully.");
Wenn das ohne Fehler läuft, sind Sie startklar!
Wie man Barcode‑Signatur in Java erstellt
Jetzt zum spannenden Teil — lassen Sie uns ein PDF mit einem Barcode signieren. Wir zerlegen das in kleine Schritte, damit Sie genau verstehen, was in jeder Phase passiert.
Schritt 1: Signature‑Objekt initialisieren
Definition‑Anker: Die Klasse Signature ist der Einstiegspunkt von GroupDocs.Signature zum Laden, Ändern und Speichern von PDF‑Dokumenten.
Zuerst müssen Sie GroupDocs mitteilen, welches PDF Sie verwenden:
Signature signature = new Signature("input.pdf");
Was hier passiert: Das Signature‑Objekt lädt Ihr PDF in den Speicher und bereitet es für Änderungen vor. Stellen Sie sicher, dass Ihr Dateipfad korrekt ist — ein häufiges Problem ist die Verwendung von Backslashes unter Windows ohne Escape (verwenden Sie \\ oder einfach Vorwärtsschrägstriche, die plattformübergreifend funktionieren).
Schritt 2: Barcode‑Optionen konfigurieren (Wie man Barcode hinzufügt)
Definition‑Anker: BarcodeSignOptions fasst alle Einstellungen zusammen, die zum Rendern eines Barcodes in einem PDF erforderlich sind.
Jetzt erstellen wir die Barcode‑Signatur mit Ihren Daten:
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeEncodeType.Code128);
"12345678"ist Ihre Barcode‑Daten — das könnte eine Bestell‑ID, Zertifikatsnummer oder irgendein benötigter Identifikator sein.Code128ist der Kodierungstyp (mehr zur Auswahl des richtigen Typs weiter unten).
Pro‑Tipp: Code128 kann sowohl Zahlen als auch Buchstaben verarbeiten, was es für die meisten Anwendungsfälle vielseitig macht. Wenn Sie nur Zahlen benötigen, könnte Code39 einfacher sein, aber Code128 bietet mehr Flexibilität.
Schritt 3: Barcode positionieren (Wie man PDF mit Barcode signiert)
Definition‑Anker: SignatureOptions liefert Layout‑Eigenschaften wie Seitenzahl, Größe und Ausrichtung.
Hier glänzt GroupDocs wirklich — prozentbasierte Positionierung bedeutet, dass Ihr Barcode auf jeder PDF‑Größe gut aussieht:
options.setLeft(10); // 10% from the left edge
options.setTop(90); // 90% from the bottom edge (near the footer)
options.setWidth(30); // 30% of page width
options.setHeight(10); // 10% of page height
options.setPageNumber(1);
Warum Prozente wichtig sind: Stellen Sie sich vor, Sie signieren sowohl A4‑Dokumente als auch Legal‑Formulare. Mit prozentualer Positionierung skaliert Ihr Barcode automatisch, um auf beiden konsistent auszusehen. Die Verwendung fester Pixelwerte würde Ihren Barcode auf großen Dokumenten zu klein und auf kleinen zu groß machen.
Praxisbeispiel: Auf einer A4‑Seite (595 × 842 Punkte) wird ein Barcode mit 30 % Breite etwa 180 Punkte breit sein. Auf einer Legal‑Seite (612 × 1008 Punkte) wird er etwa 184 Punkte breit sein — automatisch proportional.
Schritt 4: Dokument signieren und speichern (Wie man Barcode‑PDF hinzufügt)
Jetzt wenden wir die Signatur an und speichern Ihre Arbeit:
signature.sign(outputPath, options);
Wichtiger Hinweis: Das Ausgabeverzeichnis muss existieren, bevor Sie diesen Code ausführen. GroupDocs erstellt keine verschachtelten Verzeichnisse für Sie, also erstellen Sie sie vorher oder behandeln Sie das im Code:
new File("output").mkdirs();
Was, wenn etwas schiefgeht? Packen Sie das in einen try‑catch‑Block:
try {
signature.sign("signed.pdf", options);
} catch (Exception e) {
e.printStackTrace();
}
Den richtigen Barcode‑Typ für Ihre Bedürfnisse wählen (Code128‑Barcode generieren)
GroupDocs unterstützt mehrere Barcode‑Formate, und die Auswahl des richtigen ist wichtig. Hier ein praktischer Vergleich:
Code128 (Unsere Standardwahl):
- Am besten für: Gemischte alphanumerische Daten (IDs wie “INV2024-001”)
- Kapazität: Bis zu 128 ASCII‑Zeichen
- Warum es gewinnt: Kompakt, weit verbreitet, verarbeitet sowohl Buchstaben als auch Zahlen
- Verwendung: Wenn Sie Flexibilität benötigen und nicht wissen, welche Art von Daten Sie codieren werden
Code39:
- Am besten für: Einfache alphanumerische Codes
- Kapazität: 43 Zeichen (A‑Z, 0‑9 und einige Symbole)
- Warum in Betracht ziehen: Ältere Scanner unterstützen es oft besser
- Verwendung: Bei Legacy‑Systemen oder wenn Einfachheit wichtiger ist als Datendichte
QR‑Code:
- Am besten für: Große Datenmengen (URLs, JSON‑Payloads)
- Kapazität: Bis zu 3 KB Daten
- Warum es kraftvoll ist: Kann komplexe Datenstrukturen speichern, integrierte Fehlerkorrektur
- Verwendung: Wenn Sie strukturierte Daten oder URLs einbetten müssen
EAN/UPC:
- Am besten für: Produktidentifikation
- Kapazität: Fest‑längige numerische Codes (8‑13 Ziffern)
- Verwendung: Wenn Sie im Einzelhandel oder Inventursystemen arbeiten
Schnell‑Entscheidungshilfe:
- Brauchen Sie Buchstaben und Zahlen? → Code128
- Nur Zahlen, einfach halten? → Code39
- Viele Daten oder URLs? → QR‑Code
- Einzelhandels‑/Produktcodes? → EAN/UPC
Häufige Fallstricke und wie man sie vermeidet (Manipulationssichere Barcode)
Hier sind die Probleme, auf die Entwickler am häufigsten stoßen (damit Sie sie nicht haben):
Problem 1: Barcode‑Positionierung sieht falsch aus
Symptom: Ihr Barcode erscheint an unerwarteten Stellen oder wird abgeschnitten.
Häufige Ursachen:
- Verwendung von Pixelwerten bei unterschiedlichen Seitengrößen
- Vergessen, dass PDF‑Koordinaten von unten‑links beginnen, nicht von oben‑links
- Ränder, die Inhalte außerhalb des sichtbaren Bereichs schieben
Lösung: Verwenden Sie immer prozentbasierte Positionierung für Konsistenz:
options.setLeft(5);
options.setTop(95);
options.setWidth(40);
options.setHeight(12);
Problem 2: Barcode‑Text ist nicht lesbar
Symptom: Der codierte Text wird angezeigt, aber Scanner können ihn nicht lesen.
Ursachen:
- Barcode zu klein für die Datenmenge
- Falscher Kodierungstyp für Ihre Daten
- Geringer Kontrast zwischen Balken und Hintergrund
Lösung: Passen Sie die Barcode‑Größe an die Datenlänge an. Für Code128 mit 10‑15 Zeichen sollten Sie mindestens 8‑10 % der Seitenbreite anstreben.
Problem 3: Dateipfad‑Ausnahmen
Symptom: FileNotFoundException oder ähnliche Fehler.
Ursachen:
- Fest codierte Windows‑Pfade mit einzelnen Backslashes
- Ausgabeverzeichnis existiert nicht
- Probleme mit Dateiberechtigungen
Lösung: Verwenden Sie Vorwärtsschrägstriche (sie funktionieren überall) und erstellen Sie Verzeichnisse zuerst:
Path output = Paths.get("output/signed.pdf");
Files.createDirectories(output.getParent());
Problem 4: Speicherprobleme bei großen PDFs
Symptom: Speicher‑Ausnahmefehler bei der Verarbeitung großer Dokumente.
Lösung: Schließen Sie das Signature‑Objekt, wenn Sie fertig sind, um Ressourcen freizugeben:
signature.close();
Testen Ihrer Barcode‑Implementierung
Bevor Sie bereitstellen, stellen Sie sicher, dass Ihre Barcodes tatsächlich funktionieren. Hier eine praktische Prüfliste:
1. Visueller Inspektionstest
Öffnen Sie Ihr signiertes PDF und prüfen Sie:
- Ist der Barcode sichtbar und korrekt positioniert?
- Sieht er scharf aus (nicht verschwommen oder pixelig)?
- Gibt es ausreichend Weißraum darum herum?
2. Scan‑Test
Verwenden Sie eine Barcode‑Scanner‑App auf Ihrem Telefon (wie „Barcode Scanner“ oder „QR & Barcode Reader“), um zu prüfen:
- Der Scanner kann Ihren Barcode lesen
- Die dekodierten Daten entsprechen dem, was Sie codiert haben
- Er funktioniert aus verschiedenen Winkeln und Entfernungen
3. Plattform‑übergreifender Test
Öffnen Sie Ihr PDF auf verschiedenen Geräten:
- Windows (Adobe Reader, Chrome)
- Mac (Vorschau, Chrome)
- Mobile Geräte (iOS, Android)
Stellen Sie sicher, dass der Barcode überall korrekt gerendert wird.
4. Automatisierter Testcode
Hier ein einfacher Test, den Sie ausführen können:
Signature testSignature = new Signature("signed.pdf");
List<BarcodeSignature> signatures = testSignature.search(BarcodeSignature.class);
if (signatures.size() > 0) {
System.out.println("Barcode found: " + signatures.get(0).getText());
}
Praxisbeispiele für Barcode‑Signaturen
Schauen wir uns an, wo diese Technik in Produktionssystemen wirklich glänzt:
1. Zertifikatserstellung und -verifizierung
Szenario: Sie bauen eine Trainingsplattform, die Abschlusszertifikate ausgibt.
Implementierung: Generieren Sie eine eindeutige Zertifikats‑ID (z. B. „CERT‑2024‑00123“) und betten Sie sie als Code128‑Barcode in der rechten unteren Ecke ein. Das Scannen des Barcodes ermöglicht Ihrer API, die Zertifikatsdetails sofort abzurufen, wodurch manuelle Dateneingaben entfallen.
2. Rechnungstracking‑Systeme
Szenario: Ihr Unternehmen verarbeitet monatlich tausende Rechnungen.
Implementierung: Fügen Sie Rechnungsnummer und Fälligkeitsdatum als QR‑Code hinzu, der dort positioniert ist, wo Scangeräte ihn leicht lesen können. Automatisierte Sortiersysteme können Rechnungen ohne menschliches Eingreifen weiterleiten, wodurch die Bearbeitungszeit von Stunden auf Minuten reduziert wird.
3. Verwaltung von Rechtsverträgen
Szenario: Eine Kanzlei muss Vertragsversionen und Änderungen nachverfolgen.
Implementierung: Jede Vertragsversion erhält einen eindeutigen Barcode‑Identifikator, der Vertrags‑ID, Versionsnummer und Signaturdatum enthält. Das Scannen während Audits ruft automatisch die vollständige Versionshistorie ab.
4. Sicherheit von medizinischen Unterlagen
Szenario: Ein Krankenhaus möchte unbefugten Zugriff auf Unterlagen verhindern.
Implementierung: Betten Sie Patienten‑ID und Erstellungszeitstempel des Datensatzes in einen Barcode ein. Nur authentifizierte Geräte können dekodieren und auf den vollständigen Datensatz zugreifen, und jeder Scan erzeugt ein Prüfprotokoll für die Einhaltung von Vorschriften.
Tipps zur Leistungsoptimierung (Java‑Dokumentensicherheit)
Wenn Sie viele PDFs signieren, ist die Leistung wichtig. Hier einige Tipps, damit alles reibungslos läuft:
Strategie für Batch‑Verarbeitung
Anstatt ein Dokument nach dem anderen zu signieren, verarbeiten Sie sie im Batch:
for (String filePath : pdfList) {
Signature batchSignature = new Signature(filePath);
batchSignature.sign(outputPath, options);
batchSignature.close();
}
Warum das hilft: Das Wiederverwenden des Options‑Objekts und das korrekte Schließen von Ressourcen verhindert Speicherlecks.
Speicherverwaltung für große PDFs
Für PDFs größer als 50 MB:
- Verarbeiten Sie sie sequenziell statt mehrere gleichzeitig zu laden.
- Verwenden Sie try‑with‑resources, um Aufräumen sicherzustellen.
- Überwachen Sie die Heap‑Größe und passen Sie bei Bedarf JVM‑Parameter an:
-Xmx2g.
Caching häufig genutzter Barcodes
Wenn Sie viele Dokumente mit demselben Barcode signieren, cachen Sie die BarcodeSignOptions‑Instanz:
BarcodeSignOptions cachedOptions = new BarcodeSignOptions("STATIC_ID");
cachedOptions.setEncodeType(BarcodeEncodeType.Code128);
Wann Barcode‑Signaturen verwenden (und wann nicht)
Ideale Szenarien:
- Sie benötigen maschinenlesbare Dokumenten‑Identifikatoren.
- Dokumente werden automatisch gescannt oder verarbeitet.
- Sie wollen manipulationssichere Nachverfolgung ohne digitale Zertifikate.
- Integration in bestehende Barcode‑Infrastruktur ist erforderlich.
Nicht ideal, wenn:
- Sie benötigen rechtlich bindende digitale Signaturen (verwenden Sie stattdessen digitale Zertifikate).
- Dokumente werden nur von Menschen betrachtet (ein einfacher Text‑Wasserzeichen reicht aus).
- Sie arbeiten mit extrem kleinen Dokumenten, bei denen ein Barcode die Seite dominieren würde.
- Sicherheitsanforderungen verlangen Verschlüsselung — Barcodes sind sichtbar und von jedem scannbar.
Können Sie Ansätze kombinieren? Absolut! Viele Systeme nutzen sowohl Barcode‑Signaturen zur Nachverfolgung als auch digitale Signaturen für die rechtliche Gültigkeit.
Häufig gestellte Fragen
F: Kann ich verschiedene Barcode‑Typen im selben PDF verwenden?
A: Ja! Rufen Sie signature.sign() mehrmals mit unterschiedlichen BarcodeSignOptions für jeden Barcode‑Typ auf. Stellen Sie nur sicher, dass sie sich nicht überlappen.
F: Wie gehe ich mit Barcodes um, die Sonderzeichen enthalten?
A: Code128 verarbeitet die meisten ASCII‑Zeichen problemlos. Für Unicode oder komplexe Daten wechseln Sie zu QR‑Codes — sie unterstützen UTF‑8‑Kodierung.
F: Wie viele Daten kann ich maximal in einem Code128‑Barcode speichern?
A: Technisch bis zu 128 Zeichen, aber die Lesbarkeit sinkt deutlich über 30‑40 Zeichen. Für größere Datenmengen verwenden Sie QR‑Codes.
F: Erhöhen Barcodes die PDF‑Dateigröße merklich?
A: Nicht merklich — Barcodes sind Vektorgrafiken und fügen je nach Größe und Komplexität typischerweise nur 5‑20 KB pro Barcode hinzu.
F: Kann ich Barcodes drehen oder vertikal platzieren?
A: Ja! Verwenden Sie options.setRotationAngle(90), um Ihren Barcode zu drehen, was für die Platzierung am Rand praktisch ist.
F: Wie lasse ich Barcodes auf jeder Seite eines mehrseitigen PDFs erscheinen?
A: Durchlaufen Sie die Seiten und wenden Sie die Signatur auf jede an. Prüfen Sie die Klasse PagesSetup in der GroupDocs‑Dokumentation, um zu steuern, welche Seiten signiert werden.
F: Was, wenn mein Barcode‑Scanner den erzeugten Barcode nicht lesen kann?
A: Prüfen Sie zuerst, ob der Scanner den gewählten Barcode‑Typ unterstützt. Vergrößern Sie dann die Barcode‑Größe — die meisten Scan‑Probleme entstehen durch zu kleine Balken. Zielgröße mindestens 1 Zoll (2,54 cm) Breite für zuverlässige Lesbarkeit.
Zusätzliche Ressourcen
Dokumentation:
Downloads und Lizenzierung:
Community und Support:
- Support Forum - Aktive Community mit GroupDocs‑Ingenieuren
Zuletzt aktualisiert: 2026-07-20
Getestet mit: GroupDocs.Signature 23.12 (Java)
Autor: GroupDocs
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
implementation 'com.groupdocs:groupdocs-signature:23.12'
import com.groupdocs.signature.Signature;
public class QuickTest {
public static void main(String[] args) {
try {
Signature signature = new Signature("test-document.pdf");
System.out.println("GroupDocs.Signature is ready to go!");
} catch (Exception e) {
System.err.println("Setup issue: " + e.getMessage());
}
}
}
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
Signature signature = new Signature(filePath);
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeTypes.Code128);
import com.groupdocs.signature.domain.enums.MeasureType;
import com.groupdocs.signature.domain.Padding;
// Use percentages instead of fixed pixels
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from the left edge
options.setTop(5); // 5% from the top
// Size it proportionally too
options.setSizeMeasureType(MeasureType.Percents);
options.setWidth(10); // 10% of page width
options.setHeight(5); // 5% of page height
// Add some breathing room with margins
Padding margins = new Padding();
margins.setLeft(1);
margins.setTop(1);
margins.setRight(1);
options.setMargin(margins);
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithPercents/sample_signed.pdf";
signature.sign(outputFilePath, options);
Path outputPath = Paths.get(outputFilePath);
Files.createDirectories(outputPath.getParent());
signature.sign(outputFilePath, options);
try {
signature.sign(outputFilePath, options);
System.out.println("PDF signed successfully at: " + outputFilePath);
} catch (Exception e) {
System.err.println("Signing failed: " + e.getMessage());
e.printStackTrace();
}
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from left works on any page width
options.setWidth(10); // Give it room to breathe
options.setHeight(5); // Maintain proper aspect ratio
String filePath = "documents/sample.pdf"; // Works on Windows, Mac, Linux
Files.createDirectories(Paths.get("output/signed"));
try (Signature signature = new Signature(filePath)) {
signature.sign(outputFilePath, options);
} // Automatically closes and releases memory
import org.junit.Test;
import static org.junit.Assert.*;
public class BarcodeSignatureTest {
@Test
public void testBarcodeSigning() {
String testPdf = "test-data/sample.pdf";
String output = "test-output/signed.pdf";
try (Signature signature = new Signature(testPdf)) {
BarcodeSignOptions options = new BarcodeSignOptions("TEST123");
options.setEncodeType(BarcodeTypes.Code128);
signature.sign(output, options);
// Verify output file exists
assertTrue(new File(output).exists());
// Verify file size increased (signature was added)
long originalSize = new File(testPdf).length();
long signedSize = new File(output).length();
assertTrue(signedSize > originalSize);
} catch (Exception e) {
fail("Signing should not throw exception: " + e.getMessage());
}
}
}
List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");
for (String pdfFile : pdfFiles) {
try (Signature signature = new Signature(pdfFile)) {
BarcodeSignOptions options = createBarcodeOptions(); // Reuse options
signature.sign(getOutputPath(pdfFile), options);
}
}
// Create options once, reuse many times
BarcodeSignOptions templateOptions = createStandardBarcodeOptions();
// For each document, clone and customize
BarcodeSignOptions documentOptions = templateOptions.clone();
documentOptions.setText(uniqueDocumentId);