Webservice Beispiel: XMP-Metadaten bearbeiten
Minimum technical requirements
- Java version: 7
- webPDF version: 7
- wsclient version: 1
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.