Sie können ein DDX-Dokument dynamisch erstellen, das zum Ausführen eines Assembler-Vorgangs verwendet werden kann. Durch das dynamische Erstellen eines DDX-Dokuments können Sie Werte im DDX-Dokument verwenden, die während der Laufzeit abgerufen werden. Verwenden Sie zum dynamischen Erstellen eines DDX-Dokuments Klassen, die zur verwendeten Programmiersprache gehören. Wenn Sie beispielsweise Ihre Clientanwendung mit Java entwickeln, verwenden Sie Klassen, die zum org.w3c.dom.*
Paket. Wenn Sie Microsoft .NET verwenden, verwenden Sie ebenfalls Klassen, die zum System.Xml
Namespace.
Bevor Sie das DDX-Dokument an den Assembler-Dienst übergeben können, konvertieren Sie die XML aus einem org.w3c.dom.Document
-Instanz zu einer com.adobe.idp.Document
-Instanz. Wenn Sie Webdienste verwenden, konvertieren Sie die XML aus dem Datentyp, der zum Erstellen der XML verwendet wurde (z. B. XmlDocument
) zu BLOB
-Instanz.
Angenommen, das folgende DDX-Dokument wird dynamisch erstellt.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDFsFromBookmarks prefix="stmt">
<PDF source="AssemblerResultPDF.pdf"/>
</PDFsFromBookmarks>
</DDX>
Dieses DDX-Dokument zerlegt ein PDF-Dokument. Es wird empfohlen, dass Sie mit dem Zerlegen von PDF-Dokumenten vertraut sind.
Weitere Informationen zum Assembler-Dienst finden Sie unter Dienstreferenz für AEM Forms.
Weitere Informationen zu einem DDX-Dokument finden Sie unter Assembler-Dienst und DDX-Referenz.
Um ein PDF-Dokument mithilfe eines dynamisch erstellten DDX-Dokuments aufzuteilen, führen Sie die folgenden Schritte 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 Proxy-Dateien einschließen.
Die folgenden JAR-Dateien müssen zum Klassenpfad Ihres Projekts hinzugefügt werden:
PDF Assembler-Client erstellen
Bevor Sie einen Assembler-Vorgang programmgesteuert ausführen können, erstellen Sie einen Assembler-Dienst-Client.
DDX-Dokument erstellen
Erstellen Sie ein DDX-Dokument mit der verwendeten Programmiersprache. Um ein DDX-Dokument zu erstellen, das ein PDF-Dokument aufteilt, stellen Sie sicher, dass es die PDFsFromBookmarks
-Element. Konvertieren Sie den zum Erstellen des DDX-Dokuments verwendeten Datentyp in einen com.adobe.idp.Document
-Instanz verwenden, wenn Sie die Java-API verwenden. Wenn Sie Webdienste verwenden, konvertieren Sie den Datentyp in eine BLOB
-Instanz.
Konvertieren des DDX-Dokuments
Ein DDX-Dokument, das mithilfe von org.w3c.dom
-Klassen in eine com.adobe.idp.Document
-Objekt. Verwenden Sie Java XML Transformation-Klassen, um diese Aufgabe bei Verwendung der Java-API auszuführen. Wenn Sie Webdienste verwenden, konvertieren Sie das DDX-Dokument in ein BLOB
-Objekt.
Referenzieren eines zerlegbaren PDF-Dokuments
Um ein PDF-Dokument zu zerlegen, verweisen Sie auf eine PDF-Datei, die das zu zerlegende PDF-Dokument darstellt. Wenn an den Assembler-Dienst übergeben wird, wird für jedes Lesezeichen der Stufe 1 im PDF ein separates Dokument zurückgegeben.
Laufzeitoptionen festlegen
Sie können Laufzeitoptionen festlegen, die das Verhalten des Assembler-Dienstes während der Ausführung eines Auftrags steuern. Sie können beispielsweise eine Option festlegen, mit der der Assembler-Dienst angewiesen wird, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt. Zum Festlegen von Laufzeitoptionen verwenden Sie eine AssemblerOptionSpec
-Objekt.
Aufteilen des PDF-Dokuments
Aufrufen des PDF-Dokuments durch invokeDDX
Vorgang. Übergeben Sie das dynamisch erstellte DDX-Dokument. Der Assembler-Dienst gibt zerlegte PDF-Dokumente innerhalb eines Sammlungsobjekts zurück.
Speichern Sie die zerlegten PDF-Dokumente
Alle zerlegten PDF-Dokumente werden innerhalb eines Sammlungsobjekts zurückgegeben. Durchlaufen Sie das Sammlungsobjekt und speichern Sie jedes PDF-Dokument als PDF-Datei.
Siehe auch
DDX-Dokument mithilfe der Java-API dynamisch erstellen
DDX-Dokument mithilfe der Webdienst-API dynamisch erstellen
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmgesteuerte Demontage von PDF-Dokumenten
Dynamisches Erstellen eines DDX-Dokuments und Aufteilen eines PDF-Dokuments mithilfe der Assembler Service-API (Java):
Projektdateien einschließen.
Schließen Sie Client-JAR-Dateien wie adobe-assembler-client.jar in den Klassenpfad Ihres Java-Projekts ein.
Erstellen Sie einen PDF Assembler-Client.
ServiceClientFactory
-" -Objekt, das Verbindungseigenschaften enthält.AssemblerServiceClient
-Objekt durch Verwendung seines Konstruktors und Übergabe des ServiceClientFactory
-Objekt.Erstellen Sie das DDX-Dokument.
Java erstellen DocumentBuilderFactory
-Objekt durch Aufruf der DocumentBuilderFactory
class" newInstance
-Methode.
Java erstellen DocumentBuilder
-Objekt durch Aufruf der DocumentBuilderFactory
-Objekt newDocumentBuilder
-Methode.
Rufen Sie die DocumentBuilder
-Objekt newDocument
-Methode zur Instanziierung einer org.w3c.dom.Document
-Objekt.
Erstellen Sie das Stammelement des DDX-Dokuments, indem Sie die org.w3c.dom.Document
-Objekt createElement
-Methode. Diese Methode erstellt eine Element
-Objekt, 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. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie dessen setAttribute
-Methode. Hängen Sie das Element schließlich an das Kopfzeilenelement an, indem Sie die appendChild
-Methode und übergeben Sie das untergeordnete Element-Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root);
Erstellen Sie die PDFsFromBookmarks
-Element durch Aufruf der Document
-Objekt createElement
-Methode. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die createElement
-Methode. Wandeln Sie den Rückgabewert in Element
um. Legen Sie einen Wert für die PDFsFromBookmarks
-Element durch Aufruf von setAttribute
-Methode. Anhängen der PDFsFromBookmarks
-Element zu DDX
-Element durch Aufruf des DDX-Elements appendChild
-Methode. Übergeben Sie die PDFsFromBookmarks
element -Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks);
Erstellen Sie eine PDF
-Element durch Aufruf der Document
-Objekt createElement
-Methode. Übergeben Sie einen string -Wert, der den Namen des Elements darstellt. Wandeln Sie den Rückgabewert in Element
um. Legen Sie einen Wert für die PDF
-Element durch Aufruf von setAttribute
-Methode. Anhängen der PDF
-Element zu PDFsFromBookmarks
-Element durch Aufruf der PDFsFromBookmarks
-Element appendChild
-Methode. Übergeben Sie die PDF
element -Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
Konvertieren Sie das DDX-Dokument.
javax.xml.transform.Transformer
-Objekt durch Aufrufen der javax.xml.transform.Transformer
Statische Objektform newInstance
-Methode.Transformer
-Objekt durch Aufrufen der TransformerFactory
-Objekt newTransformer
-Methode.ByteArrayOutputStream
, indem Sie den Konstruktor verwenden.javax.xml.transform.dom.DOMSource
, indem Sie den Konstruktor verwenden. Übergeben Sie die org.w3c.dom.Document
-Objekt, das das DDX-Dokument darstellt.javax.xml.transform.dom.DOMSource
-Objekt, indem Sie seinen Konstruktor verwenden und das ByteArrayOutputStream
-Objekt übergeben.ByteArrayOutputStream
-Objekt durch Aufrufen der javax.xml.transform.Transformer
-Objekt transform
-Methode. Übergeben Sie die javax.xml.transform.dom.DOMSource
und javax.xml.transform.stream.StreamResult
Objekte.ByteArrayOutputStream
-Objekt zum Byte-Array hinzu.ByteArrayOutputStream
-Objekt toByteArray
-Methode.com.adobe.idp.Document
-Objekt, indem Sie seinen Konstruktor verwenden und das Byte-Array übergeben.Referenzieren Sie ein zu zerlegendes PDF-Dokument.
Erstellen Sie eine java.util.Map
-Objekt, das zum Speichern von Eingabe-PDF-Dokumenten mithilfe eines HashMap
-Konstruktor.
Erstellen Sie eine java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort des PDF-Dokuments an die Disassemblierung übergeben.
Erstellen Sie eine com.adobe.idp.Document
-Objekt. Übergeben Sie die java.io.FileInputStream
-Objekt, das das zu zerlegende PDF-Dokument enthält.
Fügen Sie dem java.util.Map
-Objekt durch Aufrufen seiner put
-Methode verwenden und die folgenden Argumente übergeben:
AssemblerResultPDF.pdf
.com.adobe.idp.Document
-Objekt, das das zu zerlegende PDF-Dokument enthält.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe seines Konstruktors speichert.AssemblerOptionSpec
-Objekt. Um beispielsweise den Assembler-Dienst anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, rufen Sie die AssemblerOptionSpec
-Objekt setFailOnError
-Methode und -übergabe false
.Lösen Sie das PDF-Dokument aus.
Rufen Sie die AssemblerServiceClient
-Objekt invokeDDX
-Methode verwenden und die folgenden Werte übergeben:
com.adobe.idp.Document
-Objekt, das das dynamisch erstellte DDX-Dokument darstelltjava.util.Map
-Objekt, das das zu zerlegende PDF-Dokument enthältcom.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich der Standardschrift und der AuftragsprotokollebeneDie invokeDDX
-Methode gibt eine com.adobe.livecycle.assembler.client.AssemblerResult
-Objekt, das die zerlegten PDF-Dokumente und alle aufgetretenen Ausnahmen enthält.
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die zerlegten PDF-Dokumente abzurufen:
AssemblerResult
-Objekt getDocuments
-Methode. Diese Methode gibt eine java.util.Map
-Objekt.java.util.Map
-Objekt, bis Sie das Ergebnis finden com.adobe.idp.Document
-Objekt.com.adobe.idp.Document
-Objekt copyToFile
-Methode, um das PDF-Dokument zu extrahieren.Siehe auch
Schnellstart (SOAP-Modus): DDX-Dokument mithilfe der Java-API dynamisch erstellen
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Dynamisches Erstellen eines DDX-Dokuments und Aufteilen eines PDF-Dokuments mithilfe der Assembler-Dienst-API (Webdienst):
Projektdateien einschließen.
Erstellen Sie ein Microsoft .NET-Projekt, das MTOM verwendet. Stellen Sie sicher, dass Sie beim Festlegen einer Dienstreferenz die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Ersetzen localhost
mit der IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
Erstellen Sie einen PDF Assembler-Client.
Erstellen Sie eine AssemblerServiceClient
-Objekt mithilfe des Standardkonstruktors.
Erstellen Sie eine AssemblerServiceClient.Endpoint.Address
-Objekt mithilfe der System.ServiceModel.EndpointAddress
-Konstruktor. Übergeben Sie einen string -Wert, der die WSDL an den AEM Forms-Dienst angibt (z. B. http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Sie müssen die lc_version
-Attribut. Dieses Attribut wird verwendet, wenn Sie eine Dienstreferenz erstellen.
Erstellen Sie eine System.ServiceModel.BasicHttpBinding
-Objekt durch Abrufen des Werts der AssemblerServiceClient.Endpoint.Binding
-Feld. Wandeln Sie den Rückgabewert in BasicHttpBinding
um.
Legen Sie die System.ServiceModel.BasicHttpBinding
-Objekt MessageEncoding
-Feld zu WSMessageEncoding.Mtom
. Dieser Wert stellt sicher, dass MTOM verwendet wird.
Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Aufgaben ausführen:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
zum Feld BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
zum Feld BasicHttpBindingSecurity.Security.Mode
.Erstellen Sie das DDX-Dokument.
Erstellen Sie ein Objekt System.Xml.XmlElement
, indem Sie den Konstruktor verwenden.
Erstellen Sie das Stammelement des DDX-Dokuments, indem Sie die XmlElement
-Objekt CreateElement
-Methode. Diese Methode erstellt eine Element
-Objekt, das das Stammelement darstellt. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die CreateElement
-Methode. Legen Sie einen Wert für das DDX-Element fest, indem Sie dessen SetAttribute
-Methode. Hängen Sie abschließend das Element an das DDX-Dokument an, indem Sie die XmlElement
-Objekt AppendChild
-Methode. Übergeben Sie das DDX-Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root);
Erstellen des DDX-Dokuments PDFsFromBookmarks
-Element durch Aufruf der XmlElement
-Objekt CreateElement
-Methode. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die CreateElement
-Methode. Legen Sie anschließend einen Wert für das Element fest, indem Sie dessen SetAttribute
-Methode. Anhängen der PDFsFromBookmarks
-Element durch Aufruf der DDX
-Element AppendChild
-Methode. Übergeben Sie die PDFsFromBookmarks
element -Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks);
Erstellen des DDX-Dokuments PDF
-Element durch Aufruf der XmlElement
-Objekt CreateElement
-Methode. Übergeben Sie einen Zeichenfolgenwert, der den Namen des Elements darstellt, an die CreateElement
-Methode. Legen Sie anschließend einen Wert für das untergeordnete Element fest, indem Sie dessen SetAttribute
-Methode. Anhängen der PDF
-Element zu PDFsFromBookmarks
-Element durch Aufruf der PDFsFromBookmarks
-Element AppendChild
-Methode. Übergeben Sie die PDF
element -Objekt als Argument. Die folgenden Codezeilen zeigen diese Anwendungslogik:
XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
Konvertieren Sie das DDX-Dokument.
Erstellen Sie ein Objekt System.IO.MemoryStream
, indem Sie den Konstruktor verwenden.
Füllen Sie die MemoryStream
-Objekt mit dem DDX-Dokument durch Verwendung der XmlElement
-Objekt, das das DDX-Dokument darstellt. Rufen Sie die XmlElement
-Objekt Save
-Methode und übergeben Sie die MemoryStream
-Objekt.
Erstellen Sie ein Byte-Array und fügen Sie es mit den Daten im MemoryStream
-Objekt. Der folgende Code zeigt diese Anwendungslogik:
int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen);
Erstellen Sie eine BLOB
-Objekt. Weisen Sie das Byte-Array dem BLOB
-Objekt MTOM
-Feld.
Referenzieren Sie ein zu zerlegendes PDF-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Die BLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. Diese BLOB
-Objekt wird an die invokeOneDocument
als Argument.System.IO.FileStream
-Objekt durch Aufrufen seines Konstruktors. Übergeben Sie einen string -Wert, der den Dateispeicherort des Eingabedokuments und den PDF-Dateimodus darstellt, in dem die geöffnet werden soll.System.IO.FileStream
-Objekt. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die System.IO.FileStream
-Objekt Length
-Eigenschaft.System.IO.FileStream
-Objekt Read
-Methode verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
Objekt durch Zuweisen seiner MTOM
-Eigenschaft den Inhalt des Byte-Arrays.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe seines Konstruktors speichert.AssemblerOptionSpec
-Objekt. Um beispielsweise den Assembler-Dienst anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Sie false
der AssemblerOptionSpec
-Objekt failOnError
Datenelement.Lösen Sie das PDF-Dokument aus.
Rufen Sie die AssemblerServiceClient
-Objekt invokeDDX
-Methode verwenden und die folgenden Werte übergeben:
BLOB
-Objekt, das das dynamisch erstellte DDX-Dokument darstelltmapItem
Array, das das PDF-Eingabedokument enthältAssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibtDie invokeDDX
-Methode gibt eine AssemblerResult
-Objekt, das die Ergebnisse des Auftrags sowie alle aufgetretenen Ausnahmen enthält.
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die neu erstellten PDF-Dokumente abzurufen:
AssemblerResult
-Objekt documents
-Feld, das ein Map
-Objekt, das die zerlegten PDF-Dokumente enthält.Map
-Objekt, um jedes Zieldokument abzurufen. Dann die value
zu BLOB
.BLOB
-Objekt MTOM
-Eigenschaft. Dadurch wird ein Array von Bytes zurückgegeben, die Sie in eine PDF-Datei schreiben können.Siehe auch
AEM Forms mithilfe von MTOM aufrufen
Aufrufen von AEM Forms mithilfe von SwaRef