Webservice Beispiel: XMP-Metadaten bearbeiten

Wie kann man die XMP-Metadaten bearbeiten mit Hilfe der webPDF wsclient Bibliothek?

Wichtiger Hinweis:

Das nun folgende Coding-Beispiel beruht auf der Nutzung der webPDF wsclient Bibliothek. Um das Beispiel zu verstehen und anzuwenden, sollte zunächst folgender Blogbeitrag beachtet werden:

webPDF und Java: mit der „wsclient“ Bibliothek ganz einfach

Um den Webservice aufzurufen, sollten Sie zunächst eine REST- oder SOAP-Session erzeugt haben und dann über Aufruf der WebserviceFactory entweder ein ToolboxWebService Objekt (für eine SOAP Session) erzeugen..

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

..oder ein ToolboxRestWebService Objekt (für eine REST Session) erzeugen:

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

Und dann sollte diesem WebService Objekt über Aufruf der Methode setDocument() entweder ein RestDocument oder ein SoapDocument Objekt übergeben werden.

Näheres zu diesem Webservice Parameter

Um ändernden Zugriff auf ein Dokument zu erhalten, müssen Sie dem Webserviceaufruf das aktuelle open und/oder permission Passwort des Dokuments mitgeben. Das können Sie direkt am erzeugten ToolboxWebService Objekt tun. Verfügt das Dokument nicht über einen entsprechenden Passwortschutz, so können Sie diesen Punkt überspringen.

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

XMP Operation des ToolboxWebService

Jetzt wollen wir hier die Xmp Operation des webPDF ToolboxWebservices vorstellen und wie Sie diese mit der webPDF wsclient Bibliothek nutzen können.

Der ToolboxWebservice ist ein Endpunkt Ihres webPDF Servers, der eine Reihe von Operationen zusammenfasst, mit denen Sie Ihr PDF Dokument direkt manipulieren können. Eine dieser Operationen ist die Xmp Operation. Mit der Xmp Operation können Sie einem Dokument XMP-Metadaten hinzuzufügen.

So fügen Ihrem WebService Objekt eine Xmp Operation hinzu:

XmpType xmp = new XmpType();
toolboxWebService.getOperation().add(xmp);

Am Objekt Xmp lassen sich folgende Parameter setzen:

dataFormat (Standardwert: „json“)

Format der XMP-Metadaten, die hinzugefügt werden sollen. Folgende Werte können hier gesetzt werden:

  • json = json
xmp.setDataFormat(XmpDataFormatType.JSON);

Das Objekt „data“

Um die XMP-Daten zu importieren und deren Import zu konfigurieren, fügen Sie dem Xmp Objekt ein XmpFileDataType Objekt hinzu.

XmpFileDataType data = new XmpFileDataType();
xmp.setData(data);

Zu Form und Struktur der XMP-Metadaten, können Sie sich diesen Abschnitt des Nutzerhandbuchs durchlesen.

Am Objekt Data lassen sich folgende Parameter setzen:

source

Gibt an, aus welcher Quelle die XMP-Daten bezogen werden sollen. Folgende Werte können hier gesetzt werden:

• value = Die Daten werden direkt als byte array übergeben.
• uri = Es wird eine URI Referenz auf die Daten übergeben.

data.setSource(FileDataSourceType.VALUE);

value

Übergibt die XMP-Daten in Form eines byte arrays. (source sollte auf value gesetzt sein.)

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

uri

Übergibt eine URI Referenz auf die zu nutzenden XMP-Daten. (source sollte auf uri gesetzt sein.)

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

Das Objekt „namespace“

Um den Namensraum der XMP-Daten einzuschränken, können Sie dem Xmp Objekt ein XmpNamespaceType Objekt hinzufügen.

XmpNamespaceType namespace = new XmpNamespaceType();
xmp.setNamespace(namespace);

Am Objekt Namespace lassen sich folgende Parameter setzen:

namespaceName (Standardwert: „“)

Setzt einen Namensraum für die XMP-Daten.

namespace.setNamespaceName("webPDF XMP Properties");

namespacePrefix (Standardwert: „“)

Setzt ein Präfix für den Namensraum der XMP-Daten.

namespace.setNamespacePrefix("webPDF");

namespacePrefix (Standardwert: „“)

Setzt die URI für den Namensraum der XMP-Daten.

namespace.setNamespaceURI("http://ns.webpdf.de/webpdf/7.0/");

Detaillierteres Beispiel

Wir wollen jetzt ein etwas ausführlicheres Beispiel für unseren gesamten Webserviceaufruf (für die Ansprache der SOAP Schnittstelle) geben:

try (
    // Aufbau einer Session mit dem webPDF Server(hier SOAP):
    SoapSession session = SessionFactory.createInstance(
        WebServiceProtocol.SOAP,
        new URL("https://localhost:8080/webPDF/")
    );
    // Bereit stellen des Dokuments, das verarbeitet werden soll
    // und der Datei, in die das Ergebnis geschrieben werden soll:
    SoapDocument soapDocument = new SoapDocument(
        new File("Pfad des Quelldokuments").toURI(),
        new File("Pfad des Zieldokuments")
    )
) {
    // Wahl des Webservices über eine Factory:
    ToolboxWebService toolboxWebService =
        WebServiceFactory.createInstance(
            session, WebServiceType.TOOLBOX
        );
    toolboxWebService.setDocument(soapDocument);
    toolboxWebService.getPassword().setOpen("password");
    toolboxWebService.getPassword().setPermission("password");

    XmpType xmp = new XmpType();
    toolboxWebService.getOperation().add(xmp);

    xmp.setDataFormat(XmpDataFormatType.JSON);

    XmpNamespaceType namespace = new XmpNamespaceType();
    xmp.setNamespace(namespace);

    namespace.setNamespaceName("webPDF XMP Properties");
    namespace.setNamespacePrefix("webPDF");
    namespace.setNamespaceURI("http://ns.webpdf.de/webpdf/7.0/");

    XmpFileDataType data = new XmpFileDataType();
    xmp.setData(data);

    data.setSource(FileDataSourceType.VALUE);
    data.setValue(FileUtils.readFileToByteArray(new File("…")));

    // Ausführung.
    toolboxWebService.process();
} catch (IOException ex) {
    // Zur Auswertung möglicher aufgetretener Fehler, stellt ihnen die
    // wsclient Bibliothek entsprechende Methoden zur Verfügung:
}

Weitere Link-Tipps:

• Einen Beitrag zur Nutzung der REST-Schnittstelle finden Sie hier: Nutzung der REST Schnittstelle mittels webPDF wsclient
• Hier geht’s zum Blog-Beitrag über die Verwendung der SOAP-Schnittstelle: Nutzung der SOAP Schnittstelle mittels webPDF wsclient

Weitere Coding-Beispiele für Webservices, welche Sie mit der ws-client Bibliothek nutzen können finden Sie hier.