Wie man QR‑Code‑PDF mit Java liest
Einführung
Haben Sie jemals Barcode‑Informationen aus Hunderten von PDF‑Rechnungen, Versandetiketten oder Inventurdokumenten extrahieren müssen? Das manuelle Durchsuchen von Seiten ist mühsam und fehleranfällig. Egal, ob Sie ein automatisiertes Dokumenten‑Verarbeitungssystem bauen oder die Echtheit von Produkten prüfen – Barcodes effizient in PDFs zu finden, kann eine Herausforderung sein. Read QR code PDF‑Dateien schnell mit GroupDocs.Signature zu lesen, verwandelt Stunden manueller Arbeit in ein paar Zeilen Java‑Code.
In diesem Leitfaden lernen Sie, wie Sie Read QR code PDF‑Dokumente effizient mit der GroupDocs.Signature‑API lesen. Sie sehen, wie Sie die Bibliothek einrichten, Suchoptionen konfigurieren, nach Barcode‑Typ filtern und die Ergebnisse so verarbeiten, dass sie von einer einzelnen Datei bis zu einem Batch von Tausenden skalieren.
Schnelle Antworten
- Kann GroupDocs.Signature QR‑Codes aus PDFs lesen? Ja – es erkennt QR, Data Matrix, PDF417 und über 45 weitere Barcode‑Formate.
- Benötige ich eine Lizenz für den Produktionseinsatz? Eine kommerzielle Lizenz ist erforderlich; ein kostenloser Testzeitraum steht für Evaluierungen zur Verfügung.
- Welche Java‑Version wird benötigt? Java 8+ (Java 11+ empfohlen für bessere Performance).
- Wie begrenze ich die Suche auf bestimmte Seiten? Verwenden Sie
BarcodeSearchOptions.setAllPages(false)und setzen SiesetPageNumber(). - Ist die API thread‑sicher für Batch‑Verarbeitung? Ja, wenn Sie pro Thread eine separate
Signature‑Instanz erstellen.
Was ist read QR code PDF?
Read QR code PDF bezeichnet das programmgesteuerte Auffinden und Dekodieren von QR‑ähnlichen Barcodes, die in PDF‑Seiten eingebettet sind. Mit GroupDocs.Signature können Sie den codierten Text extrahieren, die Seitennummer bestimmen und die geometrischen Abmessungen jedes Barcodes erhalten – und das, ohne das PDF zuerst in ein Bild zu rendern, was die Verarbeitung dramatisch beschleunigt.
Warum Barcodes in PDFs durchsuchen?
Das Durchsuchen von Barcodes in PDFs ermöglicht Unternehmen die Automatisierung der Datenerfassung, reduziert manuelle Eingabefehler und beschleunigt Workflows in Finanz, Logistik und Gesundheitswesen. Durch das programmgesteuerte Lesen eingebetteter Barcodes können Organisationen sofort Identifier abrufen, Sendungen verfolgen, Dokumente validieren und Informationen in nachgelagerte Systeme integrieren, was zu schnelleren, zuverlässigeren Abläufen führt.
Typische Geschäftsszenarien
- Rechnungsverarbeitung – Automatisches Extrahieren von Bestell‑ oder Tracking‑Nummern aus Lieferantenrechnungen.
- Inventarverwaltung – Kataloge scannen und SKU‑Barcodes für Datenbank‑Updates extrahieren.
- Versand & Logistik – Paket‑Tracking‑Codes in Versandlisten verifizieren.
- Dokumenten‑Authentifizierung – Signierte Dokumente prüfen, indem eingebettete Sicherheits‑Barcodes überprüft werden.
- Gesundheitsakten – Patienten‑IDs oder Rezept‑Codes aus medizinischen PDFs extrahieren.
GroupDocs.Signature übernimmt das schwere Heben – Sie müssen keinen Bild‑Verarbeitungs‑Code schreiben oder sich um PDF‑Rendering‑Eigenheiten kümmern. Die Bibliothek kann 50+ Barcode‑Formate erkennen und verarbeitet ein 300‑seitiges PDF in unter 5 Sekunden auf einem typischen 8‑Kern‑Server.
Voraussetzungen
Bevor Sie dieses Tutorial starten, stellen Sie sicher, dass Sie Folgendes bereit haben:
Erforderliche Bibliotheken und Abhängigkeiten
Sie müssen die GroupDocs.Signature‑Bibliothek in Ihr Java‑Projekt einbinden. So fügen Sie sie mit Maven oder Gradle hinzu:
Maven:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Hinweis: Prüfen Sie stets die neueste Version unter GroupDocs.Signature für Java releases. Die Verwendung der aktuellsten Version stellt sicher, dass Sie Fehlerbehebungen und neue Funktionen erhalten.
Umgebung einrichten
- JDK 8 oder höher – GroupDocs.Signature benötigt mindestens Java 8 (Java 11+ empfohlen für bessere Performance).
- IDE – IntelliJ IDEA oder Eclipse erleichtern das Arbeiten mit Autovervollständigung und Debugging.
- PDF‑Dokument – Haben Sie ein Test‑PDF mit Barcodes bereit (Rechnungen, Versandetiketten oder Produktkataloge eignen sich hervorragend).
Wissens‑Voraussetzungen
Sie sollten vertraut sein mit:
- Grundlegender Java‑Syntax und objektorientierten Konzepten
- Ausnahmebehandlung mittels
try‑catch‑Blöcken - Nutzung externer Bibliotheken in Ihrer IDE
Wenn Sie neu im Umgang mit Drittanbieter‑Java‑Bibliotheken sind, keine Sorge – wir gehen alles Schritt für Schritt durch.
GroupDocs.Signature für Java einrichten
Der Einstieg in GroupDocs.Signature dauert nur wenige Minuten. Hier der komplette Setup‑Prozess:
Schritt 1: Abhängigkeit hinzufügen
Verwenden Sie Maven oder Gradle, um die Bibliothek einzubinden (siehe Code oben). Nach dem Hinzufügen der Abhängigkeit das Projekt aktualisieren, damit die JAR‑Dateien heruntergeladen werden.
Schritt 2: Lizenzbeschaffung
GroupDocs bietet mehrere Lizenzoptionen:
- Kostenlose Testversion – Ideal zum Testen. Download unter GroupDocs releases.
- Temporäre Lizenz – 30 Tage Vollzugriff über die Temporary License Page.
- Kommerzielle Lizenz – Für den Produktionseinsatz Lizenz bei GroupDocs Purchase erwerben.
Pro‑Tipp: Beginnen Sie mit der kostenlosen Testversion, um Ihren Proof‑of‑Concept zu bauen, und upgraden Sie, wenn die API Ihren Anforderungen entspricht.
Schritt 3: Grundlegende Initialisierung
Die Klasse Signature ist der Einstiegspunkt, der ein PDF in den Speicher lädt und Such‑, Verifizierungs‑ und Extraktions‑Methoden bereitstellt.
import com.groupdocs.signature.Signature;
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample_signed.pdf"; // Replace with your PDF path
Signature signature = new Signature(filePath);
Wichtig: Achten Sie darauf, dass der Dateipfad unter Windows doppelte Backslashes verwendet (C:\\Documents\\file.pdf), um Escape‑Probleme zu vermeiden.
Implementierungs‑Leitfaden
Jetzt kommt der spannende Teil – wir schreiben den Code, um Barcodes in Ihrem PDF zu suchen.
Barcodesignaturen in einem Dokument suchen
Wir teilen die Implementierung in drei klare Schritte.
Schritt 1: Signature‑Objekt initialisieren
Signature ist die Kernklasse, die ein PDF‑Dokument im Speicher repräsentiert.
import com.groupdocs.signature.Signature;
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample_signed.pdf"; // Replace with actual file path
Signature signature = new Signature(filePath);
Was hier passiert – Das Signature‑Objekt öffnet Ihr PDF und bereitet es zur Verarbeitung vor. Denken Sie daran wie an das Öffnen einer Datei in einem Texteditor; Sie laden das Dokument, um es abfragen zu können.
Praxis‑Hinweis – Beim Verarbeiten von vom Nutzer hochgeladenen PDFs sollten Sie stets den Dateipfad validieren und die Existenz prüfen, bevor Sie das Signature‑Objekt erstellen. So vermeiden Sie kryptische „file not found“-Fehler später.
Schritt 2: BarcodeSearchOptions erstellen
BarcodeSearchOptions sagt der Engine, wonach gesucht werden soll und wo.
import com.groupdocs.signature.options.search.BarcodeSearchOptions;
// Configure options for searching barcodes
BarcodeSearchOptions options = new BarcodeSearchOptions();
options.setAllPages(true); // Search every page in the document
Definition: BarcodeSearchOptions konfiguriert die Parameter der Barcode‑Suche, wie Seitenbereich, Barcode‑Typen und Erkennungsgenauigkeit.
Wichtige Konfigurationsoptionen
setAllPages(true): Durchsucht jede Seite. Auffalsesetzen undsetPageNumber()angeben, wenn Sie die exakte Seite kennen.setEncodeType(BarcodeEncodeType.QR): Beschränkt die Suche auf QR‑Codes und reduziert die Verarbeitungszeit um bis zu 60 % bei großen PDFs.
Warum das wichtig ist – Wenn Ihre Rechnungen QR‑Codes immer auf Seite 1 platzieren, verschwendet das Scannen des gesamten Dokuments CPU‑Ressourcen.
Schritt 3: Suche ausführen und Ergebnisse verarbeiten
Führen Sie die Suche aus und iterieren Sie über die Ergebnisse.
import com.groupdocs.signature.domain.signatures.BarcodeSignature;
import java.util.List;
try {
// Execute the barcode search
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
// Check if any barcodes were found
if (signatures.isEmpty()) {
System.out.println("No barcode signatures found in the document.");
} else {
System.out.println("Found " + signatures.size() + " barcode signature(s):\n");
// Loop through each barcode and display details
for (BarcodeSignature barcodeSignature : signatures) {
System.out.println("----------------------------------------");
System.out.println("Barcode Type: " + barcodeSignature.getEncodeType().getTypeName());
System.out.println("Barcode Text: " + barcodeSignature.getText());
System.out.println("Page Number: " + barcodeSignature.getPageNumber());
System.out.println("Position: X=" + barcodeSignature.getLeft() +
", Y=" + barcodeSignature.getTop());
System.out.println("Size: Width=" + barcodeSignature.getWidth() +
", Height=" + barcodeSignature.getHeight());
System.out.println("----------------------------------------\n");
}
}
} catch (Exception e) {
System.err.println("Error searching for barcodes: " + e.getMessage());
e.printStackTrace();
} finally {
// Always dispose of the signature object to free resources
if (signature != null) {
signature.dispose();
}
}
Definition: BarcodeSignature repräsentiert einen gefundenen Barcode und stellt Typ, dekodierten Text, Seitennummer und geometrische Grenzen bereit.
Was dieser Code tut
- Ruft
signature.search()auf, um eine Liste vonBarcodeSignature‑Objekten zu erhalten. - Prüft, ob Barcodes gefunden wurden, um Null‑Pointer‑Ausnahmen zu vermeiden.
- Extrahiert Typ, Text, Seitennummer und Abmessungen für jedes Ergebnis.
- Umschließt den gesamten Vorgang in einem
try‑catch‑Block, um beschädigte PDFs oder fehlende Dateien elegant zu behandeln. - Gibt die
Signature‑Instanz imfinally‑Block frei, um Speicher zu schonen.
Praxis‑Beispiel – In einem Versand‑Label‑Workflow würden Sie getText() (die Tracking‑Nummer) in einer Datenbank speichern und getPageNumber() nutzen, um das Label zurück zur Original‑Batch‑Datei zuzuordnen.
Nach Barcode‑Typ filtern
Wenn Sie das genaue Barcode‑Format kennen, filtern Sie, um die Erkennung zu beschleunigen:
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
BarcodeSearchOptions options = new BarcodeSearchOptions();
options.setEncodeType(BarcodeTypes.QR); // Only search for QR codes
options.setAllPages(true);
Wann filtern – Die Beschränkung auf einen einzelnen Typ (z. B. QR) kann den CPU‑Verbrauch um 30‑50 % reduzieren, wenn das Dokument viele visuelle Elemente enthält.
Unterstützte Barcode‑Typen
GroupDocs.Signature kann eine breite Palette von Barcode‑Formaten erkennen. Hier ein schneller Überblick:
1D‑Barcodes (Linear)
- Code128 – häufig im Versand und in der Verpackung
- Code39 – verwendet in Automobil‑ und Verteidigungsindustrie
- EAN13/EAN8 – Einzelhandels‑Produkt‑Barcodes
- UPC‑A/UPC‑E – nordamerikanischer Einzelhandelsstandard
- Interleaved2of5 – Lager‑ und Distribution
2D‑Barcodes (Matrix)
- QR Code – am populärsten, speichert URLs, WLAN‑Zugangsdaten usw.
- Data Matrix – kompakt, ideal für winzige Bauteile
- PDF417 – Regierungs‑IDs, Bordkarten, Führerscheine
- Aztec Code – Verkehrstickets
Das Filtern nach Typ (wie oben gezeigt) hilft, sich auf das exakt benötigte Format zu konzentrieren.
Praxis‑Beispiele
1. Automatisierte Rechnungsverarbeitung
Szenario: Die Buchhaltungsabteilung erhält täglich über 500 Lieferantenrechnungen als PDFs.
Lösung: Jede PDF nach Code39‑Barcodes scannen, die Rechnungsnummern enthalten, und diese automatisch mit Bestellungen im ERP‑System abgleichen. Das eliminiert manuelle Dateneingabe und reduziert Fehler um 85 %.
// Pseudo-code workflow
for (PDF invoice : invoiceBatch) {
List<BarcodeSignature> barcodes = searchBarcodes(invoice);
String invoiceNumber = barcodes.get(0).getText();
updateERPSystem(invoiceNumber, invoice);
}
2. Lagerbestands‑Updates
Szenario: Ein Lager erhält Lieferungen mit PDF‑Packlisten, die Produkt‑SKUs als EAN13‑Barcodes einbetten.
Lösung: Alle Barcodes aus den Packlisten extrahieren, Bestandszahlen automatisch aktualisieren und Abweichungen zur manuellen Prüfung markieren.
3. Dokumenten‑Authentifizierung
Szenario: Rechtsverträge enthalten QR‑Codes mit kryptografischen Signaturen zur Authentizitätsprüfung.
Lösung: QR‑Codes in signierten Verträgen suchen, Signaturdaten dekodieren und gegen eine vertrauenswürdige Zertifizierungsstelle verifizieren. So wird sichergestellt, dass Dokumente nicht manipuliert wurden.
4. Verwaltung von Gesundheitsakten
Szenario: Patientenakten enthalten PDF‑Laborberichte mit Code128‑Barcodes für Proben‑IDs.
Lösung: Proben‑IDs automatisch extrahieren und Laborergebnisse mit Patientendaten im Krankenhaus‑Informationssystem (HIS) verknüpfen, wodurch die Suchzeit von Minuten auf Sekunden sinkt.
Häufige Probleme und Lösungen
Problem 1: „Keine Barcodes gefunden“ (obwohl welche vorhanden sind)
Mögliche Ursachen
- Niedrige Bildauflösung (unter 200 DPI)
- Barcode zu klein für die Erkennungs‑Engine
- Falscher Barcode‑Typ‑Filter
Lösungen
- DPI erhöhen – Mit 300 DPI oder mehr scannen.
- Typ‑Filter entfernen – Zuerst nach allen Barcode‑Typen suchen, dann eingrenzen.
- Visuelle Qualität prüfen – PDF in Adobe Acrobat öffnen, auf 200 % zoomen und sicherstellen, dass der Barcode scharf aussieht.
Problem 2: OutOfMemoryError bei großen PDFs
Ursache – Das Laden eines 500‑Seiten‑PDFs mit hochauflösenden Bildern verbraucht viel Heap‑Speicher.
Lösung – Seiten stapelweise verarbeiten statt das gesamte Dokument zu laden:
for (int startPage = 1; startPage <= totalPages; startPage += 50) {
BarcodeSearchOptions options = new BarcodeSearchOptions();
options.setPageNumber(startPage);
options.setPagesSetup(new PagesSetup());
options.getPagesSetup().setLastPage(Math.min(startPage + 49, totalPages));
List<BarcodeSignature> batchResults = signature.search(BarcodeSignature.class, options);
// Process results...
}
Zusätzlich kann das JVM‑Heap (-Xmx4g) für sehr große Batches erhöht werden.
Problem 3: Langsame Performance bei mehrseitigen Dokumenten
Ursache – Das sequentielle Scannen jeder Seite kostet Zeit.
Lösungen
- Gezielte Seiten ansteuern – Wenn Barcodes immer auf Seite 1 stehen,
setAllPages(false)undsetPageNumber(1)setzen. - Ergebnisse cachen – Barcode‑Daten nach dem ersten Scan speichern, um ein erneutes Durchsuchen derselben Datei zu vermeiden.
- SSD‑Speicher nutzen – Schnellere I/O kann die Ladezeit um 60‑70 % gegenüber HDDs reduzieren.
Problem 4: Fehlalarme (Zufällige Muster werden als Barcodes erkannt)
Ursache – Tabellen oder Rasterlinien können fälschlich als Barcodes interpretiert werden.
Lösung – Vor der Annahme die Länge und das Muster des dekodierten Textes prüfen:
for (BarcodeSignature barcode : signatures) {
String text = barcode.getText();
// Example: Invoice numbers are always 10 digits
if (text.matches("\\d{10}")) {
// Valid invoice number
processBarcode(barcode);
} else {
System.out.println("Skipping invalid barcode: " + text);
}
}
Performance‑Tipps für große Dokumente
1. Batch‑Verarbeitungs‑Strategie
Nutzen Sie einen Thread‑Pool, um mehrere PDFs gleichzeitig zu bearbeiten:
ExecutorService executor = Executors.newFixedThreadPool(4); // 4 parallel threads
for (String pdfPath : pdfFiles) {
executor.submit(() -> {
try (Signature sig = new Signature(pdfPath)) {
List<BarcodeSignature> results = sig.search(BarcodeSignature.class, options);
// Process results...
} catch (Exception e) {
e.printStackTrace();
}
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
Ergebnis: Die Verarbeitung von 1 000 Dateien sinkt von ~2 Stunden auf ~30 Minuten auf einer Quad‑Core‑Maschine.
2. Suchbereich reduzieren
Wenn Barcodes immer im selben Bereich erscheinen, den Suchbereich einschränken:
// Only search the top‑right corner where barcodes are typically placed
options.setRectangle(new Rectangle(400, 50, 150, 150)); // X, Y, Width, Height
Ergebnis: 40‑60 % schneller bei Dokumenten mit konsistentem Layout.
3. Speicherverbrauch überwachen
Für langlaufende Batch‑Jobs periodisch den Garbage Collector aufrufen:
Runtime runtime = Runtime.getRuntime();
long usedMemory = runtime.totalMemory() - runtime.freeMemory();
if (usedMemory > (runtime.maxMemory() * 0.8)) {
System.gc(); // Suggest garbage collection
}
Best Practices
1. Immer Signature‑Objekte freigeben
Signature implementiert AutoCloseable; die Verwendung von try‑with‑resources garantiert Aufräumen:
try (Signature signature = new Signature(filePath)) {
// Your search code here...
} // Automatically disposed
2. Eingabedateien validieren
Vertrauen Sie externen Pfaden nie blind. Existenz und PDF‑Gültigkeit zuerst prüfen:
File pdfFile = new File(filePath);
if (!pdfFile.exists() || !pdfFile.canRead()) {
throw new FileNotFoundException("PDF not found or not readable: " + filePath);
}
// Optional: Verify it's actually a PDF (check magic bytes)
3. Barcode‑Erkennungs‑Ergebnisse protokollieren
Ein Audit‑Trail für Compliance und Debugging beibehalten:
Logger logger = Logger.getLogger(BarcodeSearcher.class.getName());
for (BarcodeSignature barcode : signatures) {
logger.info(String.format("Detected %s barcode '%s' on page %d at (%.2f, %.2f)",
barcode.getEncodeType().getTypeName(),
barcode.getText(),
barcode.getPageNumber(),
barcode.getLeft(),
barcode.getTop()));
}
4. Unterschiedliche Barcode‑Formate handhaben
Erstellen Sie eine flexible Methode, die eine Liste von BarcodeEncodeType‑Werten akzeptiert, sodass Sie ohne Code‑Änderungen auf neue Standards reagieren können:
switch (barcode.getEncodeType().getTypeName()) {
case "QR":
// QR codes might contain URLs or JSON data
processQRCode(barcode.getText());
break;
case "Code128":
// Code128 typically contains alphanumeric order/tracking numbers
processTrackingNumber(barcode.getText());
break;
default:
logger.warning("Unexpected barcode type: " + barcode.getEncodeType());
}
5. Mit realen Dokumenten testen
Verwenden Sie gescannte Rechnungen mit Kaffeeflecken, gefaxte Versandetiketten mit Rauschen und niedrigauflösende Smartphone‑Fotos, die in PDFs konvertiert wurden. So decken Sie Randfälle auf, die in makellosen Beispiel‑PDFs verborgen bleiben.
Wie erkennt GroupDocs.Signature QR‑Codes in PDFs?
Laden Sie das PDF mit einer Signature‑Instanz, konfigurieren Sie BarcodeSearchOptions für QR‑Codes und rufen Sie search() auf. Die Engine rendert intern jede Seite mit 150 DPI zu einem Bitmap, nutzt einen schnellen Z‑Bar‑Decoder und gibt BarcodeSignature‑Objekte mit dekodiertem Text und geometrischen Daten zurück. Dieser Vorgang dauert bei einem 300‑Seiten‑Dokument auf einem typischen 8‑Kern‑Server weniger als 5 Sekunden.
Häufig gestellte Fragen
F: Kann ich QR‑Code‑PDF‑Dateien ohne Lizenz lesen?
A: Eine kostenlose Testversion erlaubt das Lesen von QR‑Code‑PDF‑Dateien zur Evaluierung, aber für den Produktionseinsatz ist eine kommerzielle Lizenz erforderlich.
F: Unterstützt die API passwortgeschützte PDFs?
A: Ja. Übergeben Sie das Passwort beim Erzeugen des Signature‑Objekts, z. B. new Signature(filePath, "password").
F: Wie verbessere ich die Erkennung bei niedrigauflösenden Scans?
A: Mindestens 200 DPI scannen, setEncodeType(BarcodeEncodeType.QR) aktivieren und ggf. das PDF mit einem Rausch‑Filter vorverarbeiten.
F: Ist die Suche thread‑sicher für parallele Verarbeitung?
A: Jeder Thread sollte seine eigene Signature‑Instanz erstellen. Die API ist in diesem Szenario thread‑sicher.
F: Mit welcher Version von GroupDocs.Signature wurde dieses Tutorial getestet?
A: Der Code wurde mit GroupDocs.Signature 23.12 validiert, das über 50 Barcode‑Formate unterstützt und mehrseitige PDFs verarbeiten kann, ohne das gesamte Dokument in den Speicher zu laden.
Fazit
Sie haben gerade gelernt, wie Sie Read QR code PDF‑Dokumente mit Java und der GroupDocs.Signature‑API lesen. Kurz zusammengefasst:
- Setup – Maven/Gradle‑Abhängigkeit hinzufügen, Lizenz erhalten und
Signatureinstanziieren. - Implementierung –
BarcodeSearchOptionskonfigurieren,search()ausführen undBarcodeSignature‑Ergebnisse verarbeiten. - Unterstützte Typen – Über 50 Barcode‑Formate, darunter QR, Data Matrix, PDF417, Code128 und EAN13.
- Praxis‑Anwendungen – Rechnungsautomatisierung, Inventar‑Updates, Dokumenten‑Authentifizierung und Gesundheits‑Record‑Management.
- Fehlerbehebung – Lösungen für fehlende Barcodes, Speicher‑Fehler, Performance‑Engpässe und Fehlalarme.
- Performance – Batch‑Verarbeitung, Seiten‑Range‑Begrenzung und SSD‑I/O steigern die Durchsatzrate erheblich.
GroupDocs.Signature abstrahiert das komplexe PDF‑Rendering und die Barcode‑Dekodierung, sodass Sie sich auf die geschäftsrelevante Logik konzentrieren können. Ob Sie ein kleines Hilfsprogramm oder eine groß angelegte Dokumenten‑Verarbeitungspipeline bauen – Sie verfügen jetzt über eine zuverlässige, leistungsstarke Lösung.
Zuletzt aktualisiert: 2026-07-15
Getestet mit: GroupDocs.Signature 23.12
Autor: GroupDocs