Der Forms-Service rendert interaktive PDF-Formulare an Client-Geräte, normalerweise Webbrowser, um Benutzerinformationen zu erfassen. Nachdem ein interaktives Formular gerendert wurde, kann ein Benutzer Daten in Formularfelder eingeben und auf dem Formular auf eine Senden-Schaltfläche klicken, um Informationen an den Forms-Service zurückzusenden. Damit ein interaktives PDF-Formular angezeigt werden kann, muss Adobe Reader oder Acrobat auf dem Computer installiert sein, auf dem der Client-Webbrowser läuft.
Bevor Sie ein Formular mit dem Forms-Service wiedergeben können, erstellen Sie einen Formularentwurf. In der Regel wird ein Formularentwurf in Designer erstellt und als XDP-Datei gespeichert. Informationen zum Erstellen eines Formularentwurfs finden Sie unter Forms-Designer.
Beispielformular für einen Darlehensantrag
Anhand eines Beispiels für einen Darlehensantrag wird gezeigt, wie der Forms-Service interaktive Formulare verwendet, um Informationen von Benutzern zu erfassen. Mit diesem Antrag kann ein Benutzer ein Formular mit Daten ausfüllen, die für die Aufnahme eines Darlehens erforderlich sind, und die Daten dann an den Forms-Service übermitteln. Das folgende Diagramm zeigt den logischen Ablauf des Darlehensantrags.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
Schritt |
Beschreibung |
---|---|
1 |
Das Java-Servlet |
2 |
Das Java-Servlet |
3 |
Nachdem der Benutzer das Darlehensformular ausgefüllt und auf die Senden-Schaltfläche geklickt hat, werden die Daten an das Java-Servlet |
4 |
Das Java-Servlet |
5 |
Ein Bestätigungsformular wird an den Webbrowser zurückgegeben. Daten wie der Vor- und Nachname des Benutzers werden mit dem Formular zusammengeführt, bevor es wiedergegeben wird. (Siehe Vorausfüllen von Formularen mit flexiblen Layouts.) |
Darlehensformular
Dieses interaktive Darlehensformular wird vom Java-Servlet GetLoanForm
des Beispiel-Darlehensantrags gerendert.
Bestätigungsformular
Dieses Formular wird vom Java-Servlet HandleData
des Beispiel-Darlehensantrags gerendert.
Das Java-Servlet HandleData
füllt dieses Formular vorab mit dem Vor- und Nachnamen des Benutzers sowie dem Betrag. Nachdem das Formular vorausgefüllt wurde, wird es an den Client-Webbrowser gesendet. (Siehe Vorausfüllen von Forms mit flexiblen Layouts)
Java-Servlets
Der Beispiel-Darlehensantrag ist ein Beispiel für ein Forms Service-Programm, das als Java-Servlet vorhanden ist. Ein Java-Servlet ist ein Java-Programm, das auf einem J2EE-Programm-Server wie WebSphere ausgeführt wird und den Client-API-Code des Forms-Services enthält.
Der folgende Code zeigt die Syntax eines Java-Servlets mit dem Namen GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normalerweise würden Sie den Client-API-Code des Forms-Services nicht innerhalb der Methode doGet
oder doPost
eines Java-Servlets platzieren. Es ist eine bessere Programmierpraxis, diesen Code in einer separaten Klasse zu platzieren, die Klasse innerhalb der Methode doPost
(oder doGet
) zu instanziieren und die entsprechenden Methoden aufzurufen. Aus Gründen der Kürze des Codes werden die Code-Beispiele in diesem Abschnitt jedoch auf ein Minimum beschränkt und die Code-Beispiele in der Methode doPost
untergebracht.
Weitere Informationen zum Forms-Service finden Sie in der Service-Referenz für AEM Forms.
Zusammenfassung der Schritte
Um ein interaktives PDF-Formular zu rendern, führen Sie die folgenden Schritte aus:
Projektdateien einschließen
Schließen Sie die erforderlichen Dateien in Ihr Entwicklungsprojekt ein. Wenn Sie ein Client-Programm mit Java erstellen, schließen Sie die erforderlichen JAR-Dateien ein. Wenn Sie Webdienste verwenden, stellen Sie sicher, dass Sie die Proxy-Dateien einschließen.
Erstellen eines Forms-Client-API-Objekts
Bevor Sie einen Client-API-Vorgang für den Forms-Service programmgesteuert durchführen können, müssen Sie ein Forms-Client-API-Objekt erstellen. Wenn Sie die Java-API verwenden, erstellen Sie ein FormsServiceClient
-Objekt. Wenn Sie die Forms-Webservice-API verwenden, erstellen Sie ein FormsService
-Objekt.
Angeben von URI-Werten
Sie können URI-Werte angeben, die der Forms-Service zum Rendern eines Formulars benötigt. Ein Formularentwurf, der als Teil eines Forms-Programm gespeichert wird, kann mithilfe des Inhaltsstamm-URI-Werts repository:///
referenziert werden. Betrachten Sie beispielsweise den folgenden Formularentwurf mit dem Namen Loan.xdp innerhalb eines Forms-Programms mit dem Namen FormsApplication:
Um auf diesen Formularentwurf zuzugreifen, geben Sie Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
als Formularnamen (den ersten Parameter, der an die Methode renderPDFForm
übergeben wird) und repository:///
als Inhaltsstamm-URI-Wert an.
Informationen zum Erstellen eines Forms-Programms mit Workbench finden Sie in der Workbench-Hilfe.
Der Pfad zu einer Ressource in einem Forms-Programm lautet:
Applications/Application-name/Application-version/Folder.../Filename
Die folgenden Werte zeigen einige Beispiele für URI-Werte:
Beim Rendern eines interaktiven Formulars können Sie URI-Werte definieren, z. B. die Ziel-URL, an die die Formulardaten gesendet werden. Die Ziel-URL kann auf eine der folgenden Arten definiert werden:
Wenn die Ziel-URL im Formularentwurf definiert ist, darf sie nicht mit der Client-API des Forms-Services überschrieben werden. Das heißt, durch Festlegen der Ziel-URL mithilfe der Forms-API wird die angegebene URL im Formularentwurf auf die URL zurückgesetzt, die mithilfe der API angegeben wurde. Wenn Sie das PDF-Formular an die im Formularentwurf angegebene Ziel-URL senden möchten, legen Sie die Ziel-URL programmgesteuert auf eine leere Zeichenfolge fest.
Wenn Sie ein Formular mit einer Senden-Schaltfläche und einer Berechnen-Schaltfläche (mit einem entsprechenden Skript, das auf dem Server ausgeführt wird) haben, können Sie programmgesteuert die URL definieren, an die das Formular gesendet wird, um das Skript auszuführen. Verwenden Sie die Senden-Schaltfläche im Formularentwurf, um die URL anzugeben, an die die Formulardaten gesendet werden. (Siehe Berechnen von Formulardaten.)
Anstatt einen URL-Wert anzugeben, um auf eine XDP-Datei zu verweisen, können Sie auch eine com.adobe.idp.Document
-Instanz an den Forms-Service übergeben. Die com.adobe.idp.Document
-Instanz enthält einen Formularentwurf. (Siehe Übergeben von Dokumenten an den Forms-Service.)
Anhängen von Dateien an das Formular
Sie können Dateien an ein Formular anhängen. Wenn Sie ein PDF-Formular mit Dateianlagen rendern, können Benutzer die Dateianlagen in Acrobat mithilfe des Bereichs „Dateianlagen“ abrufen. Sie können verschiedene Dateitypen an ein Formular anhängen, z. B. eine Textdatei oder eine Binärdatei wie eine JPG-Datei.
Das Anhängen von Dateianlagen an ein Formular ist optional.
Rendern eines interaktiven PDF-Formulars
Um ein Formular wiederzugeben, verwenden Sie einen Formularentwurf, der in Designer erstellt und als XDP- oder PDF-Datei gespeichert wurde. Sie können auch ein Formular wiedergeben, das mit Acrobat erstellt und als PDF-Datei gespeichert wurde. Um ein interaktives PDF-Formular zu rendern, rufen Sie die Methode renderPDFForm
oder die Methode renderPDFForm2
des FormsServiceClient
-Objekts auf.
Die Methode renderPDFForm
verwendet ein URLSpec
-Objekt. Der Inhaltsstamm der XDP-Datei wird mit der Methode setContentRootURI
des URLSpec
-Objekts an den Forms-Service übergeben. Der Name des Formularentwurfs (formQuery
) wird als separater Parameterwert übergeben. Die beiden Werte werden zusammengefügt, um den absoluten Verweis auf den Formularentwurf zu erhalten.
Die Methode renderPDFForm2
akzeptiert eine com.adobe.idp.Document
-Instanz, die das zu rendernde XDP- oder PDF-Dokument enthält.
Die Laufzeitoption für mit Tags versehene PDF kann nicht festgelegt werden, wenn das Eingabedokument ein PDF-Dokument ist. Wenn es sich bei der Eingabedatei um eine XDP-Datei handelt, kann die mit Tags versehene PDF-Option festgelegt werden.
So rendern Sie ein interaktives PDF-Formular mithilfe der Forms-API (Java):
Projektdateien einschließen
Fügen Sie Client-JAR-Dateien wie „adobe-forms-client.jar“ in den Klassenpfad Ihres Java-Projekts ein.
Erstellen eines Forms Client-API-Objekts
ServiceClientFactory
-Objekt, das Verbindungseigenschaften enthält.FormsServiceClient
-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory
-Objekt übergeben.Angeben der URI-Werte
URLSpec
-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden.setApplicationWebRoot
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Web-Stamm des Programms darstellt.setContentRootURI
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den URI-Wert des Inhaltsstamms angibt. Stellen Sie sicher, dass sich der Formularentwurf im Inhaltsstamm-URI befindet. Andernfalls löst der Forms-Service eine Ausnahme aus. Um auf das Repository zu verweisen, geben Sie repository:///
an.setTargetURL
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Ziel-URL-Wert angibt, an den die Formulardaten gesendet werden. Wenn Sie die Ziel-URL im Formularentwurf definieren, können Sie auch eine leere Zeichenfolge übergeben. Sie können auch die URL angeben, an die ein Formular gesendet wird, um Berechnungen durchzuführen.Anhängen von Dateien an das Formular
Erstellen Sie ein java.util.HashMap
-Objekt, um Dateianhänge zu speichern, indem Sie seinen Konstruktor verwenden.
Rufen Sie die Methode put
des java.util.HashMap
-Objekts für jede Datei auf, die an das gerenderte Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:
Ein com.adobe.idp.Document
-Objekt, das die Dateianlage enthält.
Wiederholen Sie diesen Schritt für jede Datei, die an das Formular angehängt werden soll. Dieser Schritt ist optional und Sie können null
* , wenn Sie keine Dateianlagen senden möchten.*
Wiedergeben eines interaktiven PDF-Formulars
Rufen Sie die Methode renderPDFForm
des FormsServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
-Objekt, das Daten enthält, die mit dem Formular zusammengeführt werden sollen. Wenn Sie keine Daten zusammenführen möchten, übergeben Sie ein leeres com.adobe.idp.Document
-Objekt.PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter, für den Sie null
angeben können, wenn Sie keine Laufzeitoptionen angeben möchten.URLSpec
-Objekt, das URI-Werte enthält, die für den Forms-Service erforderlich sind.java.util.HashMap
-Objekt, in dem Dateianlagen gespeichert werden. Dies ist ein optionaler Parameter, für den Sie null
angeben können, wenn Sie keine Dateien an das Formular anhängen möchten.Die Methode renderPDFForm
gibt ein FormsResult
-Objekt zurück, das einen Formulardaten-Stream enthält, der in den Client-Webbrowser geschrieben werden muss.
Schreiben des Formulardaten-Streams in den Client-Webbrowser
com.adobe.idp.Document
-Objekt, indem Sie die Methode getOutputContent
des FormsResult
-Objekts aufrufen.com.adobe.idp.Document
-Objekts, indem Sie seine Methode getContentType
aufrufen.javax.servlet.http.HttpServletResponse
-Objekts fest, indem Sie seine Methode setContentType
aufrufen und den Content-Typ des com.adobe.idp.Document
-Objekts übergeben.javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser verwendet wird, indem Sie die Methode getOutputStream
des javax.servlet.http.HttpServletResponse
-Objekts aufrufen.java.io.InputStream
-Objekt, indem Sie die Methode getInputStream
des com.adobe.idp.Document
-Objekts aufrufen.read
des InputStream
-Objekts aufrufen und das Byte-Array als Argument übergeben.write
des javax.servlet.ServletOutputStream
-Objekts auf, um den Formulardaten-Stream an den Client-Webbrowser zu senden. Übergeben Sie das Byte-Array an die Methode write
.So rendern Sie ein interaktives PDF-Formular mithilfe der Forms-API (Webservice):
Projektdateien einschließen
Erstellen eines Forms Client-API-Objekts
Erstellen Sie ein FormsService
-Objekt und legen Sie Authentifizierungswerte fest.
Angeben der URI-Werte
URLSpec
-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden.setApplicationWebRoot
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Web-Stamm des Programms darstellt.setContentRootURI
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den URI-Wert des Inhaltsstamms angibt. Stellen Sie sicher, dass sich der Formularentwurf im Inhaltsstamm-URI befindet. Andernfalls löst der Forms-Service eine Ausnahme aus. Um auf das Repository zu verweisen, geben Sie repository:///
an.setTargetURL
des URLSpec
-Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Ziel-URL-Wert angibt, an den die Formulardaten gesendet werden. Wenn Sie die Ziel-URL im Formularentwurf definieren, können Sie auch eine leere Zeichenfolge übergeben. Sie können auch die URL angeben, an die ein Formular gesendet wird, um Berechnungen durchzuführen.Anhängen von Dateien an das Formular
Erstellen Sie ein java.util.HashMap
-Objekt, um Dateianhänge zu speichern, indem Sie seinen Konstruktor verwenden.
Rufen Sie die Methode put
des java.util.HashMap
-Objekts für jede Datei auf, die an das gerenderte Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:
Ein BLOB
-Objekt, das den Dateianhang enthält
Wiederholen Sie diesen Schritt für jede Datei, die an das Formular angehängt werden soll.
Wiedergeben eines interaktiven PDF-Formulars
Rufen Sie die Methode renderPDFForm
des FormsService
-Objekts auf und übergeben Sie die folgenden Werte:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
-Objekt, das Daten enthält, die mit dem Formular zusammengeführt werden sollen. Wenn Sie keine Daten zusammenführen möchten, übergeben Sie null
.PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter, für den Sie null
angeben können, wenn Sie keine Laufzeitoptionen angeben möchten.URLSpec
-Objekt, das URI-Werte enthält, die für den Forms-Service erforderlich sind.java.util.HashMap
-Objekt, in dem Dateianlagen gespeichert werden. Dies ist ein optionaler Parameter. Sie können null
festlegen, wenn Sie keine Dateien an das Formular anhängen möchten.com.adobe.idp.services.holders.BLOBHolder
-Objekt, das von der Methode gefüllt wird. Damit wird das wiedergegebene PDF-Formular gespeichert.javax.xml.rpc.holders.LongHolder
-Objekt, das von der Methode aufgefüllt wird. (Dieses Argument speichert die Anzahl der Seiten im Formular.)javax.xml.rpc.holders.StringHolder
-Objekt, das von der Methode aufgefüllt wird. (Dieses Argument speichert den Gebietsschemawert.)com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das die Ergebnisse dieses Vorgangs enthalten wird.Die Methode renderPDFForm
füllt das com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das als letzter Argumentwert übergeben wird, mit einem Formulardaten-Stream, der in den Client-Webbrowser geschrieben werden muss.
Schreiben des Formulardaten-Streams in den Client-Webbrowser
FormResult
-Objekt, indem Sie den Wert des Datenelements value
des com.adobe.idp.services.holders.FormsResultHolder
-Objekts abrufen.BLOB
-Objekt, das Formulardaten enthält, indem Sie die Methode getOutputContent
des FormsResult
-Objekts aufrufen.BLOB
-Objekts, indem Sie seine Methode getContentType
aufrufen.javax.servlet.http.HttpServletResponse
-Objekts fest, indem Sie seine Methode setContentType
aufrufen und den Content-Typ des BLOB
-Objekts übergeben.javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Stream in den Client-Webbrowser verwendet wird, indem Sie die Methode getOutputStream
des javax.servlet.http.HttpServletResponse
-Objekts aufrufen.getBinaryData
des BLOB
-Objekts aufrufen. Mit dieser Aufgabe wird dem Byte-Array der Inhalt des FormsResult
-Objekts zugewiesen.write
des javax.servlet.http.HttpServletResponse
-Objekts auf, um den Formulardaten-Stream an den Client-Webbrowser zu senden. Übergeben Sie das Byte-Array an die Methode write
.Schreiben des Formulardaten-Streams in den Client-Webbrowser
Wenn der Forms-Service ein Formular rendert, wird ein Formulardatenstrom zurückgegeben, den Sie in den Client-Webbrowser schreiben müssen. Sobald das Formular in den Client-Webbrowser geschrieben wurde, ist es für den Benutzer sichtbar.