Beim Vorausfüllen von Formularen werden Daten für Benutzer in einem wiedergegebenen Formular angezeigt. Angenommen, ein Benutzer meldet sich mit einem Benutzernamen und einem Kennwort bei einer Website an. Bei erfolgreicher Authentifizierung wird von der Clientanwendung eine Datenbank für Benutzerinformationen Abfrage. Die Daten werden mit dem Formular zusammengeführt und dann dem Benutzer wiedergegeben. Dadurch kann der Benutzer personalisierte Daten innerhalb des Formulars Ansicht haben.
Das Vorausfüllen eines Formulars hat folgende Vorteile:
Die folgenden zwei XML-Datenquellen können ein Formular im Voraus ausfüllen:
Für jedes Formularfeld, das im Voraus gefüllt werden soll, muss ein XML-Element vorhanden sein. Der Name des XML-Elements muss mit dem Feldnamen übereinstimmen. Ein XML-Element wird ignoriert, wenn es keinem Formularfeld entspricht oder wenn der XML-Elementname nicht mit dem Feldnamen übereinstimmt. Es ist nicht erforderlich, die Reihenfolge, in der die XML-Elemente angezeigt werden, einzuhalten, solange alle XML-Elemente angegeben sind.
Wenn Sie ein Formular vorab ausfüllen, das bereits Daten enthält, müssen Sie die Daten angeben, die bereits in der XML-Datenquelle angezeigt werden. Angenommen, ein Formular mit 10 Feldern enthält Daten in vier Feldern. Nehmen Sie als Nächstes an, dass Sie die restlichen sechs Felder vorab ausfüllen möchten. In diesem Fall müssen Sie 10 XML-Elemente in der XML-Datenquelle angeben, die zum Vorausfüllen des Formulars verwendet wird. Wenn Sie nur sechs Elemente angeben, sind die ursprünglichen vier Felder leer.
Sie können beispielsweise ein Formular wie das Musterbestätigungsformular im Voraus ausfüllen. (Siehe "Bestätigungsformular"in Interaktive PDF forms rendern.)
Zum Vorausfüllen des Musterbestätigungsformulars müssen Sie eine XML-Datenquelle erstellen, die drei XML-Elemente enthält, die den drei Feldern im Formular entsprechen. Dieses Formular enthält die folgenden drei Felder: FirstName
, LastName
und Amount
. Der erste Schritt besteht darin, eine XML-Datenquelle zu erstellen, die XML-Elemente enthält, die mit den Feldern im Formularentwurf übereinstimmen. Der nächste Schritt besteht darin, den XML-Elementen Datenwerte zuzuweisen, wie im folgenden XML-Code dargestellt.
<Untitled>
<FirstName>Jerry</FirstName>
<LastName>Johnson</LastName>
<Amount>250000</Amount>
</Untitled>
Nachdem Sie das Bestätigungsformular mit dieser XML-Datenquelle ausgefüllt und das Formular dann wiedergegeben haben, werden die den XML-Elementen zugewiesenen Datenwerte angezeigt, wie im folgenden Diagramm dargestellt.
Forms mit flexiblen Layouts ist nützlich, um Benutzern eine unbestimmte Datenmenge anzuzeigen. Da sich das Layout des Formulars automatisch an die zusammengeführte Datenmenge anpasst, müssen Sie kein festes Layout oder keine Seitenzahl für das Formular vorab festlegen, wie Sie es bei einem Formular mit festem Layout tun müssen.
Ein Formular wird in der Regel mit Daten gefüllt, die während der Laufzeit abgerufen werden. Daher können Sie ein Formular vorab ausfüllen, indem Sie eine XML-Datenquelle im Arbeitsspeicher erstellen und die Daten direkt in die XML-Datenquelle im Arbeitsspeicher platzieren.
Betrachten Sie eine webbasierte Anwendung, z. B. einen Online-Store. Nachdem ein Online-Käufer den Kauf von Artikeln abgeschlossen hat, werden alle gekauften Artikel in einer XML-Datenquelle im Arbeitsspeicher abgelegt, die zum Vorausfüllen eines Formulars verwendet wird. Das folgende Diagramm zeigt diesen Vorgang, der in der Tabelle nach dem Diagramm erläutert wird.
Die folgende Tabelle beschreibt die Schritte in diesem Diagramm.
Schritt |
Beschreibung |
---|---|
1 |
Ein Benutzer kauft Artikel in einem webbasierten Online-Store. |
2 |
Nachdem der Benutzer den Kauf von Artikeln abgeschlossen und auf die Schaltfläche "Senden"geklickt hat, wird eine XML-Datenquelle im Arbeitsspeicher erstellt. Erworbene Elemente und Benutzerinformationen werden in die speicherinterne XML-Datenquelle eingefügt. |
3 |
Die XML-Datenquelle wird zum Vorausfüllen eines Bestellformulars verwendet (ein Beispiel dieses Formulars wird in der folgenden Tabelle gezeigt). |
4 |
Das Bestellformular wird an den Client-Webbrowser gerendert. |
Das folgende Diagramm zeigt ein Beispiel für ein Bestellformular. Die Informationen in der Tabelle können an die Anzahl der Datensätze in den XML-Daten angepasst werden.
Ein Formular kann vorab mit Daten aus anderen Quellen wie einer Unternehmensdatenbank oder externen Anwendungen ausgefüllt werden.
Forms mit flexiblen Layouts basieren auf Formularentwürfen, die in Designer erstellt wurden. Ein Formularentwurf gibt einen Satz von Layout-, Präsentations- und Datenerfassungsregeln an, einschließlich der Berechnung von Werten, die auf der Benutzereingabe basieren. Die Regeln werden angewendet, wenn Daten in ein Formular eingegeben werden. Felder, die einem Formular hinzugefügt werden, sind Teilformulare, die sich im Formularentwurf befinden. Im Bestellformular im vorherigen Diagramm ist jede Zeile beispielsweise ein Teilformular. Informationen zum Erstellen eines Formularentwurfs mit Teilformularen finden Sie unter Bestellformular mit flexiblem Layout erstellen.
Eine XML-Datenquelle wird zum Vorausfüllen von Formularen mit festen Layouts und flexiblen Layouts verwendet. Der Unterschied besteht jedoch darin, dass eine XML-Datenquelle, die ein Formular mit einem flexiblen Layout im Voraus ausfüllt, sich wiederholende XML-Elemente enthält, die zum Vorausfüllen von Teilformularen verwendet werden, die im Formular wiederholt werden. Diese sich wiederholenden XML-Elemente werden als Datenuntergruppen bezeichnet.
Eine XML-Datenquelle, mit der das im vorherigen Diagramm dargestellte Bestellformular im Voraus gefüllt wird, enthält vier sich wiederholende Datenuntergruppen. Jede Datenuntergruppe entspricht einem gekauften Artikel. Die gekauften Artikel sind ein Monitor, eine Schreibtischleuchte, ein Telefon und ein Adressbuch.
Die folgende XML-Datenquelle dient zum Vorausfüllen des Bestellformulars.
<header>
<!-- XML elements used to prepopulate non-repeating fields such as address
<!and city
<txtPONum>8745236985</txtPONum>
<dtmDate>2004-02-08</dtmDate>
<txtOrderedByCompanyName>Any Company Name</txtOrderedByCompanyName>
<txtOrderedByAddress>555, Any Blvd.</txtOrderedByAddress>
<txtOrderedByCity>Any City</txtOrderedByCity>
<txtOrderedByStateProv>ST</txtOrderedByStateProv>
<txtOrderedByZipCode>12345</txtOrderedByZipCode>
<txtOrderedByCountry>Any Country</txtOrderedByCountry>
<txtOrderedByPhone>(123) 456-7890</txtOrderedByPhone>
<txtOrderedByFax>(123) 456-7899</txtOrderedByFax>
<txtOrderedByContactName>Contact Name</txtOrderedByContactName>
<txtDeliverToCompanyName>Any Company Name</txtDeliverToCompanyName>
<txtDeliverToAddress>7895, Any Street</txtDeliverToAddress>
<txtDeliverToCity>Any City</txtDeliverToCity>
<txtDeliverToStateProv>ST</txtDeliverToStateProv>
<txtDeliverToZipCode>12346</txtDeliverToZipCode>
<txtDeliverToCountry>Any Country</txtDeliverToCountry>
<txtDeliverToPhone>(123) 456-7891</txtDeliverToPhone>
<txtDeliverToFax>(123) 456-7899</txtDeliverToFax>
<txtDeliverToContactName>Contact Name</txtDeliverToContactName>
</header>
<detail>
<!-- A data subgroup that contains information about the monitor>
<txtPartNum>00010-100</txtPartNum>
<txtDescription>Monitor</txtDescription>
<numQty>1</numQty>
<numUnitPrice>350.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the desk lamp>
<txtPartNum>00010-200</txtPartNum>
<txtDescription>Desk lamps</txtDescription>
<numQty>3</numQty>
<numUnitPrice>55.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the Phone>
<txtPartNum>00025-275</txtPartNum>
<txtDescription>Phone</txtDescription>
<numQty>5</numQty>
<numUnitPrice>85.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the address book>
<txtPartNum>00300-896</txtPartNum>
<txtDescription>Address book</txtDescription>
<numQty>2</numQty>
<numUnitPrice>15.00</numUnitPrice>
</detail>
Beachten Sie, dass jede Datenuntergruppe vier XML-Elemente enthält, die den folgenden Informationen entsprechen:
Der Name des übergeordneten XML-Elements einer Datenuntergruppe muss mit dem Namen des Teilformulars im Formularentwurf übereinstimmen. Beachten Sie im vorherigen Diagramm beispielsweise, dass der Name des übergeordneten XML-Elements der Datenuntergruppe detail
lautet. Dies entspricht dem Namen des Teilformulars, das sich im Formularentwurf befindet, auf dem das Bestellformular basiert. Wenn der Name des übergeordneten XML-Elements der Datenuntergruppe und das Teilformular nicht übereinstimmen, wird kein serverseitiges Formular vorausgefüllt.
Jede Datenuntergruppe muss XML-Elemente enthalten, die mit den Feldnamen im Teilformular übereinstimmen. Das Teilformular detail
im Formularentwurf enthält die folgenden Felder:
Wenn Sie versuchen, ein Formular mit einer Datenquelle, die sich wiederholende XML-Elemente enthält, im Voraus zu füllen und die Option RenderAtClient
auf No
festlegen, wird nur der erste Datensatz in das Formular eingefügt. Um sicherzustellen, dass alle Datensätze in das Formular zusammengeführt werden, setzen Sie RenderAtClient
auf Yes
. Weitere Informationen zur Option RenderAtClient
finden Sie unter Rendern von Forms auf dem Client.
Weitere Informationen zum Forms-Dienst finden Sie unter Dienste-Referenz für AEM Forms.
So füllen Sie ein Formular mit einem flexiblen Layout im Voraus aus:
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.
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 einer speicherinternen XML-Datenquelle
Mit den Klassen org.w3c.dom
können Sie eine XML-Datenquelle im Arbeitsspeicher erstellen, um ein Formular mit einem flexiblen Layout im Voraus zu füllen. Sie müssen Daten in eine XML-Datenquelle einfügen, die dem Formular entspricht. Informationen zur Beziehung zwischen einem Formular mit einem flexiblen Layout und der XML-Datenquelle finden Sie unter Die Datenuntergruppen.
XML-Datenquelle konvertieren
Eine XML-Datenquelle im Arbeitsspeicher, die mithilfe von org.w3c.dom
-Klassen erstellt wird, kann in ein com.adobe.idp.Document
-Objekt konvertiert werden, bevor sie zum Vorausfüllen eines Formulars verwendet werden kann. Eine speicherinterne XML-Datenquelle kann mithilfe von Java XML-Transformationsklassen konvertiert werden.
Wenn Sie die WSDL des Forms-Dienstes zum Vorausfüllen eines Formulars verwenden, müssen Sie ein org.w3c.dom.Document
-Objekt in ein BLOB
-Objekt konvertieren.
Vorausgefülltes Formular wiedergeben
Sie können ein vorausgefülltes Formular wie jedes andere Formular wiedergeben. Der einzige Unterschied besteht darin, dass Sie das com.adobe.idp.Document
-Objekt verwenden, das die XML-Datenquelle enthält, um das Formular im Voraus auszufüllen.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Interaktive PDF forms wiedergeben
Erstellen von Webanwendungen zum Rendern von Forms
So füllen Sie ein Formular mit einem flexiblen Layout mithilfe der Forms API (Java) im Voraus aus:
Projektdateien einschließen
Schließen Sie Client-JAR-Dateien wie "adobe-forms-client.jar"im Klassenpfad Ihres Java-Projekts ein. Weitere Informationen über den Speicherort dieser Dateien finden Sie unter Einbeziehung von AEM Forms Java-Bibliotheksdateien.
Erstellen einer speicherinternen XML-Datenquelle
Erstellen Sie ein Java DocumentBuilderFactory
-Objekt, indem Sie die DocumentBuilderFactory
-Klasse"newInstance
-Methode aufrufen.
Erstellen Sie ein Java DocumentBuilder
-Objekt, indem Sie die DocumentBuilderFactory
-Objektmethode newDocumentBuilder
aufrufen.
Rufen Sie die newDocument
-Methode des Objekts auf, um ein org.w3c.dom.Document
-Objekt zu instanziieren.DocumentBuilder
Erstellen Sie das Stammelement der XML-Datenquelle, indem Sie die org.w3c.dom.Document
-Methode des Objekts createElement
aufrufen. Dadurch wird ein Element
-Objekt erstellt, das das Stammelement darstellt. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Stammelement an das Dokument an, indem Sie die appendChild
-Methode des Objekts aufrufen und das Stammelementobjekt als Argument übergeben. Document
Die folgende Codezeile zeigt diese Anwendungslogik:
Element root = (Element)document.createElement("transaction"); document.appendChild(root);
Erstellen Sie das Header-Element der XML-Datenquelle, indem Sie die Document
-Methode des Objekts createElement
aufrufen. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Header-Element an das Stammelement an, indem Sie die appendChild
-Methode des Objekts aufrufen und das header-Elementobjekt als Argument übergeben. root
Die XML-Elemente, die an das Header-Element angehängt werden, entsprechen dem statischen Teil des Formulars. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element header = (Element)document.createElement("header"); root.appendChild(header);
Erstellen Sie ein untergeordnetes Element, das zum Kopfzeilenelement gehört, indem Sie die createElement
-Methode des Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Namen des Elements darstellt. Document
Wandeln Sie den Rückgabewert in Element
um. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie die appendChild
-Methode aufrufen und die Document
-Methode des Objekts als Argument übergeben. createTextNode
Geben Sie einen Zeichenfolgenwert an, der als Wert des untergeordneten Elements angezeigt wird. Hängen Sie schließlich das untergeordnete Element an das Header-Element an, indem Sie die appendChild
-Methode des Header-Elements aufrufen und das untergeordnete Element-Objekt als Argument übergeben. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element poNum= (Element)document.createElement("txtPONum"); poNum.appendChild(document.createTextNode("8745236985")); header.appendChild(LastName);
hinzufügen alle verbleibenden Elemente in das Kopfzeilenelement, indem der letzte Unterschritt für jedes Feld im statischen Teil des Formulars wiederholt wird (im XML-Datenquellendiagramm werden diese Felder in Abschnitt A angezeigt). (Siehe Die Datenuntergruppen.)
Erstellen Sie das Detail-Element der XML-Datenquelle, indem Sie die Document
-Methode des Objekts createElement
aufrufen. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Detail-Element an das Stammelement an, indem Sie die appendChild
-Methode des Objekts aufrufen und das detail-Elementobjekt als Argument übergeben. root
Die XML-Elemente, die an das Detail-Element angehängt werden, entsprechen dem dynamischen Teil des Formulars. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element detail = (Element)document.createElement("detail"); root.appendChild(detail);
Erstellen Sie ein untergeordnetes Element, das zum Detail-Element gehört, indem Sie die createElement
-Methode des Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Namen des Elements darstellt. Document
Wandeln Sie den Rückgabewert in Element
um. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie die appendChild
-Methode aufrufen und die Document
-Methode des Objekts als Argument übergeben. createTextNode
Geben Sie einen Zeichenfolgenwert an, der als Wert des untergeordneten Elements angezeigt wird. Fügen Sie schließlich das untergeordnete Element an das Detail-Element an, indem Sie die appendChild
-Methode des Detail-Elements aufrufen und das untergeordnete Element-Objekt als Argument übergeben. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element txtPartNum = (Element)document.createElement("txtPartNum"); txtPartNum.appendChild(document.createTextNode("00010-100")); detail.appendChild(txtPartNum);
Wiederholen Sie den letzten Unterschritt, damit alle XML-Elemente an das Detail-Element angehängt werden. Um die XML-Datenquelle, die zum Ausfüllen des Bestellformulars verwendet wird, ordnungsgemäß zu erstellen, müssen Sie die folgenden XML-Elemente an das Detail-Element anhängen: txtDescription
, numQty
und numUnitPrice
.
Wiederholen Sie die letzten beiden Unterschritte für alle Datenelemente, die zum Vorausfüllen des Formulars verwendet werden.
XML-Datenquelle konvertieren
javax.xml.transform.Transformer
-Objekt, indem Sie die statische javax.xml.transform.Transformer
-Methode des Objekts aufrufen.newInstance
Transformer
-Objekt, indem Sie die TransformerFactory
-Methode des Objekts newTransformer
aufrufen.ByteArrayOutputStream
, indem Sie den Konstruktor verwenden.javax.xml.transform.dom.DOMSource
-Objekt, indem Sie den Konstruktor verwenden und das org.w3c.dom.Document
-Objekt übergeben, das in Schritt 1 erstellt wurde.javax.xml.transform.dom.DOMSource
-Objekt, indem Sie seinen Konstruktor verwenden und das ByteArrayOutputStream
-Objekt übergeben.ByteArrayOutputStream
-Objekt, indem Sie die javax.xml.transform.Transformer
-Methode des Objekts transform
aufrufen und die Objekte javax.xml.transform.dom.DOMSource
und javax.xml.transform.stream.StreamResult
übergeben.ByteArrayOutputStream
zu.ByteArrayOutputStream
-Methode des Objekts toByteArray
aufrufen.com.adobe.idp.Document
-Objekt, indem Sie dessen Konstruktor verwenden und das Bytearray übergeben.Vorausgefülltes Formular wiedergeben
Rufen Sie die renderPDFForm
-Methode des Objekts auf und übergeben Sie die folgenden Werte:FormsServiceClient
com.adobe.idp.Document
-Objekt, das Daten enthält, die mit dem Formular zusammengeführt werden sollen. Stellen Sie sicher, dass Sie das com.adobe.idp.Document
-Objekt verwenden, das in den Schritten 1 und 2 erstellt wurde.PDFFormRenderSpec
-Objekt, das Laufzeitoptionen speichert.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 muss.
javax.servlet.ServletOutputStream
-Objekt, das zum Senden eines Formulardatenstreams an den Client-Webbrowser verwendet wird.com.adobe.idp.Document
-Objekt, indem Sie die FormsResult
-Methode "s getOutputContent
"aufrufen.java.io.InputStream
-Objekt, indem Sie die com.adobe.idp.Document
-Methode des Objekts getInputStream
aufrufen.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): Vorausfüllen von Forms mit flexiblen Layouts mit der Java-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
So füllen Sie ein Formular mit einem flexiblen Layout mithilfe der Forms API (Webdienst) im Voraus aus:
Projektdateien einschließen
Erstellen einer speicherinternen XML-Datenquelle
Erstellen Sie ein Java DocumentBuilderFactory
-Objekt, indem Sie die DocumentBuilderFactory
-Klasse"newInstance
-Methode aufrufen.
Erstellen Sie ein Java DocumentBuilder
-Objekt, indem Sie die DocumentBuilderFactory
-Objektmethode newDocumentBuilder
aufrufen.
Rufen Sie die newDocument
-Methode des Objekts auf, um ein org.w3c.dom.Document
-Objekt zu instanziieren.DocumentBuilder
Erstellen Sie das Stammelement der XML-Datenquelle, indem Sie die org.w3c.dom.Document
-Methode des Objekts createElement
aufrufen. Dadurch wird ein Element
-Objekt erstellt, das das Stammelement darstellt. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Stammelement an das Dokument an, indem Sie die appendChild
-Methode des Objekts aufrufen und das Stammelementobjekt als Argument übergeben. Document
Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element root = (Element)document.createElement("transaction"); document.appendChild(root);
Erstellen Sie das Header-Element der XML-Datenquelle, indem Sie die Document
-Methode des Objekts createElement
aufrufen. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Header-Element an das Stammelement an, indem Sie die appendChild
-Methode des Objekts aufrufen und das header-Elementobjekt als Argument übergeben. root
Die XML-Elemente, die an das Header-Element angehängt werden, entsprechen dem statischen Teil des Formulars. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element header = (Element)document.createElement("header"); root.appendChild(header);
Erstellen Sie ein untergeordnetes Element, das zum Kopfzeilenelement gehört, indem Sie die createElement
-Methode des Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Namen des Elements darstellt. Document
Wandeln Sie den Rückgabewert in Element
um. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie die appendChild
-Methode aufrufen und die Document
-Methode des Objekts als Argument übergeben. createTextNode
Geben Sie einen Zeichenfolgenwert an, der als Wert des untergeordneten Elements angezeigt wird. Hängen Sie schließlich das untergeordnete Element an das Header-Element an, indem Sie die appendChild
-Methode des Header-Elements aufrufen und das untergeordnete Element-Objekt als Argument übergeben. Die folgende Codezeile zeigt diese Anwendungslogik:
Element poNum= (Element)document.createElement("txtPONum"); poNum.appendChild(document.createTextNode("8745236985")); header.appendChild(LastName);
hinzufügen alle verbleibenden Elemente in das Kopfzeilenelement, indem der letzte Unterschritt für jedes Feld im statischen Teil des Formulars wiederholt wird (im XML-Datenquellendiagramm werden diese Felder in Abschnitt A angezeigt). (Siehe Die Datenuntergruppen.)
Erstellen Sie das Detail-Element der XML-Datenquelle, indem Sie die Document
-Methode des Objekts createElement
aufrufen. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Hängen Sie anschließend das Detail-Element an das Stammelement an, indem Sie die appendChild
-Methode des Objekts aufrufen und das detail-Elementobjekt als Argument übergeben. root
Die XML-Elemente, die an das Detail-Element angehängt werden, entsprechen dem dynamischen Teil des Formulars. Die folgende Codezeile zeigt diese Anwendungslogik:
Element detail = (Element)document.createElement("detail"); root.appendChild(detail);
Erstellen Sie ein untergeordnetes Element, das zum Detail-Element gehört, indem Sie die createElement
-Methode des Objekts aufrufen und einen Zeichenfolgenwert übergeben, der den Namen des Elements darstellt. Document
Wandeln Sie den Rückgabewert in Element
um. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie die appendChild
-Methode aufrufen und die Document
-Methode des Objekts als Argument übergeben. createTextNode
Geben Sie einen Zeichenfolgenwert an, der als Wert des untergeordneten Elements angezeigt wird. Fügen Sie schließlich das untergeordnete Element an das Detail-Element an, indem Sie die appendChild
-Methode des Detail-Elements aufrufen und das untergeordnete Element-Objekt als Argument übergeben. Die folgende Codezeile zeigt diese Anwendungslogik:
Element txtPartNum = (Element)document.createElement("txtPartNum"); txtPartNum.appendChild(document.createTextNode("00010-100")); detail.appendChild(txtPartNum);
Wiederholen Sie den letzten Unterschritt, damit alle XML-Elemente an das Detail-Element angehängt werden. Um die XML-Datenquelle, die zum Ausfüllen des Bestellformulars verwendet wird, ordnungsgemäß zu erstellen, müssen Sie die folgenden XML-Elemente an das Detail-Element anhängen: txtDescription
, numQty
und numUnitPrice
.
Wiederholen Sie die letzten beiden Unterschritte für alle Datenelemente, die zum Vorausfüllen des Formulars verwendet werden.
XML-Datenquelle konvertieren
javax.xml.transform.Transformer
-Objekt, indem Sie die statische javax.xml.transform.Transformer
-Methode des Objekts aufrufen.newInstance
Transformer
-Objekt, indem Sie die TransformerFactory
-Methode des Objekts newTransformer
aufrufen.ByteArrayOutputStream
, indem Sie den Konstruktor verwenden.javax.xml.transform.dom.DOMSource
-Objekt, indem Sie den Konstruktor verwenden und das org.w3c.dom.Document
-Objekt übergeben, das in Schritt 1 erstellt wurde.javax.xml.transform.dom.DOMSource
-Objekt, indem Sie seinen Konstruktor verwenden und das ByteArrayOutputStream
-Objekt übergeben.ByteArrayOutputStream
-Objekt, indem Sie die javax.xml.transform.Transformer
-Methode des Objekts transform
aufrufen und die Objekte javax.xml.transform.dom.DOMSource
und javax.xml.transform.stream.StreamResult
übergeben.ByteArrayOutputStream
zu.ByteArrayOutputStream
-Methode des Objekts toByteArray
aufrufen.BLOB
-Objekt mit dem Konstruktor, rufen Sie die setBinaryData
-Methode auf und übergeben Sie das Bytearray.Vorausgefülltes Formular wiedergeben
Rufen Sie die renderPDFForm
-Methode des Objekts auf und übergeben Sie die folgenden Werte:FormsService
BLOB
-Objekt, das Daten enthält, die mit dem Formular zusammengeführt werden sollen. Stellen Sie sicher, dass Sie das BLOB
-Objekt verwenden, das in den Schritten 1 und 2 erstellt wurde.PDFFormRenderSpecc
-Objekt, das Laufzeitoptionen speichert. Weitere Informationen finden Sie unter AEM Forms API Reference.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.
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.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.
Siehe auch
Aufrufen von AEM Forms mit Base64-Kodierung