In der Regel wird ein in Designer erstellter Formularentwurf durch Verweis auf den Forms-Dienst weitergeleitet. Formularentwürfe können sehr umfangreich sein. Daher ist es effizienter, sie als Referenz weiterzugeben, um Formularentwurfssytes nicht nach Wert zu ordnen. Der Forms-Dienst kann den Formularentwurf auch zwischenspeichern, sodass er den Formularentwurf beim Zwischenspeichern nicht ständig lesen muss.
Wenn ein Formularentwurf ein UUID-Attribut enthält, wird er zwischengespeichert. Der UUID-Wert ist für alle Formularentwürfe eindeutig und dient zur eindeutigen Identifizierung eines Formulars. Beim Rendern eines Formulars als Wert sollte das Formular nur zwischengespeichert werden, wenn es wiederholt verwendet wird. Wenn das Formular jedoch nicht wiederholt verwendet wird und eindeutig sein muss, können Sie die Zwischenspeicherung des Formulars mithilfe von Zwischenspeicherungsoptionen vermeiden, die mit der AEM Forms API festgelegt werden.
Der Forms-Dienst kann auch die Position verknüpfter Inhalte im Formularentwurf auflösen. Verknüpfte Bilder, auf die im Formularentwurf verwiesen wird, sind beispielsweise relative URLs. Verknüpfte Inhalte werden immer als relativ zum Speicherort des Formularentwurfs betrachtet. Das Auflösen von verknüpften Inhalten ist daher eine Frage der Bestimmung der Position, indem der relative Pfad zum absoluten Speicherort des Formularentwurfs angewendet wird.
Anstatt einen Formularentwurf als Referenz zu übergeben, können Sie einen Formularentwurf als Wert übergeben. Die Weitergabe eines Formularentwurfs durch Wert ist effizient, wenn ein Formularentwurf dynamisch erstellt wird. das heißt, wenn eine Clientanwendung die XML generiert, die einen Formularentwurf während der Laufzeit erstellt. In diesem Fall wird ein Formularentwurf nicht in einem physischen Repository gespeichert, da er im Arbeitsspeicher gespeichert wird. Wenn Sie einen Formularentwurf zur Laufzeit dynamisch erstellen und ihn wertmäßig übergeben, können Sie das Formular zwischenspeichern und die Leistung des Forms-Dienstes verbessern.
Einschränkungen bei der Übergabe eines Formulars nach Wert
Die folgenden Einschränkungen gelten, wenn ein Formularentwurf nach Wert übergeben wird:
Obwohl Sie verschiedene Formulartypen nach Wert wiedergeben können (z. B. HTML-Formulare oder Formulare mit Verwendungsrechten), wird in diesem Abschnitt die Wiedergabe interaktiver PDF forms behandelt.
Weitere Informationen zum Forms-Dienst finden Sie unter Dienste-Referenz für AEM Forms.
So rendern Sie ein Formular als Wert:
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 Daten programmgesteuert in eine PDF-Formular-Client-API importieren können, müssen Sie einen Data Integration-Dienstclient erstellen. Beim Erstellen eines Dienstclients definieren Sie Verbindungseinstellungen, die zum Aufrufen eines Dienstes erforderlich sind.
Referenzieren des Formularentwurfs
Beim Rendern eines Formulars nach Wert müssen Sie ein com.adobe.idp.Document
-Objekt erstellen, das den wiederzugebenden Formularentwurf enthält. Sie können auf eine vorhandene XDP-Datei verweisen oder einen Formularentwurf zur Laufzeit dynamisch erstellen und ein com.adobe.idp.Document
mit diesen Daten füllen.
Dieser Abschnitt und der zugehörige Quick Beginn verweisen auf eine vorhandene XDP-Datei.
Formular als Wert wiedergeben
Um ein Formular als Wert wiederzugeben, übergeben Sie eine com.adobe.idp.Document
-Instanz, die den Formularentwurf enthält, an den Parameter inDataDoc
der Rendermethode (kann eine der Rendermethoden des FormsServiceClient
-Objekts sein, z. B. renderPDFForm
, (Deprecated) renderHTMLForm
usw.). Dieser Parameterwert ist normalerweise für Daten reserviert, die mit dem Formular zusammengeführt werden. Übergeben Sie entsprechend einen leeren Zeichenfolgenwert an den Parameter formQuery
. Normalerweise erfordert dieser Parameter einen Zeichenfolgenwert, der den Namen des Formularentwurfs angibt.
Wenn Sie Daten im Formular anzeigen möchten, müssen die Daten im Element xfa:datasets
angegeben werden. Informationen zur XFA-Architektur finden Sie unter https://partners.adobe.com/public/developer/xml/index_arch.html.
Schreiben des Formulardatenstreams in den Client-Webbrowser
Wenn der Forms-Dienst ein Formular wertmäßig wiedergibt, gibt er einen Formulardatenstream zurück, den Sie an den Client-Webbrowser schreiben müssen. Beim Schreiben in den Client-Webbrowser ist das Formular für den Benutzer sichtbar.
Siehe auch
Formular mit der Java-API wertmäßig wiedergeben
Formular mit der Webdienst-API wertmäßig wiedergeben
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Weiterleiten von Dokumenten an den Forms-Dienst
Erstellen von Webanwendungen zum Rendern von Forms
Rendern Sie ein Formular wertmäßig 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.Referenzieren des Formularentwurfs
java.io.FileInputStream
-Objekt, das den Formularentwurf darstellt, der mithilfe des Konstruktors wiedergegeben werden soll, und übergeben Sie einen Zeichenfolgenwert, der den Speicherort der XDP-Datei angibt.com.adobe.idp.Document
-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream
-Objekt übergeben.Formular als Wert wiedergeben
Rufen Sie die renderPDFForm
-Methode des Objekts auf und übergeben Sie die folgenden Werte:FormsServiceClient
com.adobe.idp.Document
-Objekt, das den Formularentwurf enthält. Normalerweise ist dieser Parameterwert für Daten reserviert, die mit dem Formular zusammengeführt werden.PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter und Sie können null
angeben, wenn Sie keine Laufzeitoptionen angeben möchten.URLSpec
-Objekt, das URI-Werte enthält, die vom Forms-Dienst benötigt werden.java.util.HashMap
-Objekt, das Dateianlagen speichert. Dies ist ein optionaler Parameter und Sie können null
angeben, wenn Sie keine Dateien an das Formular anhängen möchten.Die renderPDFForm
-Methode gibt ein FormsResult
-Objekt zurück, das einen Formulardatenstream enthält, der in den Client-Webbrowser geschrieben werden kann.
Schreiben des Formulardatenstreams in den Client-Webbrowser
com.adobe.idp.Document
-Objekt, indem Sie die FormsResult
-Methode "s getOutputContent
"aufrufen.com.adobe.idp.Document
-Objekts ab, indem Sie dessen getContentType
-Methode aufrufen.javax.servlet.http.HttpServletResponse
fest, indem Sie die setContentType
-Methode aufrufen und den Inhaltstyp des com.adobe.idp.Document
-Objekts übergeben.javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardatenstreams in den Client-Webbrowser verwendet wird, indem Sie die getOutputStream
-Methode des Objekts aufrufen.javax.servlet.http.HttpServletResponse
java.io.InputStream
-Objekt, indem Sie die com.adobe.idp.Document
-Methode des Objekts getInputStream
aufrufen.InputStream
zu. Rufen Sie die available
-Methode des Objekts auf, um die Größe des InputStream
-Objekts abzurufen.InputStream
read
-Methode des Objekts aufrufen und das Bytearray als Argument übergeben.InputStream
write
-Methode des Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. javax.servlet.ServletOutputStream
Übergeben Sie das Bytearray an die write
-Methode.Siehe auch
Quick Beginn (SOAP-Modus): Rendern nach Wert mit der Java-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Wiedergabe eines Formulars nach Wert mit der Forms API (Webdienst):
Projektdateien einschließen
Forms Client API-Objekt erstellen
Erstellen Sie ein FormsService
-Objekt und legen Sie Authentifizierungswerte fest.
Referenzieren des Formularentwurfs
java.io.FileInputStream
, indem Sie den Konstruktor verwenden. Übergeben Sie einen Zeichenfolgenwert, der den Speicherort der XDP-Datei angibt.BLOB
, indem Sie den Konstruktor verwenden. Das BLOB
-Objekt wird zum Speichern eines mit einem Kennwort verschlüsselten PDF-Dokuments verwendet.java.io.FileInputStream
speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die Größe des java.io.FileInputStream
-Objekts mit der available
-Methode abrufen.java.io.FileInputStream
-Methode des Objekts read
aufrufen und das Bytearray übergeben.BLOB
-Objekt, indem Sie die setBinaryData
-Methode aufrufen und das Bytearray übergeben.Formular als Wert wiedergeben
Rufen Sie die renderPDFForm
-Methode des Objekts auf und übergeben Sie die folgenden Werte:FormsService
BLOB
-Objekt, das den Formularentwurf enthält. Normalerweise ist dieser Parameterwert für Daten reserviert, die mit dem Formular zusammengeführt werden.PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert. Dies ist ein optionaler Parameter und Sie können null
angeben, wenn Sie keine Laufzeitoptionen angeben möchten.URLSpec
-Objekt, das URI-Werte enthält, die vom Forms-Dienst benötigt werden.java.util.HashMap
-Objekt, das Dateianlagen speichert. Dies ist ein optionaler Parameter und Sie können null
angeben, 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. Auf diese Weise wird das gerenderte PDF-Formular gespeichert.javax.xml.rpc.holders.LongHolder
-Objekt, das von der Methode gefüllt wird. (Dieses Argument speichert die Anzahl der Seiten im Formular.)javax.xml.rpc.holders.StringHolder
-Objekt, das von der Methode gefüllt wird. (Dieses Argument speichert den Gebietsschemawert.)com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das die Ergebnisse dieses Vorgangs enthält.Die renderPDFForm
-Methode füllt das com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das als letzter Argumentwert übergeben wird, mit einem Formulardatenstream, der in den Client-Webbrowser geschrieben werden muss.
Schreiben des Formulardatenstreams in den Client-Webbrowser
FormResult
-Objekt, indem Sie den Wert des com.adobe.idp.services.holders.FormsResultHolder
-Datenelements des Objekts value
abrufen.BLOB
-Objekt, das Formulardaten enthält, indem Sie die getOutputContent
-Methode des Objekts aufrufen.FormsResult
BLOB
-Objekts ab, indem Sie dessen getContentType
-Methode aufrufen.javax.servlet.http.HttpServletResponse
fest, indem Sie die setContentType
-Methode aufrufen und den Inhaltstyp des BLOB
-Objekts übergeben.javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardatenstreams in den Client-Webbrowser verwendet wird, indem Sie die getOutputStream
-Methode des Objekts aufrufen.javax.servlet.http.HttpServletResponse
BLOB
-Methode des Objekts getBinaryData
. Diese Aufgabe weist dem Bytearray den Inhalt des Objekts FormsResult
zu.write
-Methode des Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. javax.servlet.http.HttpServletResponse
Übergeben Sie das Bytearray an die write
-Methode.Siehe auch
Aufrufen von AEM Forms mit Base64-Kodierung