Creazione dinamica di documenti DDX dynamically-creating-ddx-documents
Gli esempi e gli esempi contenuti in questo documento sono solo per l’ambiente AEM Forms su 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. Ad esempio, se sviluppi l’applicazione client utilizzando Java, utilizza le classi che appartengono al org.w3c.dom.*
pacchetto. Analogamente, se si utilizza Microsoft .NET, utilizzare le classi che appartengono al System.Xml
spazio dei nomi.
Prima di poter passare il documento DDX al servizio Assembler, convertire il codice XML da un org.w3c.dom.Document
istanza a un com.adobe.idp.Document
dell'istanza. Se si utilizzano i servizi Web, convertire il codice XML dal tipo di dati utilizzato per creare il codice XML (ad esempio, XmlDocument
) a un BLOB
dell'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 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 PDF Assembler
Prima di eseguire un'operazione Assembler a livello di programmazione, creare un client del servizio Assembler.
Creare il documento DDX
Creare un documento DDX utilizzando il linguaggio di programmazione in uso. Per creare un documento DDX che disassembli un documento PDF, assicurarsi che contenga PDFsFromBookmarks
elemento. Converte il tipo di dati utilizzato per creare il documento DDX in un com.adobe.idp.Document
se utilizzi l’API Java. Se si utilizzano i servizi Web, convertire il tipo di dati in BLOB
dell'istanza.
Convertire il documento DDX
Documento DDX creato utilizzando org.w3c.dom
le classi devono essere convertite in com.adobe.idp.Document
oggetto. 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 BLOB
oggetto.
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 run-time, utilizzare un AssemblerOptionSpec
oggetto.
Disassemblare il documento PDF
Disassemblare il documento PDF richiamando invokeDDX
operazione. 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
ServiceClientFactory
oggetto che contiene proprietà di connessione. - Creare un
AssemblerServiceClient
mediante il costruttore e passando ilServiceClientFactory
oggetto.
- Creare un
-
Creare il documento DDX.
-
Creare un Java
DocumentBuilderFactory
oggetto chiamando ilDocumentBuilderFactory
class'newInstance
metodo. -
Creare un Java
DocumentBuilder
oggetto chiamando ilDocumentBuilderFactory
dell'oggettonewDocumentBuilder
metodo. -
Chiama il
DocumentBuilder
dell'oggettonewDocument
metodo per creare un'istanza diorg.w3c.dom.Document
oggetto. -
Creare l'elemento radice del documento DDX richiamando
org.w3c.dom.Document
dell'oggettocreateElement
metodo. Questo metodo crea unElement
oggetto che rappresenta l'elemento principale. Passa un valore stringa che rappresenta il nome dell’elemento alcreateElement
metodo. Invia il valore restituito aElement
. Quindi, imposta un valore per l’elemento figlio chiamando il relativosetAttribute
metodo. Infine, aggiungi l’elemento all’elemento header chiamando l’appendChild
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
PDFsFromBookmarks
chiamando l'Document
dell'oggettocreateElement
metodo. Passa un valore stringa che rappresenta il nome dell’elemento alcreateElement
metodo. Invia il valore restituito aElement
. Imposta un valore perPDFsFromBookmarks
elemento chiamando il relativosetAttribute
metodo. AggiungiPDFsFromBookmarks
elemento alDDX
chiamando l'elemento DDXappendChild
metodo. Passa ilPDFsFromBookmarks
come 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
PDF
chiamando l'Document
dell'oggettocreateElement
metodo. Passa un valore stringa che rappresenta il nome dell’elemento. Invia il valore restituito aElement
. Imposta un valore perPDF
elemento chiamando il relativosetAttribute
metodo. AggiungiPDF
elemento alPDFsFromBookmarks
chiamando l'PDFsFromBookmarks
dell'elementoappendChild
metodo. Passa ilPDF
come 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
javax.xml.transform.Transformer
oggetto richiamando iljavax.xml.transform.Transformer
statico dell'oggettonewInstance
metodo. - Creare un
Transformer
oggetto richiamando ilTransformerFactory
dell'oggettonewTransformer
metodo. - Creare un
ByteArrayOutputStream
mediante il costruttore. - Creare un
javax.xml.transform.dom.DOMSource
mediante il costruttore. Passa ilorg.w3c.dom.Document
oggetto che rappresenta il documento DDX. - Creare un
javax.xml.transform.dom.DOMSource
mediante il costruttore e passando ilByteArrayOutputStream
oggetto. - Popolare Java
ByteArrayOutputStream
oggetto richiamando iljavax.xml.transform.Transformer
dell'oggettotransform
metodo. Passa iljavax.xml.transform.dom.DOMSource
ejavax.xml.transform.stream.StreamResult
oggetti. - Creare una matrice di byte e allocare le dimensioni della
ByteArrayOutputStream
alla matrice di byte. - Popolare la matrice di byte richiamando
ByteArrayOutputStream
dell'oggettotoByteArray
metodo. - Creare un
com.adobe.idp.Document
mediante il costruttore e passando la matrice di byte.
- Creare un
-
Fare riferimento a un documento PDF da disassemblare.
-
Creare un
java.util.Map
oggetto utilizzato per memorizzare i documenti di input PDF utilizzando unHashMap
costruttore. -
Creare un
java.io.FileInputStream
mediante il costruttore e passando la posizione del documento PDF da disassemblare. -
Creare un
com.adobe.idp.Document
oggetto. Passa iljava.io.FileInputStream
oggetto che contiene il documento PDF da disassemblare. -
Aggiungi una voce al
java.util.Map
oggetto richiamando il relativoput
e fornendo 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
.) - A
com.adobe.idp.Document
oggetto che contiene 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
AssemblerOptionSpec
oggetto che memorizza le opzioni di runtime mediante il relativo costruttore. - Impostare le opzioni di runtime per soddisfare i requisiti aziendali richiamando un metodo che appartiene al
AssemblerOptionSpec
oggetto. Ad esempio, per indicare al servizio Assembler di continuare l'elaborazione di un processo quando si verifica un errore, richiamareAssemblerOptionSpec
dell'oggettosetFailOnError
metodo e passaggiofalse
.
- Creare un
-
Disassemblare il documento PDF.
Richiama
AssemblerServiceClient
dell'oggettoinvokeDDX
e trasmettere i seguenti valori:- A
com.adobe.idp.Document
oggetto che rappresenta il documento DDX creato in modo dinamico - A
java.util.Map
oggetto che contiene il documento PDF da disassemblare - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
oggetto che specifica le opzioni di runtime, inclusi il tipo di carattere predefinito e il livello di registro del processo
Il
invokeDDX
il metodo restituisce uncom.adobe.livecycle.assembler.client.AssemblerResult
oggetto contenente i documenti PDF disassemblati ed eventuali eccezioni. - A
-
Salvare i documenti PDF disassemblati.
Per ottenere i documenti PDF disassemblati, effettuare le seguenti operazioni:
- Richiama
AssemblerResult
dell'oggettogetDocuments
metodo. Questo metodo restituisce unjava.util.Map
oggetto. - Effettua iterazione attraverso
java.util.Map
finché non viene individuato il risultatocom.adobe.idp.Document
oggetto. - Richiama
com.adobe.idp.Document
dell'oggettocopyToFile
per estrarre il documento PDF.
- Richiama
Consulta anche
Quick Start (modalità SOAP): creazione dinamica di un documento DDX utilizzando l’API Java
Inclusione dei file della 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 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 localhost
con l’indirizzo IP del server che ospita AEM Forms. -
Creare un client PDF Assembler.
-
Creare un
AssemblerServiceClient
utilizzando il costruttore predefinito. -
Creare un
AssemblerServiceClient.Endpoint.Address
oggetto utilizzandoSystem.ServiceModel.EndpointAddress
costruttore. Passa un valore stringa che specifica il file WSDL al servizio AEM Forms (ad esempio,http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Non è necessario utilizzare illc_version
attributo. Questo attributo viene utilizzato quando si crea un riferimento a un servizio. -
Creare un
System.ServiceModel.BasicHttpBinding
dell'oggetto ottenendo il valore delAssemblerServiceClient.Endpoint.Binding
campo. Invia il valore restituito aBasicHttpBinding
. -
Imposta il
System.ServiceModel.BasicHttpBinding
dell'oggettoMessageEncoding
campo aWSMessageEncoding.Mtom
. Questo valore assicura che venga utilizzato MTOM. -
Abilita l’autenticazione HTTP di base eseguendo le seguenti attività:
- Assegna al campo il nome utente dei moduli AEM
AssemblerServiceClient.ClientCredentials.UserName.UserName
. - Assegna il valore password corrispondente al campo
AssemblerServiceClient.ClientCredentials.UserName.Password
. - Assegna il valore costante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Assegna il valore costante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Assegna al campo il nome utente dei moduli AEM
-
-
Creare il documento DDX.
-
Creare un
System.Xml.XmlElement
mediante il costruttore. -
Creare l'elemento radice del documento DDX richiamando
XmlElement
dell'oggettoCreateElement
metodo. Questo metodo crea unElement
oggetto che rappresenta l'elemento principale. Passa un valore stringa che rappresenta il nome dell’elemento alCreateElement
metodo. Imposta un valore per l'elemento DDX chiamando il relativoSetAttribute
metodo. Infine, aggiungere l'elemento al documento DDX chiamandoXmlElement
dell'oggettoAppendChild
metodo. 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);
-
Crea il documento DDX
PDFsFromBookmarks
chiamando l'XmlElement
dell'oggettoCreateElement
metodo. Passa un valore stringa che rappresenta il nome dell’elemento alCreateElement
metodo. Quindi, imposta un valore per l’elemento chiamando il relativoSetAttribute
metodo. AggiungiPDFsFromBookmarks
all'elemento principale chiamando ilDDX
dell'elementoAppendChild
metodo. Passa ilPDFsFromBookmarks
come argomento. Le seguenti righe di codice mostrano questa logica dell’applicazione:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks);
-
Crea il documento DDX
PDF
chiamando l'XmlElement
dell'oggettoCreateElement
metodo. Passa un valore stringa che rappresenta il nome dell’elemento alCreateElement
metodo. Quindi, imposta un valore per l’elemento figlio chiamando il relativoSetAttribute
metodo. AggiungiPDF
elemento alPDFsFromBookmarks
chiamando l'PDFsFromBookmarks
dell'elementoAppendChild
metodo. Passa ilPDF
come 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
System.IO.MemoryStream
mediante il costruttore. -
Popolare il
MemoryStream
con il documento DDX utilizzandoXmlElement
oggetto che rappresenta il documento DDX. RichiamaXmlElement
dell'oggettoSave
e trasmettere ilMemoryStream
oggetto. -
Creare una matrice di byte e popolarla con i dati in
MemoryStream
oggetto. 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
BLOB
oggetto. Assegnare la matrice di byte alBLOB
dell'oggettoMTOM
campo.
-
-
Fare riferimento a un documento PDF da disassemblare.
- Creare un
BLOB
mediante il costruttore. IlBLOB
L'oggetto viene utilizzato per memorizzare il documento di input PDF. QuestoBLOB
l'oggetto viene passato alinvokeOneDocument
come argomento. - Creare un
System.IO.FileStream
richiamando 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 della
System.IO.FileStream
oggetto. È possibile determinare le dimensioni della matrice di byte ottenendoSystem.IO.FileStream
dell'oggettoLength
proprietà. - Compilare la matrice di byte con i dati di flusso richiamando
System.IO.FileStream
dell'oggettoRead
e passando la matrice di byte, la posizione iniziale e la lunghezza del flusso da leggere. - Popolare il
BLOB
oggetto assegnando il relativoMTOM
proprietà il contenuto della matrice di byte.
- Creare un
-
Impostare le opzioni di runtime.
- Creare un
AssemblerOptionSpec
oggetto che memorizza le opzioni di runtime mediante il relativo costruttore. - Impostare le opzioni di runtime per soddisfare i requisiti aziendali assegnando un valore a un membro dati che appartiene al
AssemblerOptionSpec
oggetto. Ad esempio, per indicare al servizio Assembler di continuare l'elaborazione di un processo quando si verifica un errore, assegnarefalse
alAssemblerOptionSpec
dell'oggettofailOnError
membro dati.
- Creare un
-
Disassemblare il documento PDF.
Richiama
AssemblerServiceClient
dell'oggettoinvokeDDX
e trasmettere i seguenti valori:- A
BLOB
oggetto che rappresenta il documento DDX creato in modo dinamico - Il
mapItem
array contenente il documento di input PDF - Un
AssemblerOptionSpec
oggetto che specifica le opzioni di runtime
Il
invokeDDX
il metodo restituisce unAssemblerResult
oggetto contenente i risultati del processo ed eventuali eccezioni verificatesi. - A
-
Salvare i documenti PDF disassemblati.
Per ottenere i documenti di PDF appena creati, effettuare le seguenti operazioni:
- Accedere a
AssemblerResult
dell'oggettodocuments
campo, che è unMap
oggetto contenente i documenti PDF disassemblati. - Effettua iterazione attraverso
Map
per ottenere ogni documento risultante. Quindi, esegui il cast del membro di arrayvalue
a unBLOB
. - Estrarre i dati binari che rappresentano il documento PDF accedendo al relativo
BLOB
dell'oggettoMTOM
proprietà. Restituisce una matrice di byte che è possibile scrivere in un file PDF.
- Accedere a
Consulta anche
Richiamare AEM Forms tramite MTOM
Richiamare AEM Forms con SwaRef