Rendern interaktiver PDF-Formulare rendering-interactive-pdf-forms
Die Beispiele in diesem Dokument gelten nur für eine AEM Forms on JEE-Umgebung.
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.
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 Logikfluss des Kreditantrags.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
GetLoanForm
wird von einer HTML-Seite aufgerufen.GetLoanForm
verwendet die Client-API des Forms-Services, um das Darlehensformular im Client-Webbrowser zu rendern. (Siehe Rendern eines interaktiven PDF-Formulars mithilfe der Java-API.)HandleData
übermittelt. (Siehe „Darlehensformular“.)HandleData
verwendet die Client-API des Forms-Services, um die Formularübermittlung zu verarbeiten und Formulardaten abzurufen. Die Daten werden dann in einer Unternehmensdatenbank gespeichert. (Siehe Umgang mit übermittelten Formularen.)Darlehensformular
Dieses interaktive Darlehensformular wird durch die GetLoanForm
Java-Servlet.
Bestätigungsformular
Dieses Formular wird durch das Beispiel für einen Kreditantrag wiedergegeben HandleData
Java-Servlet.
Die HandleData
Java Servlet füllt dieses Formular mit dem Vor- und Nachnamen des Benutzers und dem Betrag vorab aus. 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 platzieren Sie den Client-API-Code des Forms-Dienstes nicht in einem Java-Servlet doGet
oder doPost
-Methode. 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.
Zusammenfassung der Schritte
Um ein interaktives PDF-Formular zu rendern, führen Sie die folgenden Schritte aus:
- Schließen Sie Projektdateien ein.
- Erstellen Sie ein Forms-Client-API-Objekt.
- Geben Sie URI-Werte an.
- Hängen Sie Dateien an das Formular an (optional).
- Rendern Sie ein interaktives PDF-Formular.
- Schreiben Sie den Formular-Datenstrom in den Client-Webbrowser.
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.
Der Pfad zu einer Ressource in einer Forms-Anwendung lautet:
Applications/Application-name/Application-version/Folder.../Filename
Die folgenden Werte zeigen einige Beispiele für URI-Werte:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
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:
- Auf der Senden-Schaltfläche beim Entwerfen des Formularentwurfs in Designer
- Durch Verwendung der Client-API des Forms-Services
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.)
com.adobe.idp.Document
-Instanz auf den Forms-Dienst hinzu. 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.
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. Rufen Sie zum Rendern eines interaktiven PDF-Formulars die FormsServiceClient
-Objekt renderPDFForm
Methode oder renderPDFForm2
-Methode.
Die Methode renderPDFForm
verwendet ein URLSpec
-Objekt. Der Inhaltsstamm an die XDP-Datei wird mithilfe der URLSpec
-Objekt setContentRootURI
-Methode. 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.
Rendern eines interaktiven PDF-Formulars mithilfe der Java-API render-an-interactive-pdf-form-using-the-java-api
So rendern Sie ein interaktives PDF-Formular mithilfe der Forms-API (Java):
-
Projektdateien einschließen
Schließen Sie Client-JAR-Dateien wie adobe-forms-client.jar in den Klassenpfad Ihres Java-Projekts ein.
-
Erstellen eines Forms Client-API-Objekts
- Erstellen Sie ein
ServiceClientFactory
-Objekt, das Verbindungseigenschaften enthält. - Erstellen Sie ein
FormsServiceClient
-Objekt, indem Sie seinen Konstruktor verwenden und dasServiceClientFactory
-Objekt übergeben.
- Erstellen Sie ein
-
Angeben der URI-Werte
- Erstellen Sie ein
URLSpec
-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden. - Rufen Sie die
URLSpec
-ObjektsetApplicationWebRoot
-Methode verwenden und einen string -Wert übergeben, der den Webstamm der Anwendung darstellt. - Rufen Sie die
URLSpec
-ObjektsetContentRootURI
-Methode verwenden und einen string -Wert übergeben, der den Inhaltsstamm-URI-Wert 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 Sierepository:///
an. - Rufen Sie die
URLSpec
-ObjektsetTargetURL
-Methode verwenden und einen Zeichenfolgenwert übergeben, 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 zur Durchführung von Berechnungen gesendet wird.
- Erstellen Sie ein
-
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
java.util.HashMap
-Objektput
-Methode für jede Datei, die an das wiedergegebene Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:- Ein Zeichenfolgenwert, der den Namen des Dateianhangs angibt, einschließlich der Dateinamenerweiterung.
-
Ein
com.adobe.idp.Document
-Objekt, das die Dateianlage enthält.
note note NOTE 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
übergeben, wenn Sie keine Dateianhänge senden möchten. -
-
Wiedergeben eines interaktiven PDF-Formulars
Rufen Sie die
FormsServiceClient
-ObjektrenderPDFForm
-Methode verwenden und die folgenden Werte übergeben:- Ein Zeichenfolgenwert, der den Namen des Formularentwurfs einschließlich der Dateinamenerweiterung angibt. Wenn Sie auf einen Formularentwurf verweisen, der Teil eines Forms-Programms ist, stellen Sie sicher, dass Sie den vollständigen Pfad angeben, z. B.
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Ein
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 leerescom.adobe.idp.Document
-Objekt. - Ein
PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter, für den Sienull
angeben können, wenn Sie keine Laufzeitoptionen angeben möchten. - Ein
URLSpec
-Objekt, das URI-Werte enthält, die für den Forms-Service erforderlich sind. - Ein
java.util.HashMap
-Objekt, in dem Dateianlagen gespeichert werden. Dies ist ein optionaler Parameter, für den Sienull
angeben können, wenn Sie keine Dateien an das Formular anhängen möchten.
Die Methode
renderPDFForm
gibt einFormsResult
-Objekt zurück, das einen Formulardaten-Stream enthält, der in den Client-Webbrowser geschrieben werden muss. - Ein Zeichenfolgenwert, der den Namen des Formularentwurfs einschließlich der Dateinamenerweiterung angibt. Wenn Sie auf einen Formularentwurf verweisen, der Teil eines Forms-Programms ist, stellen Sie sicher, dass Sie den vollständigen Pfad angeben, z. B.
-
Schreiben des Formulardaten-Streams in den Client-Webbrowser
- Erstellen Sie eine
com.adobe.idp.Document
-Objekt durch Aufrufen derFormsResult
-ObjektgetOutputContent
-Methode. - Ermitteln Sie den Content-Typ des
com.adobe.idp.Document
-Objekts, indem Sie seine MethodegetContentType
aufrufen. - Legen Sie die
javax.servlet.http.HttpServletResponse
Inhaltstyp des Objekts durch Aufrufen seinersetContentType
-Methode verwenden und den Inhaltstyp dercom.adobe.idp.Document
-Objekt. - Erstellen Sie eine
javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser durch Aufrufen derjavax.servlet.http.HttpServletResponse
-ObjektgetOutputStream
-Methode. - Erstellen Sie eine
java.io.InputStream
-Objekt durch Aufrufen dercom.adobe.idp.Document
-ObjektgetInputStream
-Methode. - Erstellen Sie ein Byte-Array und füllen Sie es mit dem Formulardatenstream, indem Sie die
InputStream
-Objektread
-Methode verwenden und das Byte-Array als Argument übergeben. - Rufen Sie die
javax.servlet.ServletOutputStream
-Objektwrite
-Methode zum Senden des Formulardatenstreams an den Client-Webbrowser. Übergeben Sie das Byte-Array an die Methodewrite
.
- Erstellen Sie eine
Rendern eines interaktiven PDF-Formulars mithilfe der Webservice-API render-an-interactive-pdf-form-using-the-web-service-api
So rendern Sie ein interaktives PDF-Formular mithilfe der Forms-API (Webservice):
-
Projektdateien einschließen
- Erstellen Sie Java-Proxy-Klassen, welche die Forms-Dienst-WSDL verwenden.
- Schließen Sie die Java-Proxy-Klassen in Ihren Klassenpfad ein.
-
Erstellen eines Forms Client-API-Objekts
Erstellen Sie ein
FormsService
-Objekt und legen Sie Authentifizierungswerte fest. -
Angeben der URI-Werte
- Erstellen Sie ein
URLSpec
-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden. - Rufen Sie die
URLSpec
-ObjektsetApplicationWebRoot
-Methode verwenden und einen string -Wert übergeben, der den Webstamm der Anwendung darstellt. - Rufen Sie die
URLSpec
-ObjektsetContentRootURI
-Methode verwenden und einen string -Wert übergeben, der den Inhaltsstamm-URI-Wert 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 Sierepository:///
an. - Rufen Sie die
URLSpec
-ObjektsetTargetURL
-Methode verwenden und einen Zeichenfolgenwert übergeben, 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 zur Durchführung von Berechnungen gesendet wird.
- Erstellen Sie ein
-
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
java.util.HashMap
-Objektput
-Methode für jede Datei, die an das wiedergegebene Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:- Ein Zeichenfolgenwert, der den Namen des Dateianhangs angibt, einschließlich der Dateinamenerweiterung
-
Ein
BLOB
-Objekt, das den Dateianhang enthält
note note NOTE Wiederholen Sie diesen Schritt für jede Datei, die an das Formular angehängt werden soll. -
-
Wiedergeben eines interaktiven PDF-Formulars
Rufen Sie die
FormsService
-ObjektrenderPDFForm
-Methode verwenden und die folgenden Werte übergeben:- Ein Zeichenfolgenwert, der den Namen des Formularentwurfs einschließlich der Dateinamenerweiterung angibt. Wenn Sie auf einen Formularentwurf verweisen, der Teil eines Forms-Programms ist, stellen Sie sicher, dass Sie den vollständigen Pfad angeben, z. B.
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Ein
BLOB
-Objekt, das Daten enthält, die mit dem Formular zusammengeführt werden sollen. Wenn Sie keine Daten zusammenführen möchten, übergeben Sienull
. - Ein
PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter, für den Sienull
angeben können, wenn Sie keine Laufzeitoptionen angeben möchten. - Ein
URLSpec
-Objekt, das URI-Werte enthält, die für den Forms-Service erforderlich sind. - Ein
java.util.HashMap
-Objekt, in dem Dateianlagen gespeichert werden. Dies ist ein optionaler Parameter. Sie könnennull
festlegen, wenn Sie keine Dateien an das Formular anhängen möchten. - Ein leeres
com.adobe.idp.services.holders.BLOBHolder
-Objekt, das von der Methode gefüllt wird. Damit wird das wiedergegebene PDF-Formular gespeichert. - Ein leeres
javax.xml.rpc.holders.LongHolder
-Objekt, das von der Methode aufgefüllt wird. (Dieses Argument speichert die Anzahl der Seiten im Formular.) - Ein leeres
javax.xml.rpc.holders.StringHolder
-Objekt, das von der Methode aufgefüllt wird. (Dieses Argument speichert den Gebietsschemawert.) - Ein leeres
com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das die Ergebnisse dieses Vorgangs enthalten wird.
Die Methode
renderPDFForm
füllt dascom.adobe.idp.services.holders.FormsResultHolder
-Objekt, das als letzter Argumentwert übergeben wird, mit einem Formulardaten-Stream, der in den Client-Webbrowser geschrieben werden muss. - Ein Zeichenfolgenwert, der den Namen des Formularentwurfs einschließlich der Dateinamenerweiterung angibt. Wenn Sie auf einen Formularentwurf verweisen, der Teil eines Forms-Programms ist, stellen Sie sicher, dass Sie den vollständigen Pfad angeben, z. B.
-
Schreiben des Formulardaten-Streams in den Client-Webbrowser
- Erstellen Sie eine
FormResult
-Objekt durch Abrufen des Werts dercom.adobe.idp.services.holders.FormsResultHolder
-Objektvalue
Datenelement. - Erstellen Sie eine
BLOB
-Objekt, das Formulardaten enthält, durch Aufrufen derFormsResult
-ObjektgetOutputContent
-Methode. - Ermitteln Sie den Content-Typ des
BLOB
-Objekts, indem Sie seine MethodegetContentType
aufrufen. - Legen Sie die
javax.servlet.http.HttpServletResponse
Inhaltstyp des Objekts durch Aufrufen seinersetContentType
-Methode verwenden und den Inhaltstyp derBLOB
-Objekt. - Erstellen Sie eine
javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser durch Aufrufen derjavax.servlet.http.HttpServletResponse
-ObjektgetOutputStream
-Methode. - Erstellen Sie ein Byte-Array und füllen Sie es durch Aufrufen der
BLOB
-ObjektgetBinaryData
-Methode. Mit dieser Aufgabe wird dem Byte-Array der Inhalt desFormsResult
-Objekts zugewiesen. - Rufen Sie die
javax.servlet.http.HttpServletResponse
-Objektwrite
-Methode zum Senden des Formulardatenstreams an den Client-Webbrowser. Übergeben Sie das Byte-Array an die Methodewrite
.
- Erstellen Sie eine
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.