Toolbox Forms Operation der webPDF wsclient Bibliothek
Minimum technical requirements
- Java version: 7
- webPDF version: 7
- wsclient version: 1
Wie kann man Formulardaten exportieren, importieren oder abflachen mit der 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:
Hier wollen wir Ihnen die Forms
Operation des webPDF ToolboxWebservice
vorstellen und mit konkreten Coding Beispielen die Nutzung mit der webPDF wsclient-Bibliothek zeigen.
REST- und SOAP-Session
Um unserem Beispiel komplett zu folgen und den Webservice aufrufen zu können, sollten Sie erst eine REST- oder SOAP-Session erzeugt haben und somit über Aufruf der WebserviceFactory
ein ToolboxWebService
Objekt (für eine SOAP Session) erzeugen können:
ToolboxWebService toolboxWebService = WebServiceFactory.createInstance( session, WebServiceType.TOOLBOX );
Oder ein ToolboxRestWebService
Objekt (für eine REST Session):
ToolboxRestWebService toolboxWebService = WebServiceFactory.createInstance( session, WebServiceType.TOOLBOX );
Abschließend sollten Sie dem WebService
Objekt über Aufruf der Methode setDocument()
entweder ein RestDocument
oder ein SoapDocument
Objekt übergeben haben.
Die nächsten Schritte beschreiben, wie Sie ändernden Zugriff auf ein Dokument erhalten.
Beschreibung der Webservice Parameter
Sie sollten dem Webserviceaufruf das aktuelle open
und/oder permission
Passwort des Dokuments mitgeben. Das erfolgt am erzeugten ToolboxWebService
Objekt:
toolboxWebService.getPassword().setOpen("password"); toolboxWebService.getPassword().setPermission("password");
Verfügt das Dokument nicht über einen entsprechenden Passwortschutz, so können Sie diesen Punkt überspringen.
Der Toolbox Webservice: Operation Forms
Mit der Forms
Operation ist es möglich, Formulardaten zu exportieren oder zu importieren. Das bedeutet, Sie können Ihr PDF entpsrechend bearbeiten.
So fügen Sie Ihrem WebService
Objekt eine Forms
Operation hinzu:
FormsType forms = new FormsType(); toolboxWebService.getOperation().add(forms);
Am Objekt Forms
lassen sich dann folgende Parameter setzen:
Das Objekt „export“
Um die Formulardaten zu exportieren und deren Export zu konfigurieren, fügen Sie dem Forms
Objekt ein FormsExportType
Objekt hinzu.
FormsExportType export = new FormsExportType(); forms.setExport(export);
Am Objekt Export
lassen sich folgende Parameter setzen:
format (Standardwert: „xml“)
Legt das Dateiformat fest, in dem Formulardaten exportiert werden sollen. Folgende Werte können hier gesetzt werden:
• xml = XML
• fdf = FDF
• xfdf = XFDF
• xdp = XDP (nur für XFA-Daten)
export.setFormat(FormsFormatType.FDF);
Für den XML Export wird das Schema http://schema.webpdf.de/1.0/form/data.xsd verwendet.
fdfFileName (Standardwert: „“)
Legt den Namen des PDF-Dokuments fest, das beim Öffnen der FDF Datei automatisch geladen werden soll. (nur für das Exportformat FDF)
export.setFdfFileName("fdf file name");
Das Objekt „import“
Um Formulardaten zu importieren und deren Import zu konfigurieren, fügen Sie dem Forms
Objekt ein FormsImportType
Objekt hinzu.
FormsImportType importData = new FormsImportType(); forms.setImport(importData);
Am Objekt Import
lassen sich folgende Parameter setzen:
flatten (Standardwert: false)
Wird dieser Wert auf true
gesetzt, dann wird das Formular nach Import der Formulardaten abgeflacht.
importData.setFlatten(true);
format (Standardwert: „xml“)
Gibt das Format der zu importierenden Daten an. Folgende Werte können hier gesetzt werden:
• xml = XML
• fdf = FDF
• xfdf = XFDF
• xdp = XDP (nur für Dokumente mit XFA-Daten)
importData.setFormat(FormsFormatType.FDF);
Für den XML Import wird das Schema http://schema.webpdf.de/1.0/form/data.xsd verwendet.
Die Daten selbst werden über ein FormsFileDataType
Objekt gesetzt:
Das Objekt „data“
Die Wahl der zu importierenden Formulardaten erfolgt, indem Sie dem ImportData
Objekt ein FormsFileDataType
Objekt hinzufügen.
FormsFileDataType data = new FormsFileDataType(); importData.setData(data);
Am Objekt Data
lassen sich folgende Parameter setzen:
source
Gibt an, aus welcher Quelle die Formulardaten 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 Formulardaten 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 Formulardaten. (source sollte auf uri
gesetzt sein.)
data.setUri(new File("...").toURI().toString());
Das Objekt „flatten“
Um die Formulare und deren Inhalte abzuflachen, um sie zum Beispiel gegen weitere Änderungen zu sperren, können Sie dem Forms
Objekt ein FormsFileFlattenType
Objekt hinzufügen.
forms.setFlatten(new FormsFlattenType());
Diese Operation unterstützt nur „AcroForms“. „Static XFA Forms“ und „Dynamic XFA forms“, werden nicht unterstützt.
Diese Operation verfügt über keine weiteren Parameter.
Beispiel für Webserviceaufruf (SOAP)
Hier wollen wir ein noch ein ausführliches 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"); // Objektorientierte Parametrisierung des Aufrufs: FormsType forms = new FormsType(); toolboxWebService.getOperation().add(forms); FormsImportType importData = new FormsImportType(); forms.setImport(importData); importData.setFlatten(true); importData.setFormat(FormsFormatType.FDF); FormsFileDataType data = new FormsFileDataType(); importData.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 Coding-Beispiele für Webservices, welche Sie mit der ws-client Bibliothek nutzen können finden Sie hier.