Show Menu
THEMEN×

Wiedergeben interaktiver PDF-Formulare

Der Forms-Dienst rendert interaktive PDF-Formulare auf Client-Geräte (in der Regel Webbrowser), um Informationen von Benutzern zu erfassen. Nach der Wiedergabe eines interaktiven Formulars kann ein Benutzer Daten in Formularfelder eingeben und auf eine Senden-Schaltfläche im Formular klicken, um Informationen an den Forms-Dienst zurückzusenden. Adobe Reader oder Acrobat muss auf dem Computer installiert sein, auf dem der Client-Webbrowser ausgeführt wird, damit ein interaktives PDF-Formular sichtbar ist.
Bevor Sie ein Formular mit dem Forms-Dienst wiedergeben können, erstellen Sie einen Formularentwurf. Normalerweise wird ein Formularentwurf in Designer erstellt und als XDP-Datei gespeichert. Informationen zum Erstellen eines Formularentwurfs finden Sie unter Forms Designer .
Beispiel für einen Kreditantrag
Ein Beispiel für einen Kreditantrag wird eingeführt, um zu veranschaulichen, wie der Forms-Dienst interaktive Formulare nutzt, um Informationen von Benutzern zu erfassen. Mit dieser Anwendung kann ein Benutzer ein Formular mit Daten ausfüllen, die zur Sicherung eines Kredits erforderlich sind, und dann Daten an den Forms-Dienst senden. Das folgende Diagramm zeigt den logischen Fluss des Kreditantrags.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
Schritt
Beschreibung
1
Das GetLoanForm Java-Servlet wird von einer HTML-Seite aufgerufen.
2
Das GetLoanForm Java-Servlet verwendet die Forms-Dienst-Client-API, um das Darlehensformular an den Client-Webbrowser zu rendern. (Siehe Interaktives PDF-Formular mit der Java-API rendern .)
3
Nachdem der Benutzer das Kreditangebot ausgefüllt und auf die Senden-Schaltfläche geklickt hat, werden die Daten an das HandleData Java-Servlet gesendet. (Siehe "Kreditformular" .)
4
Das HandleData Java-Servlet verwendet die Forms-Dienst-Client-API, um die Formularübermittlung zu verarbeiten und Formulardaten abzurufen. Die Daten werden dann in einer Unternehmensdatenbank gespeichert. (Siehe Verarbeiten gesendeter Formulare .)
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 vom Java-Servlet des Beispielkreditantrags wiedergegeben. GetLoanForm
Bestätigungsformular
Dieses Formular wird vom Java Servlet des Beispielkreditantrags wiedergegeben. HandleData
Das HandleData Java-Servlet füllt dieses Formular mit dem Vor- und Nachnamen sowie dem Betrag des Benutzers im Voraus aus. Nachdem das Formular vorausgefüllt wurde, wird es an den Client-Webbrowser gesendet. (Siehe Vorausfüllen von Formularen mit flexiblen Layouts )
Java-Servlets
Der Beispielleihantrag ist ein Beispiel für eine Forms-Dienstanwendung, die als Java-Servlet existiert. Ein Java-Servlet ist ein Java-Programm, das auf einem J2EE-Anwendungsserver wie WebSphere ausgeführt wird und den Forms-Dienst Client-API-Code enthält.
Der folgende Code zeigt die Syntax eines Java-Servlets namens 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 Forms-Dienst-Client-API-Code nicht in einer Java-Servlet-Methode doGet oder - doPost Methode. Es ist besser, diesen Code innerhalb einer separaten Klasse zu programmieren, die Klasse innerhalb der doPost Methode (oder doGet -Methode) zu instanziieren und die entsprechenden Methoden aufzurufen. Bei einer kürzeren Codeausführung werden die Codebeispiele in diesem Abschnitt jedoch auf ein Minimum beschränkt und Codebeispiele in die doPost Methode eingefügt.
For more information about the Forms service, see Services Reference for AEM Forms .
Zusammenfassung der Schritte
So rendern Sie ein interaktives PDF-Formular:
  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie ein Forms Client-API-Objekt.
  3. Geben Sie URI-Werte an.
  4. Anhängen von Dateien an das Formular (optional).
  5. Interaktives PDF-Formular wiedergeben
  6. Schreiben Sie den Formulardatenstream in den Client-Webbrowser.
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.
Erstellen eines Forms Client-API-Objekts
Bevor Sie einen Forms-Dienst-Client-API-Vorgang 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-Webdienst-API verwenden, erstellen Sie ein FormsService Objekt.
URI-Werte angeben
Sie können URI-Werte angeben, die der Forms-Dienst zum Rendern eines Formulars benötigt. Ein Formularentwurf, der als Teil einer Forms-Anwendung gespeichert wird, kann mithilfe des Inhaltsstamm-URI-Werts referenziert werden repository:/// . Betrachten Sie zum Beispiel den folgenden Formularentwurf mit dem Namen Loan.xdp innerhalb einer Forms-Anwendung mit dem Namen FormsApplication :
Um auf diesen Formularentwurf zuzugreifen, geben Sie Applications/FormsApplication/1.0/FormsFolder/Loan.xdp als Formularname (der erste Parameter, der an die renderPDFForm Methode übergeben wird) und repository:/// als Inhaltsstamm-URI-Wert an.
Informationen zum Erstellen einer Forms-Anwendung 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 wie die Ziel-URL definieren, an die Formulardaten gesendet werden. Die Ziel-URL kann auf eine der folgenden Arten definiert werden:
  • Klicken Sie beim Entwerfen des Formularentwurfs in Designer auf die Schaltfläche "Senden"
  • Verwenden der Forms-Dienst-Client-API
Wenn die Ziel-URL im Formularentwurf definiert ist, überschreiben Sie sie nicht mit der Forms-Dienst-Client-API. Wenn Sie also die Ziel-URL mit der Forms-API festlegen, wird die angegebene URL im Formularentwurf auf die mit der API angegebene URL zurückgesetzt. Wenn Sie das PDF-Formular an die im Formularentwurf angegebene Ziel-URL senden möchten, setzen Sie die Ziel-URL programmatisch auf eine leere Zeichenfolge.
Wenn Sie über ein Formular mit einer Senden- und einer Berechnungsschaltfläche verfügen (mit einem entsprechenden Skript, das auf dem Server ausgeführt wird), 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 .)
Anstatt einen URL-Wert für den Verweis auf eine XDP-Datei anzugeben, können Sie auch eine com.adobe.idp.Document Instanz an den Forms-Dienst übergeben. Die com.adobe.idp.Document Instanz enthält einen Formularentwurf. (Siehe Übergeben von Dokumenten an den Forms-Dienst .)
Anhängen von Dateien an das Formular
Sie können Dateien an ein Formular anhängen. Wenn Sie ein PDF-Formular mit Dateianlagen wiedergeben, können Benutzer die Dateianlagen in Acrobat über den Bereich "Dateianlagen"abrufen. Sie können verschiedene Dateitypen an ein Formular, wie z. B. eine Textdatei, oder an eine Binärdatei wie eine JPG-Datei anhängen.
Das Anhängen von Dateianlagen an ein Formular ist optional.
Interaktives PDF-Formular wiedergeben
Verwenden Sie zum Wiedergeben eines Formulars einen Formularentwurf, der in Designer erstellt und als XDP- oder PDF-Datei gespeichert wurde. Außerdem können Sie ein Formular wiedergeben, das mit Acrobat erstellt und als PDF-Datei gespeichert wurde. Um ein interaktives PDF-Formular wiederzugeben, rufen Sie die FormsServiceClient Methode oder renderPDFForm Methode des renderPDFForm2 Objekts auf.
Das Objekt renderPDFForm verwendet ein URLSpec Objekt. Der Inhaltsstamm der XDP-Datei wird mithilfe der URLSpec Methode des setContentRootURI Objekts an den Forms-Dienst übergeben. Der Name des Formularentwurfs ( formQuery ) wird als separater Parameterwert übergeben. Die beiden Werte werden verkettet, um den absoluten Verweis auf den Formularentwurf zu erhalten.
Die renderPDFForm2 Methode akzeptiert eine com.adobe.idp.Document Instanz, die das XDP- oder PDF-Dokument zum Rendern enthält.
Die Laufzeitoption für PDF-Dateien mit Tags kann nicht eingestellt werden, wenn das Eingabedokument ein PDF-Dokument ist. Wenn es sich bei der Eingabedatei um eine XDP-Datei handelt, kann die PDF-Option mit Tags festgelegt werden.

Interaktives PDF-Formular mit der Java-API wiedergeben

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"im Klassenpfad Ihres Java-Projekts ein.
  2. Erstellen eines Forms Client-API-Objekts
    • Erstellen Sie ein ServiceClientFactory -" -Objekt, das Verbindungseigenschaften enthält.
    • Create an FormsServiceClient object by using its constructor and passing the ServiceClientFactory object.
  3. URI-Werte angeben
    • Erstellen Sie ein URLSpec Objekt, das URI-Werte mithilfe des Konstruktors speichert.
    • Rufen Sie die URLSpec Methode des setApplicationWebRoot Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Webstamm der Anwendung darstellt.
    • Rufen Sie die URLSpec Methode des setContentRootURI Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Inhaltsstamm-URI-Wert angibt. Stellen Sie sicher, dass sich der Formularentwurf im Inhaltsstamm-URI befindet. Andernfalls gibt der Forms-Dienst eine Ausnahme aus. Um auf das Repository zu verweisen, geben Sie repository:/// an.
    • Rufen Sie die URLSpec Methode des setTargetURL Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Ziel-URL-Wert angibt, an den die Formulardaten gesendet werden. Wenn Sie die Ziel-URL im Formularentwurf definieren, können Sie eine leere Zeichenfolge übergeben. Sie können auch die URL angeben, an die ein Formular gesendet wird, um Berechnungen durchzuführen.
  4. Anhängen von Dateien an das Formular
    • Erstellen Sie ein java.util.HashMap Objekt zum Speichern von Dateianlagen mithilfe des Konstruktors.
    • Rufen Sie die java.util.HashMap Methode des put Objekts für jede Datei auf, die an das wiedergegebene Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:
      • Ein Zeichenfolgenwert, der den Namen der Dateianlage einschließlich der Dateinamenerweiterung angibt.
    • Ein com.adobe.idp.Document Objekt, das die Dateianlage enthält.
    Wiederholen Sie diesen Schritt für jede Datei, die an das Formular angehängt werden soll. Dieser Schritt ist optional und Sie können ihn übergeben, null wenn Sie keine Dateianlagen senden möchten.
  5. Interaktives PDF-Formular wiedergeben
    Rufen Sie die FormsServiceClient Objektmethode renderPDFForm 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 einer Forms-Anwendung 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, den Sie angeben können, null wenn Sie keine Laufzeitoptionen angeben möchten.
    • Ein URLSpec Objekt, das URI-Werte enthält, die vom Forms-Dienst benötigt werden.
    • Ein java.util.HashMap Objekt, das Dateianlagen speichert. Dies ist ein optionaler Parameter, den Sie angeben können, null 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 muss.
  6. Schreiben des Formulardatenstreams in den Client-Webbrowser
    • Erstellen Sie ein com.adobe.idp.Document Objekt, indem Sie die FormsResult "s"- getOutputContent Methode des Objekts aufrufen.
    • Rufen Sie den Inhaltstyp des com.adobe.idp.Document Objekts ab, indem Sie dessen getContentType Methode aufrufen.
    • Legen Sie den Inhaltstyp des javax.servlet.http.HttpServletResponse Objekts fest, indem Sie seine setContentType Methode aufrufen und den Inhaltstyp des com.adobe.idp.Document Objekts übergeben.
    • Erstellen Sie ein javax.servlet.ServletOutputStream Objekt, das zum Schreiben des Formulardatenstreams in den Client-Webbrowser verwendet wird, indem Sie die javax.servlet.http.HttpServletResponse Objektmethode getOutputStream aufrufen.
    • Erstellen Sie ein java.io.InputStream Objekt, indem Sie die com.adobe.idp.Document Objektmethode getInputStream aufrufen.
    • Erstellen Sie ein Byte-Array und füllen Sie es mit dem Formulardatenstream, indem Sie die InputStream read Objektmethode aufrufen und das Bytearray als Argument übergeben.
    • Rufen Sie die javax.servlet.ServletOutputStream Methode des write Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. Übergeben Sie das Bytearray an die write Methode.

Interaktives PDF-Formular mit der Web-Service-API wiedergeben

Rendern Sie ein interaktives PDF-Formular mithilfe der Forms API (Webdienst):
  1. Projektdateien einschließen
    • Erstellen Sie Java-Proxyklassen, die die Forms-Dienst-WSDL verwenden.
    • Schließen Sie die Java-Proxyklassen in Ihren Klassenpfad ein.
  2. Erstellen eines Forms Client-API-Objekts
    Erstellen Sie ein FormsService Objekt und legen Sie Authentifizierungswerte fest.
  3. URI-Werte angeben
    • Erstellen Sie ein URLSpec Objekt, das URI-Werte mithilfe des Konstruktors speichert.
    • Rufen Sie die URLSpec Methode des setApplicationWebRoot Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Webstamm der Anwendung darstellt.
    • Rufen Sie die URLSpec Methode des setContentRootURI Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Inhaltsstamm-URI-Wert angibt. Stellen Sie sicher, dass sich der Formularentwurf im Inhaltsstamm-URI befindet. Andernfalls gibt der Forms-Dienst eine Ausnahme aus. Um auf das Repository zu verweisen, geben Sie repository:/// an.
    • Rufen Sie die URLSpec Methode des setTargetURL Objekts auf und übergeben Sie einen Zeichenfolgenwert, der den Ziel-URL-Wert angibt, an den die Formulardaten gesendet werden. Wenn Sie die Ziel-URL im Formularentwurf definieren, können Sie eine leere Zeichenfolge übergeben. Sie können auch die URL angeben, an die ein Formular gesendet wird, um Berechnungen durchzuführen.
  4. Anhängen von Dateien an das Formular
    • Erstellen Sie ein java.util.HashMap Objekt zum Speichern von Dateianlagen mithilfe des Konstruktors.
    • Rufen Sie die java.util.HashMap Methode des put Objekts für jede Datei auf, die an das wiedergegebene Formular angehängt werden soll. Übergeben Sie die folgenden Werte an diese Methode:
      • Ein Zeichenfolgenwert, der den Namen der Dateianlage einschließlich der Dateinamenerweiterung angibt
    • Ein BLOB Objekt, das den Dateianhang enthält
    Wiederholen Sie diesen Schritt für jede Datei, die an das Formular angehängt werden soll.
  5. Interaktives PDF-Formular wiedergeben
    Rufen Sie die FormsService Objektmethode renderPDFForm 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 einer Forms-Anwendung 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, den Sie angeben können, null wenn Sie keine Laufzeitoptionen angeben möchten.
    • Ein URLSpec Objekt, das URI-Werte enthält, die vom Forms-Dienst benötigt werden.
    • Ein java.util.HashMap Objekt, das Dateianlagen speichert. Dies ist ein optionaler Parameter, den Sie angeben können, null 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. Auf diese Weise wird das gerenderte PDF-Formular gespeichert.
    • Ein leeres javax.xml.rpc.holders.LongHolder Objekt, das von der Methode gefü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 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.
  6. Schreiben des Formulardatenstreams in den Client-Webbrowser
    • Erstellen Sie ein FormResult Objekt, indem Sie den Wert des com.adobe.idp.services.holders.FormsResultHolder Objektdatenelements abrufen value .
    • Erstellen Sie ein BLOB Objekt, das Formulardaten enthält, indem Sie die FormsResult Objektmethode getOutputContent aufrufen.
    • Rufen Sie den Inhaltstyp des BLOB Objekts ab, indem Sie dessen getContentType Methode aufrufen.
    • Legen Sie den Inhaltstyp des javax.servlet.http.HttpServletResponse Objekts fest, indem Sie seine setContentType Methode aufrufen und den Inhaltstyp des BLOB Objekts übergeben.
    • Erstellen Sie ein javax.servlet.ServletOutputStream Objekt, das zum Schreiben des Formulardatenstreams in den Client-Webbrowser verwendet wird, indem Sie die javax.servlet.http.HttpServletResponse Objektmethode getOutputStream aufrufen.
    • Erstellen Sie ein Bytearray und füllen Sie es durch Aufrufen der BLOB Objektmethode getBinaryData . Diese Aufgabe weist den Inhalt des FormsResult Objekts dem Bytearray zu.
    • Rufen Sie die javax.servlet.http.HttpServletResponse Methode des write Objekts auf, um den Formulardatenstream an den Client-Webbrowser zu senden. Übergeben Sie das Bytearray an die write Methode.
Schreiben des Formulardatenstreams in den Client-Webbrowser
Wenn der Forms-Dienst ein Formular 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.