Webservice Wasserzeichen einfügen mit wsclient

Mindestanforderungen

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

Watermark-Operation des ToolboxWebService

In diesem Beitrag wird die Watermark-Operation des webPDF ToolboxWebService vorgestellt und gezeigt, wie sie mit der webPDF-wsclient-Bibliothek genutzt werden kann.

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

REST- oder SOAP-Session vorbereiten

Zunächst sollten Sie eine REST- oder SOAP-Session erzeugen und über die WebServiceFactory ein ToolboxWebService-Objekt (SOAP) oder ein ToolboxRestWebService-Objekt (REST) erstellen.

SOAP:

ToolboxWebService toolboxWebService =
WebServiceFactory.createInstance(
session, WebServiceType.TOOLBOX
);

REST:

ToolboxRestWebService toolboxWebService =
WebServiceFactory.createInstance(
session, WebServiceType.TOOLBOX
);

Danach übergeben Sie per setDocument() ein RestDocument oder SoapDocument.

Details zu Webservice-Parametern

Für schreibende Zugriffe ist oft das aktuelle open- und/oder permission-Passwort nötig:

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

Ist das Dokument nicht passwortgeschützt, kann dieser Schritt entfallen.

Watermark-Operation hinzufügen

Der ToolboxWebService bündelt mehrere Operationen zur direkten Bearbeitung von PDF-Dokumenten. So fügen Sie die Watermark-Operation hinzu:

WatermarkType watermark = new WatermarkType();
toolboxWebService.getOperation().add(watermark);

Parameter am Objekt Watermark

pages (Standardwert: "")

Legt den Seitenbereich fest. Möglich sind Einzelseiten (1), Listen (1,3,5), Bereiche (1-5) oder Kombinationen (1,3-5,6). Alle Seiten: *.

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

angle (Standardwert: "45")

Definiert die Rotation des Wasserzeichens im Bereich 0 bis 360 Grad (im Uhrzeigersinn).

watermark.setAngle(66);

Das Objekt image

Wenn ein Bild als Wasserzeichen verwendet werden soll, wird ein WatermarkImageType gesetzt.

WatermarkImageType image = new WatermarkImageType();
watermark.setImage(image);

opacity (Standardwert: 25)

Deckkraft in Prozent (0 bis 100):

image.setOpacity(32);

scale (Standardwert: 0)

Skalierung in Prozent:

image.setScale(200);

Das Objekt data

Die Bildquelle wird über ein WatermarkFileDataType gesetzt.

WatermarkFileDataType data = new WatermarkFileDataType();
image.setData(data);

source

Legt die Quelle fest:

  • value: Datei als Byte-Array
  • uri: URI-Referenz auf Datei
data.setSource(FileDataSourceType.VALUE);

value

Setzt Formulardaten als Byte-Array (bei source = value):

data.setValue(FileUtils.readFileToByteArray(new File("...")));

uri

Setzt Dateireferenz als URI (bei source = uri):

data.setUri(new File("...").toURI().toString());

Das Objekt text

Alternativ kann ein Text-Wasserzeichen gesetzt werden:

WatermarkTextType text = new WatermarkTextType();
watermark.setText(text);

text (Standardwert: "Confidential")

Legt den auszugebenden Wasserzeichentext fest:

text.setText("Vertraulich");

Das Objekt font

Die Schriftdefinition erfolgt über ein WatermarkFontType-Objekt:

WatermarkFontType font = new WatermarkFontType();
text.setFont(font);

Wichtige Parameter:

  • opacity (Standard: 100): font.setOpacity(35);
  • name (Standard: ""); bei leer: Helvetica
  • bold (Standard: false): font.setBold(true);
  • color (Standard: "#A0A0A0"): font.setColor("#FFFFFF");
  • italic (Standard: false): font.setItalic(true);
  • outline (Standard: false): font.setOutline(true);
  • size (Standard: 24): font.setSize(12);

Das Objekt position

Positionierung über WatermarkPositionType, nutzbar für Bild- oder Text-Wasserzeichen:

WatermarkPositionType position = new WatermarkPositionType();
image.setPosition(position);

Parameter:

  • x (Standard: 0): position.setX(15);
  • y (Standard: 0): position.setY(-6);
  • width (Standard: 0): position.setWidth(200);
  • height (Standard: 0): position.setHeight(16);
  • metrics (Standard: "mm"): position.setMetrics(MetricsType.PX);
  • position (Standard: "center_center"): position.setPosition(WatermarkPositionModeType.BOTTOM_RIGHT);
  • aspectRatio (Standard: true): position.setAspectRatio(false);

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
}

Tipp

  • Weitere Parameter finden Sie in der Watermark-Parameterstruktur.
  • Viele Parameter sind mit Standardwerten vorbelegt und müssen nur bei Abweichung gesetzt werden.

Weitere Coding-Beispiele finden Sie hier.