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.

NOTE
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 Logikfluss des Kreditantrags.

ri_ri_finsrv_loanapp_v1

Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.

Schritt
Beschreibung
1
Das Java-Servlet GetLoanForm wird von einer HTML-Seite aufgerufen.
2
Das Java-Servlet 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.)
3
Nachdem der Benutzer das Darlehensformular ausgefüllt und auf die Senden-Schaltfläche geklickt hat, werden die Daten an das Java-Servlet HandleData übermittelt. (Siehe „Darlehensformular“.)
4
Das Java-Servlet 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.)
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 durch die GetLoanForm Java-Servlet.

ri_ri_loanform

Bestätigungsformular

Dieses Formular wird durch das Beispiel für einen Kreditantrag wiedergegeben HandleData Java-Servlet.

ri_ri_confirm

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.

NOTE
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:

  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie ein Forms-Client-API-Objekt.
  3. Geben Sie URI-Werte an.
  4. Hängen Sie Dateien an das Formular an (optional).
  5. Rendern Sie ein interaktives PDF-Formular.
  6. 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:

ri_ri_formrepository

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.

NOTE
Informationen zum Erstellen eines Forms-Programms mit Workbench finden Sie in der Workbench-Hilfe.

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.)

NOTE
Anstatt einen URL-Wert anzugeben, um auf eine XDP-Datei zu verweisen, können Sie auch eine 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.

NOTE
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. 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.

NOTE
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.

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):

  1. Projektdateien einschließen

    Schließen Sie Client-JAR-Dateien wie adobe-forms-client.jar in den Klassenpfad Ihres Java-Projekts ein.

  2. 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 das ServiceClientFactory-Objekt übergeben.
  3. Angeben der URI-Werte

    • Erstellen Sie ein URLSpec-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden.
    • Rufen Sie die URLSpec -Objekt setApplicationWebRoot -Methode verwenden und einen string -Wert übergeben, der den Webstamm der Anwendung darstellt.
    • Rufen Sie die URLSpec -Objekt setContentRootURI -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 Sie repository:/// an.
    • Rufen Sie die URLSpec -Objekt setTargetURL -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.
  4. 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 -Objekt put -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.
  5. Wiedergeben eines interaktiven PDF-Formulars

    Rufen Sie die FormsServiceClient -Objekt renderPDFForm -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 leeres com.adobe.idp.Document-Objekt.
    • Ein 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.
    • 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 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.

  6. Schreiben des Formulardaten-Streams in den Client-Webbrowser

    • Erstellen Sie eine com.adobe.idp.Document -Objekt durch Aufrufen der FormsResult -Objekt getOutputContent -Methode.
    • Ermitteln Sie den Content-Typ des com.adobe.idp.Document-Objekts, indem Sie seine Methode getContentType aufrufen.
    • Legen Sie die javax.servlet.http.HttpServletResponse Inhaltstyp des Objekts durch Aufrufen seiner setContentType -Methode verwenden und den Inhaltstyp der com.adobe.idp.Document -Objekt.
    • Erstellen Sie eine javax.servlet.ServletOutputStream -Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser durch Aufrufen der javax.servlet.http.HttpServletResponse -Objekt getOutputStream -Methode.
    • Erstellen Sie eine java.io.InputStream -Objekt durch Aufrufen der com.adobe.idp.Document -Objekt getInputStream -Methode.
    • Erstellen Sie ein Byte-Array und füllen Sie es mit dem Formulardatenstream, indem Sie die InputStream -Objekt read -Methode verwenden und das Byte-Array als Argument übergeben.
    • Rufen Sie die javax.servlet.ServletOutputStream -Objekt write -Methode zum Senden des Formulardatenstreams an den Client-Webbrowser. Übergeben Sie das Byte-Array an die Methode write.

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):

  1. 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.
  2. Erstellen eines Forms Client-API-Objekts

    Erstellen Sie ein FormsService-Objekt und legen Sie Authentifizierungswerte fest.

  3. Angeben der URI-Werte

    • Erstellen Sie ein URLSpec-Objekt, das URI-Werte speichert, indem Sie seinen Konstruktor verwenden.
    • Rufen Sie die URLSpec -Objekt setApplicationWebRoot -Methode verwenden und einen string -Wert übergeben, der den Webstamm der Anwendung darstellt.
    • Rufen Sie die URLSpec -Objekt setContentRootURI -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 Sie repository:/// an.
    • Rufen Sie die URLSpec -Objekt setTargetURL -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.
  4. 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 -Objekt put -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.
  5. Wiedergeben eines interaktiven PDF-Formulars

    Rufen Sie die FormsService -Objekt renderPDFForm -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 Sie null.
    • Ein 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.
    • 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önnen null 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 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.

  6. Schreiben des Formulardaten-Streams in den Client-Webbrowser

    • Erstellen Sie eine FormResult -Objekt durch Abrufen des Werts der com.adobe.idp.services.holders.FormsResultHolder -Objekt value Datenelement.
    • Erstellen Sie eine BLOB -Objekt, das Formulardaten enthält, durch Aufrufen der FormsResult -Objekt getOutputContent -Methode.
    • Ermitteln Sie den Content-Typ des BLOB-Objekts, indem Sie seine Methode getContentType aufrufen.
    • Legen Sie die javax.servlet.http.HttpServletResponse Inhaltstyp des Objekts durch Aufrufen seiner setContentType -Methode verwenden und den Inhaltstyp der BLOB -Objekt.
    • Erstellen Sie eine javax.servlet.ServletOutputStream -Objekt, das zum Schreiben des Formulardaten-Streams in den Client-Webbrowser durch Aufrufen der javax.servlet.http.HttpServletResponse -Objekt getOutputStream -Methode.
    • Erstellen Sie ein Byte-Array und füllen Sie es durch Aufrufen der BLOB -Objekt getBinaryData -Methode. Mit dieser Aufgabe wird dem Byte-Array der Inhalt des FormsResult-Objekts zugewiesen.
    • Rufen Sie die javax.servlet.http.HttpServletResponse -Objekt write -Methode zum Senden des Formulardatenstreams an den Client-Webbrowser. Ü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.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2