Die Beispiele in diesem Dokument gelten nur für eine AEM Forms on JEE-Umgebung.
In der Regel wird ein in Designer erstellter Formularentwurf durch Verweis auf den Forms-Service übergeben. Formularentwürfe können sehr groß sein, weshalb es effizienter ist, sie per Verweis zu übergeben, um zu vermeiden, dass die Bytes des Formularentwurfs nach Werten geordnet werden müssen. Der Forms-Service kann den Formularentwurf auch zwischenspeichern, so dass er ihn, wenn er einmal zwischengespeichert ist, nicht kontinuierlich 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 anhand eines Werts 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 das Zwischenspeichern des Formulars mithilfe von Zwischenspeicherungsoptionen vermeiden, die mithilfe der AEM Forms-API festgelegt werden können.
Der Forms-Service kann auch den Speicherort verknüpfter Inhalte im Formularentwurf auflösen. Beispielsweise stellen verknüpfte Bilder, auf die im Formularentwurf verwiesen wird, relative URLs dar. Verknüpfte Inhalte werden immer als relativ zum Speicherort des Formularentwurfs betrachtet. Daher muss der Speicherort eines verknüpften Inhalts durch Anwenden des relativen Pfads auf den absoluten Speicherort des Formularentwurfs bestimmt werden.
Anstatt einen Formularentwurf per Verweis zu übergeben, können Sie einen Formularentwurf anhand eines Werts übergeben. Das Übergeben eines Formularentwurfs anhand eines Werts ist effizient, wenn ein Formularentwurf dynamisch erstellt wird. das heißt, wenn ein Client-Programm die XML generiert, die während der Laufzeit einen Formularentwurf erstellt. In diesem Fall wird ein Formularentwurf nicht in einem physischen Repository gespeichert, da er im Speicher gespeichert ist. Wenn Sie einen Formularentwurf zur Laufzeit dynamisch erstellen und anhand eines Werts übergeben, können Sie das Formular zwischenspeichern und die Leistung des Forms-Services verbessern.
Einschränkungen für die Übergabe eines Formulars anhand eines Werts
Die folgenden Einschränkungen gelten, wenn ein Formularentwurf anhand eines Werts übergeben wird:
Sie können zwar unterschiedliche Formulartypen anhand eines Werts rendern (z. B. HTML-Formulare oder Formulare mit Verwendungsrechten), in diesem Abschnitt wird jedoch speziell das Rendern interaktiver PDF-Formulare beschrieben.
Weitere Informationen zum Forms-Service finden Sie in der Service-Referenz für AEM Forms.
Um ein Formular anhand eines Werts wiederzugeben, 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 Web-Services verwenden, stellen Sie sicher, dass Sie die Proxy-Dateien einschließen.
Erstellen eines Objekts für die Forms Client API
Bevor Sie Daten programmgesteuert in eine PDF-Formular-Client-API importieren können, müssen Sie einen Client für den Data Integration-Service erstellen. Beim Erstellen eines Service-Clients definieren Sie Verbindungseinstellungen, die zum Aufrufen eines Services erforderlich sind.
Verweisen auf den Formularentwurf
Wenn Sie ein Formular anhand eines Werts rendern, müssen Sie ein com.adobe.idp.Document
-Objekt erstellen, das den zu rendernden 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 auffüllen.
Dieser Abschnitt und die entsprechende Kurzanleitung verweisen auf eine vorhandene XDP-Datei.
Rendern eines Formulars anhand eines Werts
Um ein Formular anhand eines Werts zu rendern, übergeben Sie eine com.adobe.idp.Document
-Instanz, die den Formularentwurf enthält, an den Parameter inDataDoc
der Render-Methode (dies kann eine beliebige Render-Methode des FormsServiceClient
-Objekts sein, z. B. renderPDFForm
, (Deprecated) renderHTMLForm
und so weiter). Dieser Parameterwert ist normalerweise für Daten reserviert, die mit dem Formular zusammengeführt werden. Übergeben Sie einen leeren Zeichenfolgenwert an den Parameter formQuery
. Normalerweise erfordert dieser Parameter einen Zeichenfolgenwert, der den Namen des Formularentwurfs angibt.
Wenn Sie Daten innerhalb des Formulars anzeigen möchten, müssen die Daten innerhalb des Elements xfa:datasets
angegeben werden. Informationen zur XFA-Architektur finden Sie unter https://www.pdfa.org/norm-refs/XFA-3_3.pdf.
Senden des Formular-Datenstreams an den Client-Webbrowser
Wenn der Forms-Service ein Formular anhand des Werts rendert, wird ein Formulardaten-Stream 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.
Siehe auch
Rendern eines Formulars anhand eines Werts mithilfe der Java-API
Rendern eines Formulars anhand eines Werts mithilfe der Webservice-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Schnellstart mit der Forms Service-API
Übergeben von Dokumenten an den Forms-Service
Erstellen von Web-Programmen, die Formulare wiedergeben
So rendern Sie ein Formular anhand eines Werts 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.Referenzieren des Formularentwurfs
java.io.FileInputStream
-Objekt, das den zu rendernden Formularentwurf darstellt, indem Sie seinen Konstruktor verwenden und einen Zeichenfolgenwert übergeben, der den Speicherort der XDP-Datei angibt.com.adobe.idp.Document
-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream
-Objekt übergeben.Rendern eines Formulars anhand eines Werts
Rufen Sie die Methode renderPDFForm
des FormsServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:
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, 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 kann.
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.InputStream
-Objekts zu. Rufen Sie die Methode available
des InputStream
-Objekts auf, um die Größe des InputStream
-Objekts zu erhalten.read
des InputStream
-Objekts aufrufen und das Byte-Array als Argument übergeben.write
-Methode des javax.servlet.ServletOutputStream
-Objekts auf, indem Sie den Formulardatenstrom an den Client-Webbrowser senden. Übergeben Sie das Byte-Array an die Methode write
.Siehe auch
Rendern von Formularen basierend auf Werten
Kurzanleitung (SOAP-Modus): Rendern nach Wert mithilfe der Java-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
So rendern Sie ein Formular anhand des Werts mithilfe der Forms-API (Webservice):
Projektdateien einschließen
Erstellen eines Forms Client-API-Objekts
Erstellen Sie ein FormsService
-Objekt und legen Sie Authentifizierungswerte fest.
Referenzieren des Formularentwurfs
java.io.FileInputStream
, indem Sie den Konstruktor verwenden. Ein Zeichenfolgenwert, der den Speicherort der XDP-Datei angibt.BLOB
, indem Sie den Konstruktor verwenden. Das BLOB
-Objekt wird verwendet, um ein mit einem Kennwort verschlüsseltes PDF-Dokument zu speichern.java.io.FileInputStream
-Objekts speichert. Sie können die Größe des Byte-Arrays ermitteln, indem Sie die Größe des java.io.FileInputStream
-Objekts mithilfe seiner Methode available
abrufen.read
des java.io.FileInputStream
-Objekts aufrufen und das Byte-Array übergeben.BLOB
-Objekt, indem Sie seine Methode setBinaryData
aufrufen und das Byte-Array übergeben.Rendern eines Formulars anhand eines Werts
Rufen Sie die Methode renderPDFForm
des FormsService
-Objekts auf und übergeben Sie die folgenden Werte:
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, 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 enthält.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
.Siehe auch
Rendern von Formularen basierend auf Werten
Aufrufen von AEM Forms mit Base64-Kodierung