Toolbox Forms Operation der webPDF wsclient Bibliothek

Technische Mindestanforderung

  • 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:

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

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.