Creazione dinamica di documenti DDX dynamically-creating-ddx-documents
È possibile creare in modo dinamico un documento DDX che può essere utilizzato per eseguire un'operazione Assembler. La creazione dinamica di un documento DDX consente di utilizzare i valori nel documento DDX ottenuti durante l'esecuzione. Per creare in modo dinamico un documento DDX, utilizzare le classi che appartengono al linguaggio di programmazione utilizzato. Ad esempio, se stai sviluppando l'applicazione client utilizzando Java, utilizza le classi che appartengono al org.w3c.dom.*pacchetto. Allo stesso modo, se utilizzi Microsoft .NET, utilizza le classi che appartengono a System.Xml spazio dei nomi.
Prima di passare il documento DDX al servizio Assembler, convertire il codice XML da un org.w3c.dom.Document istanza a un com.adobe.idp.Document istanza. Se si utilizzano servizi Web, convertire l'XML dal tipo di dati utilizzato per creare l'XML (ad esempio, XmlDocument) a BLOB istanza.
Per questa discussione, si supponga che il seguente documento DDX venga creato in modo dinamico.
<?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>
Questo documento DDX smonta un documento PDF. Si consiglia di avere familiarità con la disassemblaggio dei documenti PDF.
Riepilogo dei passaggi summary-of-steps
Per smontare un documento PDF utilizzando un documento DDX creato in modo dinamico, eseguire le operazioni seguenti:
- Includi file di progetto.
- Creare un client PDF Assembler.
- Crea il documento DDX.
- Convertire il documento DDX.
- Impostare le opzioni di esecuzione.
- Smontare il documento PDF.
- Salvare i documenti PDF smontati.
Includi file di progetto
Includi i file necessari nel progetto di sviluppo. Se stai creando un'applicazione client utilizzando Java, includi i file JAR necessari. Se utilizzi i servizi web, assicurati di includere i file proxy.
I seguenti file JAR devono essere aggiunti al percorso della classe del progetto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utilities.jar (richiesto se AEM Forms è distribuito su JBoss)
- jbossall-client.jar (richiesto se AEM Forms è distribuito su JBoss)
Creare un client PDF Assembler
Prima di eseguire un'operazione Assembler a livello di programmazione, creare un client di servizio Assembler.
Creare il documento DDX
Creare un documento DDX utilizzando il linguaggio di programmazione utilizzato. Per creare un documento DDX che smonti un documento PDF, assicurati che contenga PDFsFromBookmarks elemento. Convertire il tipo di dati utilizzato per creare il documento DDX in un com.adobe.idp.Document Se utilizzi l’API Java. Se utilizzi servizi web, converti il tipo di dati in un BLOB istanza.
Conversione del documento DDX
Documento DDX creato utilizzando org.w3c.dom le classi devono essere convertite in un com.adobe.idp.Document oggetto. Per eseguire questa attività quando si utilizza l'API Java, utilizzare le classi di trasformazione Java XML. Se utilizzi servizi web, converti il documento DDX in un BLOB oggetto.
Fare riferimento a un documento PDF per la scomposizione
Per smontare un documento PDF, fare riferimento a un file PDF che rappresenta il documento PDF da smontare. Quando viene passato al servizio Assembler, viene restituito un documento PDF separato per ogni segnalibro di livello 1 nel documento.
Impostare le opzioni di esecuzione
È possibile impostare le opzioni di esecuzione che controllano il comportamento del servizio Assembler mentre esegue un processo. Ad esempio, è possibile impostare un'opzione che indica al servizio Assembler di continuare l'elaborazione di un processo in caso di errore. Per impostare le opzioni di esecuzione, utilizza un AssemblerOptionSpec oggetto.
Smontare il documento PDF
Smontare il documento PDF richiamando il invokeDDX funzionamento. Passa il documento DDX creato in modo dinamico. Il servizio Assembler restituisce documenti PDF smontati all'interno di un oggetto raccolta.
Salvare i documenti PDF smontati
Tutti i documenti PDF smontati vengono restituiti all'interno di un oggetto raccolta. Iterare l’oggetto raccolta e salvare ogni documento PDF come file PDF.
Consulta anche
Creare in modo dinamico un documento DDX utilizzando l’API Java
Creare in modo dinamico un documento DDX utilizzando l’API del servizio Web
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Smontaggio programmatico dei documenti PDF
Creare in modo dinamico un documento DDX utilizzando l’API Java dynamically-create-a-ddx-document-using-the-java-api
Creare in modo dinamico un documento DDX e smontare un documento PDF utilizzando l'API del servizio Assembler (Java):
-
Includi file di progetto.
Includi file JAR client, come adobe-assembler-client.jar, nel percorso di classe del progetto Java.
-
Creare un client PDF Assembler.
- Crea un
ServiceClientFactoryoggetto contenente le proprietà di connessione. - Crea un
AssemblerServiceClientutilizzando il relativo costruttore e passandoServiceClientFactoryoggetto.
- Crea un
-
Crea il documento DDX.
-
Creare un Java
DocumentBuilderFactorychiamandoDocumentBuilderFactoryclasse"newInstancemetodo . -
Creare un Java
DocumentBuilderchiamandoDocumentBuilderFactorydell’oggettonewDocumentBuildermetodo . -
Chiama il
DocumentBuilderdell’oggettonewDocumentper creare un'istanza di unorg.w3c.dom.Documentoggetto. -
Crea l'elemento principale del documento DDX richiamando il
org.w3c.dom.Documentdell’oggettocreateElementmetodo . Questo metodo crea unElementoggetto che rappresenta l'elemento principale. Passa un valore stringa che rappresenta il nome dell'elemento alcreateElementmetodo . Imposta il valore restituito suElement. Quindi, imposta un valore per l’elemento figlio chiamando il relativosetAttributemetodo . Infine, aggiungi l’elemento all’elemento header chiamando l’elemento headerappendChilde passare l'oggetto elemento figlio come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root); -
Crea il
PDFsFromBookmarkschiamandoDocumentdell’oggettocreateElementmetodo . Passa un valore stringa che rappresenta il nome dell'elemento alcreateElementmetodo . Imposta il valore restituito suElement. Imposta un valore perPDFsFromBookmarkselemento chiamando il relativosetAttributemetodo . AggiungiPDFsFromBookmarksdell'elementoDDXchiamando l’elemento DDXappendChildmetodo . Passa laPDFsFromBookmarksoggetto elemento come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks); -
Crea un
PDFchiamandoDocumentdell’oggettocreateElementmetodo . Passa un valore stringa che rappresenta il nome dell'elemento. Imposta il valore restituito suElement. Imposta un valore perPDFelemento chiamando il relativosetAttributemetodo . AggiungiPDFdell'elementoPDFsFromBookmarkschiamandoPDFsFromBookmarksdell’elementoappendChildmetodo . Passa laPDFoggetto elemento come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Convertire il documento DDX.
- Crea un
javax.xml.transform.Transformerrichiamando l'oggettojavax.xml.transform.Transformerstatico dell’oggettonewInstancemetodo . - Crea un
Transformerrichiamando l'oggettoTransformerFactorydell’oggettonewTransformermetodo . - Crea un
ByteArrayOutputStreamutilizzando il relativo costruttore. - Crea un
javax.xml.transform.dom.DOMSourceutilizzando il relativo costruttore. Passa laorg.w3c.dom.Documentoggetto che rappresenta il documento DDX. - Crea un
javax.xml.transform.dom.DOMSourceutilizzando il relativo costruttore e passandoByteArrayOutputStreamoggetto. - Popolare Java
ByteArrayOutputStreamrichiamando l'oggettojavax.xml.transform.Transformerdell’oggettotransformmetodo . Passa lajavax.xml.transform.dom.DOMSourceejavax.xml.transform.stream.StreamResultoggetti. - Creare un array di byte e allocare le dimensioni del
ByteArrayOutputStreamall'array di byte. - Compilare l’array di byte richiamando il
ByteArrayOutputStreamdell’oggettotoByteArraymetodo . - Crea un
com.adobe.idp.Documentutilizzando il relativo costruttore e passando l'array di byte.
- Crea un
-
Fare riferimento a un documento PDF per smontare.
-
Crea un
java.util.Mapoggetto utilizzato per memorizzare i documenti PDF di input utilizzando unHashMapcostruttore. -
Crea un
java.io.FileInputStreamutilizzando il relativo costruttore e passando la posizione del documento PDF da smontare. -
Crea un
com.adobe.idp.Documentoggetto. Passa lajava.io.FileInputStreamoggetto contenente il documento PDF da smontare. -
Aggiungi una voce al
java.util.Maprichiamandone l'oggettopute passare gli argomenti seguenti:- Valore stringa che rappresenta il nome della chiave. Questo valore deve corrispondere al valore dell'elemento di origine PDF specificato nel documento DDX. Nel documento DDX creato in modo dinamico, il valore è
AssemblerResultPDF.pdf.) - A
com.adobe.idp.Documentoggetto contenente il documento PDF da smontare.
- Valore stringa che rappresenta il nome della chiave. Questo valore deve corrispondere al valore dell'elemento di origine PDF specificato nel documento DDX. Nel documento DDX creato in modo dinamico, il valore è
-
-
Impostare le opzioni di esecuzione.
- Crea un
AssemblerOptionSpecoggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore. - Impostare le opzioni di esecuzione per soddisfare i requisiti aziendali richiamando un metodo che appartiene al
AssemblerOptionSpecoggetto. Ad esempio, per dare istruzioni al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiama ilAssemblerOptionSpecdell’oggettosetFailOnErrormetodo e passaggiofalse.
- Crea un
-
Smontare il documento PDF.
Richiama il
AssemblerServiceClientdell’oggettoinvokeDDXe passare i seguenti valori:- A
com.adobe.idp.Documentoggetto che rappresenta il documento DDX creato dinamicamente - A
java.util.Mapoggetto contenente il documento PDF da smontare - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpecoggetto che specifica le opzioni di esecuzione, incluso il carattere predefinito e il livello del registro di lavoro
La
invokeDDXrestituisce uncom.adobe.livecycle.assembler.client.AssemblerResultoggetto che contiene i documenti PDF smontati ed eventuali eccezioni. - A
-
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF smontati, eseguire le operazioni seguenti:
- Richiama il
AssemblerResultdell’oggettogetDocumentsmetodo . Questo metodo restituisce unjava.util.Mapoggetto. - Itera attraverso il
java.util.Mapfinché non trovi il risultatocom.adobe.idp.Documentoggetto. - Richiama il
com.adobe.idp.Documentdell’oggettocopyToFileper estrarre il documento PDF.
- Richiama il
Consulta anche
Avvio rapido (modalità SOAP): Creazione dinamica di un documento DDX utilizzando l’API Java
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Creare in modo dinamico un documento DDX utilizzando l’API del servizio Web dynamically-create-a-ddx-document-using-the-web-service-api
Creare in modo dinamico un documento DDX e smontare un documento PDF utilizzando l'API del servizio Assembler (servizio Web):
-
Includi file di progetto.
Creare un progetto Microsoft .NET che utilizza MTOM. Quando imposti un riferimento a un servizio, assicurati di utilizzare la seguente definizione WSDL:
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.note note NOTE Sostituisci localhostcon l’indirizzo IP del server che ospita AEM Forms. -
Creare un client PDF Assembler.
-
Crea un
AssemblerServiceClientutilizzando il relativo costruttore predefinito. -
Crea un
AssemblerServiceClient.Endpoint.AddressutilizzandoSystem.ServiceModel.EndpointAddresscostruttore. Passa un valore stringa che specifica il WSDL al servizio AEM Forms (ad esempio,http://localhost:8080/soap/services/AssemblerService?blob=mtom). Non è necessario utilizzare illc_versionattributo. Questo attributo viene utilizzato quando si crea un riferimento a un servizio. -
Crea un
System.ServiceModel.BasicHttpBindingottenendo il valore delAssemblerServiceClient.Endpoint.Bindingcampo . Imposta il valore restituito suBasicHttpBinding. -
Imposta la
System.ServiceModel.BasicHttpBindingdell’oggettoMessageEncodingcampo aWSMessageEncoding.Mtom. Questo valore assicura che venga utilizzato MTOM. -
Abilita l’autenticazione HTTP di base eseguendo le seguenti attività:
- Assegnare il nome utente del modulo di AEM al campo
AssemblerServiceClient.ClientCredentials.UserName.UserName. - Assegna il valore della password corrispondente al campo
AssemblerServiceClient.ClientCredentials.UserName.Password. - Assegna il valore costante
HttpClientCredentialType.Basical campoBasicHttpBindingSecurity.Transport.ClientCredentialType. - Assegna il valore costante
BasicHttpSecurityMode.TransportCredentialOnlyal campoBasicHttpBindingSecurity.Security.Mode.
- Assegnare il nome utente del modulo di AEM al campo
-
-
Crea il documento DDX.
-
Crea un
System.Xml.XmlElementutilizzando il relativo costruttore. -
Crea l'elemento principale del documento DDX richiamando il
XmlElementdell’oggettoCreateElementmetodo . Questo metodo crea unElementoggetto che rappresenta l'elemento principale. Passa un valore stringa che rappresenta il nome dell'elemento alCreateElementmetodo . Imposta un valore per l'elemento DDX chiamandone l'elementoSetAttributemetodo . Infine, aggiungi l’elemento al documento DDX chiamando ilXmlElementdell’oggettoAppendChildmetodo . Passa l'oggetto DDX come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root); -
Creare il documento DDX
PDFsFromBookmarkschiamandoXmlElementdell’oggettoCreateElementmetodo . Passa un valore stringa che rappresenta il nome dell'elemento alCreateElementmetodo . Quindi, imposta un valore per l’elemento chiamando il relativoSetAttributemetodo . AggiungiPDFsFromBookmarksall'elemento principale chiamando ilDDXdell’elementoAppendChildmetodo . Passa laPDFsFromBookmarksoggetto elemento come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks); -
Creare il documento DDX
PDFchiamandoXmlElementdell’oggettoCreateElementmetodo . Passa un valore stringa che rappresenta il nome dell'elemento alCreateElementmetodo . Quindi, imposta un valore per l’elemento figlio chiamando il relativoSetAttributemetodo . AggiungiPDFdell'elementoPDFsFromBookmarkschiamandoPDFsFromBookmarksdell’elementoAppendChildmetodo . Passa laPDFoggetto elemento come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Convertire il documento DDX.
-
Crea un
System.IO.MemoryStreamutilizzando il relativo costruttore. -
Popolare
MemoryStreamoggetto con il documento DDX utilizzandoXmlElementoggetto che rappresenta il documento DDX. Richiama ilXmlElementdell’oggettoSavee passare ilMemoryStreamoggetto. -
Crea un array di byte e popolalo con i dati che si trovano nel
MemoryStreamoggetto. Il codice seguente mostra questa logica di applicazione:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen); -
Crea un
BLOBoggetto. Assegna l'array di byte alBLOBdell’oggettoMTOMcampo .
-
-
Fare riferimento a un documento PDF per smontare.
- Crea un
BLOButilizzando il relativo costruttore. LaBLOBviene utilizzato per memorizzare il documento di input PDF. QuestoBLOBviene passato all'oggettoinvokeOneDocumentcome argomento. - Crea un
System.IO.FileStreamrichiamando il relativo costruttore. Passa un valore stringa che rappresenta la posizione del file del documento PDF di input e la modalità di apertura del file. - Creare un array di byte che memorizza il contenuto del
System.IO.FileStreamoggetto. È possibile determinare le dimensioni dell'array di byte ottenendo ilSystem.IO.FileStreamdell’oggettoLengthproprietà. - Compilare l'array di byte con i dati del flusso richiamando il
System.IO.FileStreamdell’oggettoReade passare l'array di byte, la posizione iniziale e la lunghezza del flusso da leggere. - Popolare
BLOBoggetto assegnando il relativoMTOMproprietà il contenuto dell'array di byte.
- Crea un
-
Impostare le opzioni di esecuzione.
- Crea un
AssemblerOptionSpecoggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore. - Impostare le opzioni di esecuzione per soddisfare i requisiti aziendali assegnando un valore a un membro dati che appartiene al
AssemblerOptionSpecoggetto. Ad esempio, per dare istruzioni al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, assegnarefalsealAssemblerOptionSpecdell’oggettofailOnErrormembro dati.
- Crea un
-
Smontare il documento PDF.
Richiama il
AssemblerServiceClientdell’oggettoinvokeDDXe passare i seguenti valori:- A
BLOBoggetto che rappresenta il documento DDX creato dinamicamente - La
mapItemarray contenente il documento PDF di input - Un
AssemblerOptionSpecoggetto che specifica le opzioni di esecuzione
La
invokeDDXrestituisce unAssemblerResultoggetto contenente i risultati del processo ed eventuali eccezioni. - A
-
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF appena creati, eseguire le operazioni seguenti:
- Accedere al
AssemblerResultdell’oggettodocumentsun campoMapoggetto contenente i documenti PDF smontati. - Itera attraverso il
Mapper ottenere ogni documento risultante. Quindi, eseguire il cast del membro dell'arrayvalueaBLOB. - Estrarre i dati binari che rappresentano il documento PDF accedendo ai relativi
BLOBdell’oggettoMTOMproprietà. Restituisce una matrice di byte che è possibile scrivere in un file PDF.
- Accedere al
Consulta anche
Richiamo di AEM Forms tramite MTOM
Richiamo di AEM Forms tramite SwaRef