Creazione dinamica di documenti DDX dynamically-creating-ddx-documents
Gli esempi e gli esempi contenuti in questo documento sono solo per AEM Forms in ambiente JEE.
È 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 nel documento DDX i valori ottenuti durante l'esecuzione. Per creare in modo dinamico un documento DDX, utilizzare le classi che appartengono al linguaggio di programmazione in uso. Se ad esempio si sviluppa l'applicazione client utilizzando Java, utilizzare le classi che appartengono al pacchetto org.w3c.dom.*. Analogamente, se si utilizza Microsoft .NET, utilizzare le classi che appartengono allo spazio dei nomi System.Xml.
Prima di passare il documento DDX al servizio Assembler, convertire l'XML da un'istanza org.w3c.dom.Document a un'istanza com.adobe.idp.Document. Se si utilizzano i servizi Web, convertire l'XML dal tipo di dati utilizzato per creare l'XML (ad esempio, XmlDocument) in un'istanza BLOB.
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 disassembla un documento PDF. È consigliabile avere familiarità con lo smontaggio dei documenti PDF.
Riepilogo dei passaggi summary-of-steps
Per disassemblare un documento PDF utilizzando un documento DDX creato in modo dinamico, effettuare le seguenti operazioni:
- Includi file di progetto.
- Creare un client PDF Assembler.
- Creare il documento DDX.
- Converte il documento DDX.
- Impostare le opzioni di runtime.
- Disassemblare il documento PDF.
- Salvare i documenti PDF disassemblati.
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, accertati 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 è implementato su JBoss)
- jbossall-client.jar (obbligatorio se AEM Forms è distribuito su JBoss)
Creare un client Assembler PDF
Prima di eseguire un'operazione Assembler a livello di programmazione, creare un client del servizio Assembler.
Crea il documento DDX
Creare un documento DDX utilizzando il linguaggio di programmazione in uso. Per creare un documento DDX che disassembla un documento PDF, verificare che contenga l'elemento PDFsFromBookmarks. Se si utilizza l'API Java, convertire il tipo di dati utilizzato per creare il documento DDX in un'istanza com.adobe.idp.Document. Se si utilizzano servizi Web, convertire il tipo di dati in un'istanza BLOB.
Convertire il documento DDX
Un documento DDX creato utilizzando le classi org.w3c.dom deve essere convertito in un oggetto com.adobe.idp.Document. Per eseguire questa attività quando si utilizza l’API Java, utilizza le classi di trasformazione Java XML. Se si utilizzano i servizi Web, convertire il documento DDX in un oggetto BLOB.
Riferimento a un documento PDF da disassemblare
Per disassemblare un documento PDF, fare riferimento a un file PDF che rappresenta il documento PDF da disassemblare. Quando viene passato al servizio Assembler, viene restituito un documento PDF separato per ogni segnalibro di livello 1 del documento.
Impostare le opzioni di runtime
È possibile impostare le opzioni di runtime che controllano il comportamento del servizio Assembler durante l'esecuzione di un processo. È ad esempio possibile impostare un'opzione che indichi al servizio Assembler di continuare l'elaborazione di un processo in caso di errore. Per impostare le opzioni di runtime, utilizzare un oggetto AssemblerOptionSpec.
Disassemblare il documento PDF
Disassemblare il documento PDF richiamando l'operazione invokeDDX. Passa il documento DDX creato in modo dinamico. Il servizio Assembler restituisce documenti PDF disassemblati all'interno di un oggetto insieme.
Salvare i documenti PDF disassemblati
Tutti i documenti PDF disassemblati vengono restituiti all'interno di un insieme. Scorrere l'oggetto insieme 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 della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Disassemblaggio di documenti PDF a livello di programmazione
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 disassemblare un documento PDF utilizzando l'API del servizio Assembler (Java):
-
Includi file di progetto.
Includi i file JAR client, come adobe-assembler-client.jar, nel percorso di classe del progetto Java.
-
Creare un client PDF Assembler.
- Creare un oggetto
ServiceClientFactorycontenente le proprietà di connessione. - Creare un oggetto
AssemblerServiceClientutilizzando il relativo costruttore e passando l'oggettoServiceClientFactory.
- Creare un oggetto
-
Creare il documento DDX.
-
Creare un oggetto Java
DocumentBuilderFactorychiamando il metodonewInstancedella classeDocumentBuilderFactory. -
Creare un oggetto Java
DocumentBuilderchiamando il metodonewDocumentBuilderdell'oggettoDocumentBuilderFactory. -
Chiamare il metodo
newDocumentdell'oggettoDocumentBuilderper creare un'istanza di un oggettoorg.w3c.dom.Document. -
Creare l'elemento radice del documento DDX richiamando il metodo
createElementdell'oggettoorg.w3c.dom.Document. Questo metodo crea un oggettoElementche rappresenta l'elemento radice. Passa un valore stringa che rappresenta il nome dell'elemento al metodocreateElement. Eseguire il cast del valore restituito inElement. Impostare quindi un valore per l'elemento figlio chiamando il relativo metodosetAttribute. Infine, accodare l'elemento all'elemento header chiamando il metodoappendChilddell'elemento header e passare l'oggetto elemento figlio come argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root); -
Creare l'elemento
PDFsFromBookmarkschiamando il metodocreateElementdell'oggettoDocument. Passa un valore stringa che rappresenta il nome dell'elemento al metodocreateElement. Eseguire il cast del valore restituito inElement. Impostare un valore per l'elementoPDFsFromBookmarkschiamando il relativo metodosetAttribute. Aggiungere l'elementoPDFsFromBookmarksall'elementoDDXchiamando il metodoappendChilddell'elemento DDX. Passa l'oggetto elementoPDFsFromBookmarkscome argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks); -
Creare un elemento
PDFchiamando il metodocreateElementdell'oggettoDocument. Passa un valore stringa che rappresenta il nome dell’elemento. Eseguire il cast del valore restituito inElement. Impostare un valore per l'elementoPDFchiamando il relativo metodosetAttribute. Aggiungere l'elementoPDFall'elementoPDFsFromBookmarkschiamando il metodoappendChilddell'elementoPDFsFromBookmarks. Passa l'oggetto elementoPDFcome argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Converte il documento DDX.
- Creare un oggetto
javax.xml.transform.Transformerrichiamando il metodonewInstancestatico dell'oggettojavax.xml.transform.Transformer. - Creare un oggetto
Transformerrichiamando il metodonewTransformerdell'oggettoTransformerFactory. - Creare un oggetto
ByteArrayOutputStreamutilizzando il relativo costruttore. - Creare un oggetto
javax.xml.transform.dom.DOMSourceutilizzando il relativo costruttore. Passa l'oggettoorg.w3c.dom.Documentche rappresenta il documento DDX. - Creare un oggetto
javax.xml.transform.dom.DOMSourceutilizzando il relativo costruttore e passando l'oggettoByteArrayOutputStream. - Compilare l'oggetto Java
ByteArrayOutputStreamrichiamando il metodotransformdell'oggettojavax.xml.transform.Transformer. Passa gli oggettijavax.xml.transform.dom.DOMSourceejavax.xml.transform.stream.StreamResult. - Creare una matrice di byte e allocare le dimensioni dell'oggetto
ByteArrayOutputStreamalla matrice di byte. - Compilare la matrice di byte richiamando il metodo
toByteArraydell'oggettoByteArrayOutputStream. - Creare un oggetto
com.adobe.idp.Documentutilizzando il relativo costruttore e passando la matrice di byte.
- Creare un oggetto
-
Fare riferimento a un documento PDF da disassemblare.
-
Creare un oggetto
java.util.Maputilizzato per memorizzare i documenti di input PDF utilizzando un costruttoreHashMap. -
Creare un oggetto
java.io.FileInputStreamutilizzando il relativo costruttore e passando la posizione del documento PDF da disassemblare. -
Creare un oggetto
com.adobe.idp.Document. Passa l'oggettojava.io.FileInputStreamche contiene il documento PDF da disassemblare. -
Aggiungere una voce all'oggetto
java.util.Maprichiamando il relativo metodopute passando i seguenti argomenti:- 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. - Oggetto
com.adobe.idp.Documentcontenente il documento PDF da disassemblare.
- 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 runtime.
- Creare un oggetto
AssemblerOptionSpecche memorizza le opzioni di runtime utilizzando il relativo costruttore. - Impostare le opzioni di runtime per soddisfare i requisiti aziendali richiamando un metodo che appartiene all'oggetto
AssemblerOptionSpec. Ad esempio, per indicare al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiamare il metodosetFailOnErrordell'oggettoAssemblerOptionSpece passarefalse.
- Creare un oggetto
-
Disassemblare il documento PDF.
Richiama il metodo
invokeDDXdell'oggettoAssemblerServiceCliente passa i seguenti valori:- Oggetto
com.adobe.idp.Documentche rappresenta il documento DDX creato in modo dinamico - Oggetto
java.util.Mapcontenente il documento PDF da disassemblare - Oggetto
com.adobe.livecycle.assembler.client.AssemblerOptionSpecche specifica le opzioni di runtime, inclusi il tipo di carattere predefinito e il livello del log del processo
Il metodo
invokeDDXrestituisce un oggettocom.adobe.livecycle.assembler.client.AssemblerResultcontenente i documenti PDF disassemblati ed eventuali eccezioni. - Oggetto
-
Salvare i documenti PDF disassemblati.
Per ottenere i documenti PDF disassemblati, effettuare le seguenti operazioni:
- Richiama il metodo
getDocumentsdell'oggettoAssemblerResult. Questo metodo restituisce un oggettojava.util.Map. - Scorrere l'oggetto
java.util.Mapfino a trovare l'oggettocom.adobe.idp.Documentrisultante. - Richiama il metodo
copyToFiledell'oggettocom.adobe.idp.Documentper estrarre il documento PDF.
- Richiama il metodo
Consulta anche
Quick Start (modalità SOAP): creazione dinamica di un documento DDX utilizzando l’API Java
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 disassemblare un documento PDF utilizzando l'API del servizio Assembler (servizio Web):
-
Includi file di progetto.
Creare un progetto Microsoft .NET che utilizza MTOM. Assicurarsi di utilizzare la seguente definizione WSDL durante l'impostazione di un riferimento al servizio:
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.
-
Creare un oggetto
AssemblerServiceClientutilizzando il relativo costruttore predefinito. -
Creare un oggetto
AssemblerServiceClient.Endpoint.Addressutilizzando il costruttoreSystem.ServiceModel.EndpointAddress. 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 l'attributolc_version. Questo attributo viene utilizzato quando si crea un riferimento a un servizio. -
Creare un oggetto
System.ServiceModel.BasicHttpBindingottenendo il valore del campoAssemblerServiceClient.Endpoint.Binding. Eseguire il cast del valore restituito inBasicHttpBinding. -
Impostare il campo
MessageEncodingdell'oggettoSystem.ServiceModel.BasicHttpBindingsuWSMessageEncoding.Mtom. Questo valore assicura che venga utilizzato MTOM. -
Abilita l’autenticazione HTTP di base eseguendo le seguenti attività:
- Assegnare il nome utente dei moduli AEM al campo
AssemblerServiceClient.ClientCredentials.UserName.UserName. - Assegnare il valore della password corrispondente al campo
AssemblerServiceClient.ClientCredentials.UserName.Password. - Assegnare il valore costante
HttpClientCredentialType.Basical campoBasicHttpBindingSecurity.Transport.ClientCredentialType. - Assegnare il valore costante
BasicHttpSecurityMode.TransportCredentialOnlyal campoBasicHttpBindingSecurity.Security.Mode.
- Assegnare il nome utente dei moduli AEM al campo
-
-
Creare il documento DDX.
-
Creare un oggetto
System.Xml.XmlElementutilizzando il relativo costruttore. -
Creare l'elemento radice del documento DDX richiamando il metodo
CreateElementdell'oggettoXmlElement. Questo metodo crea un oggettoElementche rappresenta l'elemento radice. Passa un valore stringa che rappresenta il nome dell'elemento al metodoCreateElement. Impostare un valore per l'elemento DDX chiamando il relativo metodoSetAttribute. Aggiungere infine l'elemento al documento DDX chiamando il metodoAppendChilddell'oggettoXmlElement. Passa l'oggetto DDX come argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root); -
Creare l'elemento
PDFsFromBookmarksdel documento DDX chiamando il metodoCreateElementdell'oggettoXmlElement. Passa un valore stringa che rappresenta il nome dell'elemento al metodoCreateElement. Quindi, impostare un valore per l'elemento chiamando il relativo metodoSetAttribute. Aggiungere l'elementoPDFsFromBookmarksall'elemento radice chiamando il metodoAppendChilddell'elementoDDX. Passa l'oggetto elementoPDFsFromBookmarkscome argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks); -
Creare l'elemento
PDFdel documento DDX chiamando il metodoCreateElementdell'oggettoXmlElement. Passa un valore stringa che rappresenta il nome dell'elemento al metodoCreateElement. Impostare quindi un valore per l'elemento figlio chiamando il relativo metodoSetAttribute. Aggiungere l'elementoPDFall'elementoPDFsFromBookmarkschiamando il metodoAppendChilddell'elementoPDFsFromBookmarks. Passa l'oggetto elementoPDFcome argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Converte il documento DDX.
-
Creare un oggetto
System.IO.MemoryStreamutilizzando il relativo costruttore. -
Compilare l'oggetto
MemoryStreamcon il documento DDX utilizzando l'oggettoXmlElementche rappresenta il documento DDX. Richiama il metodoSavedell'oggettoXmlElemente passa l'oggettoMemoryStream. -
Creare una matrice di byte e popolarla con i dati nell'oggetto
MemoryStream. Il codice seguente mostra questa logica dell’applicazione:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen); -
Creare un oggetto
BLOB. Assegnare la matrice di byte al campoMTOMdell'oggettoBLOB.
-
-
Fare riferimento a un documento PDF da disassemblare.
- Creare un oggetto
BLOButilizzando il relativo costruttore. L'oggettoBLOBviene utilizzato per memorizzare il documento PDF di input. Questo oggettoBLOBè passato ainvokeOneDocumentcome argomento. - Creare un oggetto
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 una matrice di byte che memorizza il contenuto dell'oggetto
System.IO.FileStream. È possibile determinare le dimensioni della matrice di byte ottenendo la proprietàLengthdell'oggettoSystem.IO.FileStream. - Compilare la matrice di byte con i dati di flusso richiamando il metodo
Readdell'oggettoSystem.IO.FileStreame passando la matrice di byte, la posizione iniziale e la lunghezza del flusso da leggere. - Compilare l'oggetto
BLOBassegnando alla relativa proprietàMTOMil contenuto della matrice di byte.
- Creare un oggetto
-
Impostare le opzioni di runtime.
- Creare un oggetto
AssemblerOptionSpecche memorizza le opzioni di runtime utilizzando il relativo costruttore. - Impostare le opzioni di runtime per soddisfare i requisiti aziendali assegnando un valore a un membro dati che appartiene all'oggetto
AssemblerOptionSpec. Ad esempio, per indicare al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, assegnarefalseal membro datifailOnErrordell'oggettoAssemblerOptionSpec.
- Creare un oggetto
-
Disassemblare il documento PDF.
Richiama il metodo
invokeDDXdell'oggettoAssemblerServiceCliente passa i seguenti valori:- Oggetto
BLOBche rappresenta il documento DDX creato in modo dinamico - Array
mapItemcontenente il documento PDF di input - Oggetto
AssemblerOptionSpecche specifica le opzioni di runtime
Il metodo
invokeDDXrestituisce un oggettoAssemblerResultcontenente i risultati del processo ed eventuali eccezioni. - Oggetto
-
Salvare i documenti PDF disassemblati.
Per ottenere i documenti di PDF appena creati, effettuare le seguenti operazioni:
- Accedere al campo
documentsdell'oggettoAssemblerResult, che è un oggettoMapcontenente i documenti PDF disassemblati. - Scorrere l'oggetto
Mapper ottenere ogni documento risultante. Quindi, eseguire il cast divaluedel membro dell'array in unBLOB. - Estrarre i dati binari che rappresentano il documento PDF accedendo alla proprietà
MTOMdell'oggettoBLOB. Restituisce una matrice di byte che è possibile scrivere in un file PDF.
- Accedere al campo
Consulta anche
Richiamare AEM Forms tramite MTOM
Richiamare AEM Forms con SwaRef