Rendern von Formularen auf dem Client rendering-forms-at-the-client
Die Beispiele in diesem Dokument gelten nur für eine AEM Forms on JEE-Umgebung.
Rendern von Formularen auf dem Client rendering-forms-at-the-client-inner
Sie können die Bereitstellung von PDF-Inhalten optimieren und die Fähigkeit des Forms-Services die Netzwerklast zu bewältigen, verbessern, indem Sie die Client-seitige Rendering-Funktion von Acrobat oder Adobe Reader verwenden. Dieser Prozess wird als Rendering eines Formulars auf dem Client bezeichnet. Um ein Formular auf dem Client zu rendern, muss der Client (normalerweise ein Webbrowser) Acrobat 7.0 oder Adobe Reader 7.0 oder höher verwenden.
Änderungen an einem Formular, die aus der serverseitigen Skriptausführung resultieren, werden in ein Formular, das auf dem Client gerendert wird, nicht aufgenommen, es sei denn, das Stammteilformular enthält das restoreState
-Attribut, das auf auto
definiert ist. Weitere Informationen zu diesem Attribut finden Sie unter Forms Designer.
Zusammenfassung der Schritte summary-of-steps
Führen Sie die folgenden Schritte durch, um ein Formular auf dem Client zu rendern:
- Schließen Sie Projektdateien ein.
- Erstellen Sie ein Forms-Client-API-Objekt.
- Legen Sie beim Client die Laufzeitoptionen für das Rendering fest.
- Rendern eines Formulars auf dem Client.
- Senden Sie das Formular an den Client-Webbrowser.
Einschließen von Projektdateien
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 einen Client für den Forms-Service erstellen. Wenn Sie die Java-API verwenden, erstellen Sie ein FormsServiceClient
-Objekt. Wenn Sie die Forms-Web-Service-API verwenden, müssen Sie ein FormsService
-Objekt erstellen.
Einstellen der Laufzeitoptionen beim Client für das Rendering
Aktivieren Sie die Laufzeitoption zum Rendern eines Formulars auf dem Client, indem Sie die RenderAtClient
-Laufzeitoption auf true
einstellen. Dadurch wird das Formular an den Client übertragen, auf dem es dann gerendert wird. Wenn RenderAtClient
auto
beträgt (Standardwert), kann anhand des Formulardesigns bestimmt werden, ob das Formular auf dem Client gerendert werden soll. Bei dem Formulardesign muss beachtet werden, dass dieses ein flexibles Layout haben muss.
Optional können Sie die Laufzeitoption SeedPDF
aktivieren. Die SeedPDF
-Option kombiniert den PDF-Container (Seed-PDF-Dokument) mit dem Formulardesign und den XML-Daten. Sowohl das Formulardesign als auch die XML-Daten werden an Acrobat oder Adobe Reader übermittelt, die das Formular rendern. Die SeedPDF
-Option kann verwendet werden, wenn der Client nicht über die Schriftarten verfügt, die im Formular verwendet werden, z. B. wenn ein Endbenutzer nicht über die Lizenzen für die Verwendung einer bestimmten Schriftart verfügt, die der Formularinhaber verwenden darf.
Sie können Designer verwenden, um eine einfache dynamische PDF-Datei zur Verwendung als Seed-PDF-Datei zu erstellen. Die folgenden Schritte sind erforderlich, um dieses zu erreichen:
- Prüfen Sie, ob Sie Schriftarten in die Seed-PDF-Datei einbetten müssen. Die Seed-PDF-Datei muss alle zusätzlichen Schriftarten enthalten, die für das Formular, das gerendert werden soll, erforderlich sind. Stellen Sie beim Einbetten von Schriftarten in die Seed-PDF-Datei sicher, dass Sie keine Lizenzvereinbarungen für die Schriftarten verletzen. In Designer können Sie erkennen, ob Sie eine bestimmte Schriftart rechtmäßig einbetten dürfen. Wenn es beim Speichern Schriftarten geben sollte, die nicht in das Formular eingebettet werden können, zeigt Designer eine Meldung an, in der die Schriftarten aufgeführt werden, die nicht eingebettet werden können. Diese Meldung wird in Designer bei statischen PDF-Dokumenten nicht angezeigt.
- Wenn Sie die Seed-PDF-Datei in Designer erstellen, wird empfohlen, mindestens ein Textfeld mit einer Nachricht hinzuzufügen. Die Nachricht richtet sich an Benutzer früherer Versionen von Adobe Reader und sollte darauf hinweisen, dass sie Acrobat 7.0 oder höher oder Adobe Reader 7.0 oder höher benötigen, um das Dokument anzeigen zu können.
- Speichern Sie die Seed-PDF-Datei als dynamische PDF-Datei mit der Dateinamenerweiterung PDF ab.
Rendern eines Formulars auf dem Client
Um ein Formular auf dem Client zu rendern, müssen Sie sicherstellen, dass die Laufzeitoptionen für das Rendern auf dem Client in Ihrer Anwendungslogik für das Rendern des Formulars enthalten sind.
Senden des Formular-Datenstreams an den Client-Webbrowser
Der Forms-Service erstellt einen Formular-Datenstream, den Sie an den Client-Webbrowser senden müssen. Nachdem das Formular an den Client-Webbrowser gesendet wurde, wird es von Acrobat 7.0 oder Adobe Reader 7.0 oder höher gerendert und den Benutzern angezeigt.
Siehe auch
Rendern eines Formulars auf dem Client mithilfe der Java-API
Rendern eines Formulars auf dem Client mithilfe der Webservice-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Schnellstart mit der Forms Service-API
Rendern eines Formulars auf dem Client mithilfe der Java-API render-a-form-at-the-client-using-the-java-api
So rendern Sie ein Formular auf dem Client 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
- 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
-
Festlegen von Laufzeitoptionen für das Client-Rendering
- Erstellen Sie ein Objekt
PDFFormRenderSpec
, indem Sie den Konstruktor verwenden. - Legen Sie die Laufzeitoption
RenderAtClient
fest, indem Sie die MethodesetRenderAtClient
desPDFFormRenderSpec
-Objekts aufrufen und den AufzählungswertRenderAtClient.Yes
übergeben.
- Erstellen Sie ein Objekt
-
Rendern eines Formulars auf dem Client
Rufen Sie die Methode
renderPDFForm
desFormsServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:- Ein Zeichenfolgenwert, der den Namen des Formularentwurfs einschließlich der Dateinamenerweiterung angibt. Wenn Sie auf einen Formularentwurf verweisen, der Teil eines AEM 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, die zum Rendern eines Formulars auf dem Client erforderlich sind. - Ein
URLSpec
-Objekt, das URI-Werte enthält, die der Forms-Service zum Rendern eines Formulars benötigt. - Ein
java.util.HashMap
-Objekt, das Dateianlagen speichert. 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 AEM 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 ein
com.adobe.idp.Document
-Objekt, indem Sie die MethodegetOutputContent
desFormsResult
-Objekts aufrufen. - Ermitteln Sie den Content-Typ des
com.adobe.idp.Document
-Objekts, indem Sie seine MethodegetContentType
aufrufen. - Legen Sie den Content-Typ des
javax.servlet.http.HttpServletResponse
-Objekts fest, indem Sie seine MethodesetContentType
aufrufen und den Content-Typ descom.adobe.idp.Document
-Objekts übergeben. - Erstellen Sie ein
javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser verwendet wird, indem Sie die MethodegetOutputStream
desjavax.servlet.http.HttpServletResponse
-Objekts aufrufen. - Erstellen Sie ein
java.io.InputStream
-Objekt, indem Sie die MethodegetInputStream
descom.adobe.idp.Document
-Objekts aufrufen. - Erstellen Sie ein Byte-Array und füllen Sie es mit dem Formulardaten-Stream, indem Sie die Methode
read
desInputStream
-Objekts aufrufen und das Byte-Array als Argument übergeben. - Rufen Sie die Methode
write
desjavax.servlet.ServletOutputStream
-Objekts auf, um den Formulardaten-Stream an den Client-Webbrowser zu senden. Übergeben Sie das Byte-Array an die Methodewrite
.
- Erstellen Sie ein
Siehe auch
Kurzanleitung (SOAP-Modus): Rendern eines Formulars auf dem Client mithilfe der Java-API
Rendern eines Formulars auf dem Client mithilfe der Webservice-API render-a-form-at-the-client-using-the-web-service-api
Rendern eines Formulars auf dem Client 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. -
Festlegen von Laufzeitoptionen für das Client-Rendering
- Erstellen Sie ein Objekt
PDFFormRenderSpec
, indem Sie den Konstruktor verwenden. - Legen Sie die Laufzeitoption
RenderAtClient
fest, indem Sie die MethodesetRenderAtClient
desPDFFormRenderSpec
-Objekts aufrufen und den ZeichenfolgenwertRenderAtClient.Yes
übergeben.
- Erstellen Sie ein Objekt
-
Rendern eines Formulars auf dem Client
Rufen Sie die Methode
renderPDFForm
desFormsService
-Objekts auf und übergeben Sie die folgenden Werte:- 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
. (Siehe Vorausfüllen von Formularen mit flexiblen Layouts.) - Ein
PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert, die zum Rendern eines Formulars auf dem Client erforderlich sind. - Ein
URLSpec
-Objekt, das URI-Werte enthält, die für den Forms-Service erforderlich sind. - Ein
java.util.HashMap
-Objekt, das Dateianlagen speichert. 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 aufgefüllt wird. Dieser Parameter wird zum Speichern des wiedergegebenen PDF-Formulars verwendet. - 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 gefüllt wird. (Dieses Argument speichert den Gebietsschemawert). - Ein leeres
com.adobe.idp.services.holders.FormsResultHolder
-Objekt, das die Ergebnisse dieses Vorgangs enthält.
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 ein
FormResult
-Objekt, indem Sie den Wert des Datenelementsvalue
descom.adobe.idp.services.holders.FormsResultHolder
-Objekts abrufen. - Erstellen Sie ein
BLOB
-Objekt, das Formulardaten enthält, indem Sie die MethodegetOutputContent
desFormsResult
-Objekts aufrufen. - Ermitteln Sie den Inhaltstyp des
BLOB
-Objekts, indem Sie seine MethodegetContentType
aufrufen. - Legen Sie den Content-Typ des
javax.servlet.http.HttpServletResponse
-Objekts fest, indem Sie seine MethodesetContentType
aufrufen und den Content-Typ desBLOB
-Objekts übergeben. - Erstellen Sie ein
javax.servlet.ServletOutputStream
-Objekt, das zum Schreiben des Formulardaten-Stream in den Client-Webbrowser verwendet wird, indem Sie die MethodegetOutputStream
desjavax.servlet.http.HttpServletResponse
-Objekts aufrufen. - Erstellen Sie ein Byte-Array und füllen Sie es auf, indem Sie die Methode
getBinaryData
desBLOB
-Objekts aufrufen. Mit dieser Aufgabe wird dem Byte-Array der Inhalt desFormsResult
-Objekts zugewiesen. - Rufen Sie die Methode
write
desjavax.servlet.http.HttpServletResponse
-Objekts auf, um den Formulardaten-Stream an den Client-Webbrowser zu senden. Übergeben Sie das Byte-Array an die Methodewrite
.
- Erstellen Sie ein
Siehe auch
Rendern von Formularen auf dem Client
Aufrufen von AEM Forms mit Base64-Kodierung