Webbasierte Anwendungen, die es einem Benutzer ermöglichen, interaktive Formulare auszufüllen, erfordern, dass die Daten an den Server zurückgesendet werden. Mit dem Forms-Dienst können Sie die Daten abrufen, die der Benutzer in ein interaktives Formular eingegeben hat. Nachdem Sie die Daten abgerufen haben, können Sie die Daten entsprechend Ihren Geschäftsanforderungen verarbeiten. Sie können beispielsweise die Daten in einer Datenbank speichern, die Daten an eine andere Anwendung senden, die Daten an einen anderen Dienst senden, die Daten in einem Formularentwurf zusammenführen, die Daten in einem Webbrowser anzeigen usw.
Formulardaten werden entweder als XML- oder als PDF-Daten an den Forms-Dienst gesendet. Dies ist eine Option, die in Designer festgelegt ist. Mit einem als XML gesendeten Formular können Sie einzelne Felddatenwerte extrahieren. Das heißt, Sie können den Wert jedes Formularfelds extrahieren, das der Benutzer in das Formular eingegeben hat. Ein Formular, das als PDF-Daten übermittelt wird, sind Binärdaten, nicht XML-Daten. Sie können das Formular als PDF-Datei speichern oder an einen anderen Dienst senden. Wenn Sie Daten aus einem als XML gesendeten Formular extrahieren und dann mithilfe der Formulardaten ein PDF-Dokument erstellen möchten, rufen Sie einen anderen AEM Forms-Vorgang auf. (Siehe Erstellen von PDF-Dokumenten mit übermittelten XML-Daten)
Das folgende Diagramm zeigt Daten, die von einem interaktiven Formular in einem Webbrowser an ein Java-Servlet mit dem Namen HandleData
gesendet werden.
Die folgende Tabelle beschreibt die Schritte im Diagramm.
Schritt |
Beschreibung |
---|---|
1 |
Ein Benutzer füllt ein interaktives Formular aus und klickt auf die Senden-Schaltfläche des Formulars. |
2 |
Daten werden als XML-Daten an das Java-Servlet |
3 |
Das Java-Servlet |
Wenn Formulardaten als XML gesendet werden, können Sie XML-Daten abrufen, die die gesendeten Daten repräsentieren. Alle Formularfelder werden als Nodes in einem XML-Schema angezeigt. Die Knotenwerte entsprechen den Werten, die der Benutzer ausgefüllt hat. Angenommen, jedes Feld im Formular wird als Node in den XML-Daten angezeigt. Der Wert jeder Node entspricht dem Wert, den ein Benutzer ausfüllt. Angenommen, ein Benutzer füllt das Kreditformular mit Daten, die im folgenden Formular angezeigt werden.
Die folgende Abbildung zeigt die entsprechenden XML-Daten, die mithilfe der Forms-Dienst-Client-API abgerufen werden.
Die Felder im Kreditformular. Diese Werte können abgerufen werden
Java XML-Klassen verwenden.
Der Formularentwurf muss in Designer korrekt konfiguriert sein, damit Daten als XML-Daten gesendet werden. Um den Formularentwurf für die Übermittlung von XML-Daten ordnungsgemäß zu konfigurieren, stellen Sie sicher, dass die Senden-Schaltfläche im Formularentwurf auf Senden von XML-Daten eingestellt ist. Informationen zum Festlegen der Senden-Schaltfläche zum Senden von XML-Daten finden Sie unter AEM Forms Designer.
Betrachten Sie eine Webanwendung, die den Forms-Dienst aufruft. Nachdem der Forms-Dienst ein interaktives PDF-Formular an einen Client-Webbrowser gerendert hat, füllt der Benutzer das Formular aus und sendet es als PDF-Daten zurück. Wenn der Forms-Dienst die PDF-Daten empfängt, kann er die PDF-Daten an einen anderen Dienst senden oder als PDF-Datei speichern. Das folgende Diagramm zeigt den logischen Ablauf der Anwendung.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
Schritt |
Beschreibung |
---|---|
1 |
Eine Webseite enthält einen Link, der auf ein Java-Servlet zugreift, das den Forms-Dienst aufruft. |
2 |
Der Forms-Dienst rendert ein interaktives PDF-Formular im Client-Webbrowser. |
1 |
Der Benutzer füllt ein interaktives Formular aus und klickt auf eine Senden-Schaltfläche. Das Formular wird als PDF-Daten an den Forms-Dienst zurückgesendet. Diese Option ist in Designer festgelegt. |
4 |
Der Forms-Dienst speichert die PDF-Daten als PDF-Datei. |
Wenn Formulardaten als URL-UTF-16-Daten übermittelt werden, erfordert der Clientcomputer Adobe Reader oder Acrobat 8.1 oder höher. Enthält der Formularentwurf eine Senden-Schaltfläche mit URL-kodierten Daten (HTTP Post) und die Datenkodierungsoption UTF-16, muss der Formularentwurf in einem Texteditor wie Notepad geändert werden. Sie können die Kodierungsoption für die Senden-Schaltfläche entweder auf UTF-16LE
oder auf UTF-16BE
setzen. Designer bietet diese Funktion nicht.
Weitere Informationen zum Forms-Dienst finden Sie unter Dienste-Referenz für AEM Forms.
So verarbeiten Sie gesendete Formulare:
Projektdateien einschließen
Schließen Sie die erforderlichen Dateien in Ihr Entwicklungsprojekt ein. Wenn Sie eine Clientanwendung mit Java erstellen, schließen Sie die erforderlichen JAR-Dateien ein. Wenn Sie Webdienste verwenden, stellen Sie sicher, dass Sie die Proxydateien einschließen.
Forms Client API-Objekt erstellen
Bevor Sie einen Forms-Dienst-Client-API-Vorgang programmgesteuert durchführen können, müssen Sie einen Forms-Dienstclient erstellen. Wenn Sie die Java-API verwenden, erstellen Sie ein FormsServiceClient
-Objekt. Wenn Sie die Forms-Webdienst-API verwenden, erstellen Sie ein FormsService
-Objekt.
Formulardaten abrufen
Um gesendete Formulardaten abzurufen, rufen Sie die FormsServiceClient
-Methode des Objekts processFormSubmission
auf. Beim Aufrufen dieser Methode müssen Sie den Inhaltstyp des gesendeten Formulars angeben. Wenn Daten von einem Client-Webbrowser an den Forms-Dienst gesendet werden, können sie als XML- oder PDF-Daten übermittelt werden. Zum Abrufen der in Formularfelder eingegebenen Daten können die Daten als XML-Daten gesendet werden.
Sie können Formularfelder auch aus einem als PDF-Daten gesendeten Formular abrufen, indem Sie die folgenden Laufzeitoptionen festlegen:
processFormSubmission
-Methode: CONTENT_TYPE=application/pdf
.RenderOptionsSpec
auf PDFToXDP
true
RenderOptionsSpec
auf ExportDataFormat
XMLData
Sie geben den Inhaltstyp des gesendeten Formulars an, wenn Sie die processFormSubmission
-Methode aufrufen. In der folgenden Liste werden die entsprechenden Inhaltstypwerte angegeben:
Sie werden feststellen, dass dem Abschnitt "Bearbeitung gesendet am Forms"drei entsprechende schnelle Beginn zugeordnet sind. Die als PDF gesendeten PDF forms mit dem Java-API-Quick-Beginn zeigen, wie gesendete PDF-Daten verarbeitet werden. Der in diesem Quick-Beginn angegebene Inhaltstyp ist application/pdf
. Die PDF forms, die mit dem Java-API-Quick-Beginn als XML gesendet wurden, zeigen, wie gesendete XML-Daten, die von einem PDF-Formular gesendet wurden, verarbeitet werden. Der in diesem Quick-Beginn angegebene Inhaltstyp ist text/xml
. Gleichermaßen zeigt der Handling-HTML-Formulare, die mit dem Java-API-Quick-Beginn als XML gesendet wurden, wie gesendete XML-Daten, die von einem HTML-Formular gesendet wurden, verarbeitet werden. Der in diesem Quick-Beginn angegebene Inhaltstyp lautet application/x-www-form-urlencoded.
Sie rufen Formulardaten ab, die an den Forms-Dienst gesendet wurden, und bestimmen den Verarbeitungsstatus. Das heißt, wenn Daten an den Forms-Dienst übermittelt werden, bedeutet dies nicht unbedingt, dass der Forms-Dienst die Verarbeitung der Daten abgeschlossen hat und die Daten verarbeitet werden können. Beispielsweise können Daten an den Forms-Dienst gesendet werden, damit eine Berechnung durchgeführt werden kann. Nach Abschluss der Berechnung wird das Formular mit den angezeigten Berechnungsergebnissen an den Benutzer zurückgegeben. Bevor Sie gesendete Daten verarbeiten, sollten Sie ermitteln, ob der Forms-Dienst die Verarbeitung der Daten abgeschlossen hat.
Der Forms-Dienst gibt die folgenden Werte zurück, um anzugeben, ob die Verarbeitung der Daten abgeschlossen ist:
Berechnungen und Überprüfungen müssen dem Benutzer wiedergegeben werden. (Siehe Berechnen von Formulardaten.
Stellen Sie fest, ob die Formularübermittlung Dateianlagen enthält.
Forms, das an den Forms-Dienst gesendet wird, kann Dateianlagen enthalten. Beispielsweise kann ein Benutzer im integrierten Anlagenbereich von Acrobat Dateianlagen auswählen, die zusammen mit dem Formular gesendet werden sollen. Außerdem kann ein Benutzer Dateianlagen auch über eine HTML-Symbolleiste auswählen, die mit einer HTML-Datei wiedergegeben wird.
Nachdem Sie festgestellt haben, ob ein Formular Dateianhänge enthält, können Sie die Daten verarbeiten. Sie können die Dateianlage beispielsweise im lokalen Dateisystem speichern.
Das Formular muss als PDF-Daten gesendet werden, um Dateianlagen abrufen zu können. Wenn das Formular als XML-Daten gesendet wird, werden keine Dateianlagen gesendet.
Verarbeiten der gesendeten Daten
Je nach Inhaltstyp der gesendeten Daten können Sie einzelne Formularfeldwerte aus den gesendeten XML-Daten extrahieren oder die gesendeten PDF-Daten als PDF-Datei speichern (oder an einen anderen Dienst senden). Um einzelne Formularfelder zu extrahieren, konvertieren Sie gesendete XML-Daten in eine XML-Datenquelle und rufen dann XML-Datenquellenwerte mithilfe von org.w3c.dom
-Klassen ab.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Weiterleiten von Dokumenten an den Forms-Dienst
Erstellen von Webanwendungen zum Rendern von Forms
Verarbeiten Sie ein gesendetes Formular mit der Forms API (Java):
Projektdateien einschließen
Schließen Sie Client-JAR-Dateien wie "adobe-forms-client.jar"im Klassenpfad Ihres Java-Projekts ein.
Forms Client API-Objekt erstellen
ServiceClientFactory
-" -Objekt, das Verbindungseigenschaften enthält.FormsServiceClient
-Objekt, indem Sie den Konstruktor verwenden und das ServiceClientFactory
-Objekt übergeben.Formulardaten abrufen
com.adobe.idp.Document
-Objekt, indem Sie den Konstruktor verwenden und die javax.servlet.http.HttpServletResponse
-Objektmethode getInputStream
aus dem Konstruktor aufrufen.RenderOptionsSpec
, indem Sie den Konstruktor verwenden. Legen Sie den Gebietsschemawert fest, indem Sie die RenderOptionsSpec
-Methode des Objekts setLocale
aufrufen und einen Zeichenfolgenwert übergeben, der den Gebietsschemawert angibt.Sie können den Forms-Dienst anweisen, XDP- oder XML-Daten aus gesendeten PDF-Inhalten zu erstellen, indem Sie die RenderOptionsSpec
-Methode des Objekts aufrufen und setPDF2XDP
übergeben und auch true
aufrufen und setXMLData
übergeben. true
Sie können dann die FormsResult
-Methode des Objekts aufrufen, um die XML-Daten abzurufen, die den XDP-/XML-Daten entsprechen. getOutputXML
(Das FormsResult
-Objekt wird von der processFormSubmission
-Methode zurückgegeben, die im nächsten Unterschritt beschrieben wird.)
Rufen Sie die FormsServiceClient
-Methode des Objekts auf und übergeben Sie die folgenden Werte:processFormSubmission
com.adobe.idp.Document
-Objekt, das die Formulardaten enthält.CONTENT_TYPE=text/xml
. Um PDF-Daten zu verarbeiten, geben Sie den folgenden Zeichenfolgenwert für diesen Parameter an: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
angibt, z. B. . Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Dieser Parameterwert ist optional.RenderOptionsSpec
-Objekt, das Laufzeitoptionen speichert.Die processFormSubmission
-Methode gibt ein FormsResult
-Objekt zurück, das die Ergebnisse der Formularübermittlung enthält.
Stellen Sie fest, ob die Verarbeitung der Formulardaten durch den Forms-Dienst abgeschlossen ist, indem Sie die FormsResult
-Methode des Objekts aufrufen. getAction
Wenn diese Methode den Wert 0
zurückgibt, können die Daten verarbeitet werden.
Stellen Sie fest, ob die Formularübermittlung Dateianlagen enthält.
FormsResult
-Methode des Objekts getAttachments
auf. Diese Methode gibt ein java.util.List
-Objekt zurück, das Dateien enthält, die mit dem Formular gesendet wurden.java.util.List
-Objekt, um festzustellen, ob Dateianlagen vorhanden sind. Wenn Dateianlagen vorhanden sind, ist jedes Element eine com.adobe.idp.Document
-Instanz. Sie können die Dateianlagen speichern, indem Sie die com.adobe.idp.Document
-Methode des Objekts copyToFile
aufrufen und ein java.io.File
-Objekt übergeben.Dieser Schritt ist nur relevant, wenn das Formular als PDF gesendet wird.
Verarbeiten der gesendeten Daten
Wenn der Datentyp application/vnd.adobe.xdp+xml
oder text/xml
lautet, erstellen Sie eine Anwendungslogik zum Abrufen von XML-Datenwerten.
com.adobe.idp.Document
-Objekt, indem Sie die FormsResult
-Methode des Objekts getOutputContent
aufrufen.java.io.InputStream
-Objekt, indem Sie den java.io.DataInputStream
-Konstruktor aufrufen und das com.adobe.idp.Document
-Objekt übergeben.org.w3c.dom.DocumentBuilderFactory
-Objekt, indem Sie die newInstance
-Methode des statischen org.w3c.dom.DocumentBuilderFactory
-Objekts aufrufen.org.w3c.dom.DocumentBuilder
-Objekt, indem Sie die org.w3c.dom.DocumentBuilderFactory
-Methode des Objekts newDocumentBuilder
aufrufen.org.w3c.dom.Document
-Objekt, indem Sie die org.w3c.dom.DocumentBuilder
-Methode des Objekts parse
aufrufen und das java.io.InputStream
-Objekt übergeben.org.w3c.dom.Document
-Objekt und den Namen der Node, deren Wert Sie abrufen möchten. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Wert der Node darstellt. Im Codebeispiel, das diesem Prozess folgt, heißt diese benutzerdefinierte Methode getNodeText
. Der Hauptteil dieser Methode wird angezeigt.Wenn der Datentyp application/pdf
lautet, erstellen Sie eine Anwendungslogik, um die gesendeten PDF-Daten als PDF-Datei zu speichern.
com.adobe.idp.Document
-Objekt, indem Sie die FormsResult
-Methode des Objekts getOutputContent
aufrufen.java.io.File
-Objekt mit dem öffentlichen Konstruktor. Achten Sie darauf, PDF als Dateinamenerweiterung anzugeben.com.adobe.idp.Document
-Methode des Objekts copyToFile
aufrufen und das java.io.File
-Objekt übergeben.Siehe auch
Quick Beginn (SOAP-Modus): Umgang mit PDF forms, die als XML mit der Java-API gesendet werden
Quick Beginn (SOAP-Modus): Umgang mit HTML-Formularen, die als XML mit der Java-API gesendet werden
Quick Beginn (SOAP-Modus): Umgang mit PDF forms, die als PDF mit der Java-API gesendet wurden
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Verarbeiten Sie ein gesendetes Formular mit der Forms API (Webdienst):
Projektdateien einschließen
Forms Client API-Objekt erstellen
Erstellen Sie ein FormsService
-Objekt und legen Sie Authentifizierungswerte fest.
Formulardaten abrufen
Um Formulardaten abzurufen, die auf einem Java-Servlet veröffentlicht wurden, erstellen Sie ein BLOB
-Objekt mit dessen Konstruktor.
Erstellen Sie ein java.io.InputStream
-Objekt, indem Sie die javax.servlet.http.HttpServletResponse
-Methode des Objekts getInputStream
aufrufen.
Erstellen Sie ein java.io.ByteArrayOutputStream
-Objekt, indem Sie den Konstruktor verwenden und die Länge des java.io.InputStream
-Objekts übergeben.
Kopieren Sie den Inhalt des Objekts java.io.InputStream
in das Objekt java.io.ByteArrayOutputStream
.
Erstellen Sie ein Bytearray, indem Sie die java.io.ByteArrayOutputStream
-Methode des Objekts toByteArray
aufrufen.
Füllen Sie das BLOB
-Objekt, indem Sie die setBinaryData
-Methode aufrufen und das Bytearray als Argument übergeben.
Erstellen Sie ein Objekt RenderOptionsSpec
, indem Sie den Konstruktor verwenden. Legen Sie den Gebietsschemawert fest, indem Sie die RenderOptionsSpec
-Methode des Objekts setLocale
aufrufen und einen Zeichenfolgenwert übergeben, der den Gebietsschemawert angibt.
Rufen Sie die FormsService
-Methode des Objekts auf und übergeben Sie die folgenden Werte:processFormSubmission
BLOB
-Objekt, das die Formulardaten enthält.CONTENT_TYPE=text/xml
. Um PDF-Daten zu verarbeiten, geben Sie den folgenden Zeichenfolgenwert für diesen Parameter an: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
angibt; zum Beispiel Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
-Objekt, das Laufzeitoptionen speichert.BLOBHolder
-Objekt, das von der Methode gefüllt wird.javax.xml.rpc.holders.StringHolder
-Objekt, das von der Methode gefüllt wird.BLOBHolder
-Objekt, das von der Methode gefüllt wird.BLOBHolder
-Objekt, das von der Methode gefüllt wird.javax.xml.rpc.holders.ShortHolder
-Objekt, das von der Methode gefüllt wird.MyArrayOf_xsd_anyTypeHolder
-Objekt, das von der Methode gefüllt wird. Dieser Parameter wird zum Speichern von Dateianlagen verwendet, die zusammen mit dem Formular gesendet werden.FormsResultHolder
-Objekt, das von der Methode mit dem gesendeten Formular gefüllt wird.Die processFormSubmission
-Methode füllt den Parameter FormsResultHolder
mit den Ergebnissen der Formularübermittlung.
Stellen Sie fest, ob die Verarbeitung der Formulardaten durch den Forms-Dienst abgeschlossen ist, indem Sie die FormsResult
-Methode des Objekts aufrufen. getAction
Wenn diese Methode den Wert 0
zurückgibt, können die Formulardaten verarbeitet werden. Sie können ein FormsResult
-Objekt abrufen, indem Sie den Wert des FormsResultHolder
-Datenelements des Objekts value
abrufen.
Stellen Sie fest, ob die Formularübermittlung Dateianlagen enthält.
Rufen Sie den Wert des MyArrayOf_xsd_anyTypeHolder
-Datenelements des value
-Objekts ab (das MyArrayOf_xsd_anyTypeHolder
-Objekt wurde an die processFormSubmission
-Methode übergeben). Dieser Datenmember gibt ein Array von Objects
zurück. Jedes Element im Array Object
ist ein Object
Element, das den Dateien entspricht, die zusammen mit dem Formular gesendet wurden. Sie können jedes Element im Array abrufen und in ein BLOB
-Objekt umwandeln.
Verarbeiten der gesendeten Daten
Wenn der Datentyp application/vnd.adobe.xdp+xml
oder text/xml
lautet, erstellen Sie eine Anwendungslogik zum Abrufen von XML-Datenwerten.
BLOB
-Objekt, indem Sie die FormsResult
-Methode des Objekts getOutputContent
aufrufen.BLOB
-Methode des Objekts getBinaryData
aufrufen.java.io.InputStream
-Objekt, indem Sie den java.io.ByteArrayInputStream
-Konstruktor aufrufen und das Bytearray übergeben.org.w3c.dom.DocumentBuilderFactory
-Objekt, indem Sie die newInstance
-Methode des statischen org.w3c.dom.DocumentBuilderFactory
-Objekts aufrufen.org.w3c.dom.DocumentBuilder
-Objekt, indem Sie die org.w3c.dom.DocumentBuilderFactory
-Methode des Objekts newDocumentBuilder
aufrufen.org.w3c.dom.Document
-Objekt, indem Sie die org.w3c.dom.DocumentBuilder
-Methode des Objekts parse
aufrufen und das java.io.InputStream
-Objekt übergeben.org.w3c.dom.Document
-Objekt und den Namen der Node, deren Wert Sie abrufen möchten. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Wert der Node darstellt. Im Codebeispiel, das diesem Prozess folgt, heißt diese benutzerdefinierte Methode getNodeText
. Der Hauptteil dieser Methode wird angezeigt.Wenn der Datentyp application/pdf
lautet, erstellen Sie eine Anwendungslogik, um die gesendeten PDF-Daten als PDF-Datei zu speichern.
BLOB
-Objekt, indem Sie die FormsResult
-Methode des Objekts getOutputContent
aufrufen.BLOB
-Methode des Objekts getBinaryData
aufrufen.java.io.File
-Objekt mit dem öffentlichen Konstruktor. Achten Sie darauf, PDF als Dateinamenerweiterung anzugeben.java.io.FileOutputStream
-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.File
-Objekt übergeben.java.io.FileOutputStream
-Methode des Objekts write
aufrufen und das Bytearray übergeben.Siehe auch
Aufrufen von AEM Forms mit Base64-Kodierung