Webservice Barcodes lesen und erstellen

Mindestanforderungen

  • Java-Version: 7
  • webPDF-Version: 7
  • wsclient-Version: 1

Hier zeigen wir ein konkretes Code-Beispiel für den Barcode-Webservice und die Nutzung mit der webPDF-wsclient-Bibliothek.

Wichtiger Hinweis: Das folgende Coding-Beispiel basiert auf der Nutzung der webPDF-wsclient-Bibliothek.

Vorarbeiten für den Webservice-Aufruf

Für den Aufruf sollten Sie bereits eine REST- oder SOAP-Session erzeugt haben. Über die WebServiceFactory erstellen Sie dann entweder ein BarcodeWebService-Objekt (SOAP) oder ein BarcodeRestWebService-Objekt (REST).

SOAP:

BarcodeWebService barcodeWebService =
WebServiceFactory.createInstance(
session, WebServiceType.BARCODE
);

REST:

BarcodeRestWebService barcodeWebService =
WebServiceFactory.createInstance(
session, WebServiceType.BARCODE
);

Über setDocument() übergeben Sie ein RestDocument oder SoapDocument.

Webservice-Parameter

Für schreibende Zugriffe kann das aktuelle open- und/oder permission-Passwort erforderlich sein:

barcodeWebService.getPassword().setOpen("password");
barcodeWebService.getPassword().setPermission("password");

Wenn kein Passwortschutz vorliegt, kann dieser Schritt übersprungen werden.

Beschreibung des Barcode-Webservice

Der Barcode-Webservice ist ein Endpunkt des webPDF-Servers, mit dem Barcodes in PDF-Dokumenten erzeugt sowie erkannt und ausgelesen werden können.

Die Operation erhalten Sie so:

BarcodeType barcode = barcodeWebService.getOperation();

Das Objekt add

Zum Hinzufügen neuer Barcodes:

BarcodeType.Add add = new BarcodeType.Add();
barcode.setAdd(add);

Unterstützte Barcode-Typen:

  • Aztec (AztecBarcodeType)
  • Codabar (CodabarBarcodeType)
  • Code128 (Code128BarcodeType)
  • Code39 (Code39BarcodeType)
  • Datamatrix (DataMatrixBarcodeType)
  • EAN13 (EAN13BarcodeType)
  • EAN8 (EAN8BarcodeType)
  • ITF (ItfBarcodeType)
  • PDF417 (Pdf417BarcodeType)
  • QR-Code (QrBarcodeType)
  • UPCA (UpcaBarcodeType)

Beispiel für Aztec:

AztecBarcodeType aztec = new AztecBarcodeType();
add.getAztec().add(aztec);

Allgemeine Barcode-Parameter

Diese Parameter gelten für alle Barcode-Typen:

value (Standardwert: "")

Inhalt des Barcodes:

typedBarcode.setValue("http://www.softvision.de");

pages (Standardwert: "")

Seitenbereich (1, 1,3,5, 1-5, 1,3-5,6, *):

typedBarcode.setPages("1,3-5,6");

charset (Standardwert: "utf-8")

Zeichensatz:

typedBarcode.setCharset("utf-8");

rotation (Standardwert: 0)

Rotation in 90-Grad-Schritten:

typedBarcode.setRotation(90);

margin (Standardwert: 0)

Leerer Rand um den Barcode:

typedBarcode.setMargin(5);

Das Objekt position

Position und Dimensionen über RectangleType:

RectangleType position = new RectangleType();
typedBarcode.setPosition(position);

Parameter:

  • x (Standard: 0): position.setX(15);
  • y (Standard: 0): position.setY(15);
  • width (Standard: 0): position.setWidth(200);
  • height (Standard: 0): position.setHeight(16);
  • coordinates (Standard: user): position.setCoordinates(CoordinatesType.USER);
  • metrics (Standard: mm): position.setMetrics(MetricsType.PX);

Koordinatensysteme:

  • user = Ursprung links oben
  • pdf = Ursprung links unten

Maßeinheiten:

  • mm = Millimeter
  • px = Pixel

Typ-spezifische Parameter

Aztec

  • errorCorrection (0-100): aztec.setErrorCorrection(50);
  • layers: aztec.setLayers(10);

Datamatrix

  • errorCorrection (1-8): dataMatrix.setErrorCorrection(7);
  • shape: dm.setShape(DataMatrixShapeType.RECTANGLE);

QR-Code

  • errorCorrection (l, m, q, h):
qrBarcodeType.setErrorCorrection(QrCodeErrorCorrectionType.M);

PDF417

  • errorCorrection (1-8): pdf417.setErrorCorrection(7);
  • compact: pdf417.setCompact(true);
  • compactionMode: pdf417.setCompactionMode(Pdf417CompactionModeType.BYTE);
  • shape: pdf417.setShape(DataMatrixShapeType.SQUARE);
  • dataCodewordsMax: pdf417.setDataCodewordsMax(7);
  • dataCodewordsMin: pdf417.setDataCodewordsMin(4);
  • symbolsPerCodewordMax: pdf417.setSymbolsPerCodewordMax(8);
  • symbolsPerCodewordMin: pdf417.setSymbolsPerCodewordMin(4);

Das Objekt detect

Zum Erkennen und Auslesen von Barcodes:

BarcodeType.Detect detect = new BarcodeType.Detect();
barcode.setDetect(detect);

inputFormat (Standardwert: "pdf")

detect.setInputFormat(BarcodeDetectInputFormatType.PDF);

outputFormat (Standardwert: "json")

detect.setOutputFormat(BarcodeDetectOutputFormatType.XML);

Das Objekt selection

Zur Konfiguration der Barcode-Erkennung:

BarcodeSelectionType selection = new BarcodeSelectionType();
detect.getSelection().add(selection);

Wichtige Parameter:

  • formats: selection.setFormats("qrcode,aztec,code39");
  • charset: selection.setCharset("utf-8");
  • pages: selection.setPages("1,3-5,6");
  • allowedLengths: selection.setAllowedLengths("14");
  • barcode39CheckDigit: selection.setBarcode39CheckDigit(true);
  • codabarStartEndDigits: selection.setCodabarStartEndDigits(true);
  • gs1: selection.setGs1(true);
  • pureBarcode: selection.setPureBarcode(true);
  • resolution: selection.setResolution(300);
  • tryHarder: selection.setTryHarder(false);
  • upcEanExtensions: selection.setUpcEanExtensions("8");

Das Objekt scanArea

Zur Eingrenzung des Scan-Bereichs:

RectangleType scanArea = new RectangleType();
selection.setScanArea(scanArea);

Für beste Ergebnisse sollte der Bereich möglichst exakt auf den jeweiligen Barcode begrenzt werden.

SOAP-Beispiel (gekürzt)

try (
// Aufbau einer Session mit dem webPDF-Server (hier SOAP):
SoapSession session = SessionFactory.createInstance(
WebServiceProtocol.SOAP,
new URL("https://localhost:8080/webPDF/")
);

// Bereitstellen von Quell- und Zieldokument:
SoapDocument soapDocument = new SoapDocument(
new File("Pfad des Quelldokuments").toURI(),
new File("Pfad des Zieldokuments")
)
) {
// Webservice-Aufruf und Verarbeitung
} catch (ResultException | MalformedURLException ex) {
// Fehlerbehandlung
}

Hintergrundinfos

Weitere Coding-Beispiele finden Sie hier.