È 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 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 utilizzi servizi web, converti 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 smonta un documento PDF. Si consiglia di avere familiarità con la scomposizione dei documenti PDF.
Per ulteriori informazioni sul servizio Assembler, vedere Riferimento servizi per AEM Forms.
Per ulteriori informazioni su un documento DDX, vedere Servizio Assembler e Riferimento DDX.
Per smontare un documento PDF utilizzando un documento DDX creato in modo dinamico, eseguire le operazioni seguenti:
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:
Creare un client Assembler PDF
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 l'elemento PDFsFromBookmarks
. Converti il tipo di dati utilizzato per creare il documento DDX in un'istanza com.adobe.idp.Document
se utilizzi l'API Java. Se utilizzi servizi web, converti il tipo di dati in un’istanza BLOB
.
Conversione del 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, utilizzare le classi di trasformazione Java XML. Se utilizzi servizi Web, converti il documento DDX in un oggetto BLOB
.
Riferimento a un documento PDF da smontare
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, utilizzare un oggetto AssemblerOptionSpec
.
Smontare il documento PDF
Smontare il documento PDF richiamando l'operazione invokeDDX
. 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 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 Assembler PDF.
ServiceClientFactory
contenente le proprietà di connessione.AssemblerServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
.Crea il documento DDX.
Crea un oggetto Java DocumentBuilderFactory
chiamando il metodo DocumentBuilderFactory
class’ newInstance
.
Crea un oggetto Java DocumentBuilder
chiamando il metodo DocumentBuilderFactory
dell'oggetto newDocumentBuilder
.
Chiama il metodo newDocument
dell'oggetto DocumentBuilder
per creare un'istanza di un oggetto org.w3c.dom.Document
.
Creare l'elemento principale del documento DDX richiamando il metodo org.w3c.dom.Document
dell'oggetto createElement
. Questo metodo crea un oggetto Element
che rappresenta l'elemento principale. Passa al metodo createElement
un valore stringa che rappresenta il nome dell'elemento. Imposta il valore restituito su Element
. Quindi, imposta un valore per l’elemento figlio chiamandone il metodo setAttribute
. Infine, aggiungi l’elemento all’elemento header chiamando il metodo appendChild
dell’elemento header e passa 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 l’elemento PDFsFromBookmarks
chiamando il metodo Document
dell’oggetto createElement
. Passa al metodo createElement
un valore stringa che rappresenta il nome dell'elemento. Imposta il valore restituito su Element
. Imposta un valore per l'elemento PDFsFromBookmarks
chiamandone il metodo setAttribute
. Aggiungi l’elemento PDFsFromBookmarks
all’elemento DDX
chiamando il metodo appendChild
dell’elemento DDX. Passa l’oggetto elemento PDFsFromBookmarks
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 elemento PDF
chiamando il metodo Document
dell'oggetto createElement
. Passa un valore stringa che rappresenta il nome dell'elemento. Imposta il valore restituito su Element
. Imposta un valore per l'elemento PDF
chiamandone il metodo setAttribute
. Aggiungi l’elemento PDF
all’elemento PDFsFromBookmarks
chiamando il metodo PDFsFromBookmarks
dell’elemento appendChild
. Passa l’oggetto elemento PDF
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.
javax.xml.transform.Transformer
richiamando il metodo statico javax.xml.transform.Transformer
dell'oggetto newInstance
.Transformer
richiamando il metodo TransformerFactory
dell'oggetto newTransformer
.ByteArrayOutputStream
utilizzando il relativo costruttore.javax.xml.transform.dom.DOMSource
utilizzando il relativo costruttore. Passa l'oggetto org.w3c.dom.Document
che rappresenta il documento DDX.javax.xml.transform.dom.DOMSource
utilizzando il relativo costruttore e passando l'oggetto ByteArrayOutputStream
.ByteArrayOutputStream
richiamando il metodo javax.xml.transform.Transformer
dell'oggetto transform
. Passa gli oggetti javax.xml.transform.dom.DOMSource
e javax.xml.transform.stream.StreamResult
.ByteArrayOutputStream
all'array di byte.toByteArray
dell'oggetto ByteArrayOutputStream
.com.adobe.idp.Document
utilizzando il relativo costruttore e passando la matrice dei byte.Fare riferimento a un documento PDF per smontare.
Creare un oggetto java.util.Map
utilizzato per memorizzare i documenti PDF di input utilizzando un costruttore HashMap
.
Creare un oggetto java.io.FileInputStream
utilizzando il relativo costruttore e passando la posizione del documento PDF da smontare.
Creare un oggetto com.adobe.idp.Document
. Passa l'oggetto java.io.FileInputStream
che contiene il documento PDF da smontare.
Aggiungere una voce all'oggetto java.util.Map
richiamando il relativo metodo put
e passando i seguenti argomenti:
AssemblerResultPDF.pdf
.com.adobe.idp.Document
contenente il documento PDF da smontare.Impostare le opzioni di esecuzione.
AssemblerOptionSpec
che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.AssemblerOptionSpec
. Ad esempio, per dare istruzioni al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiamare il metodo setFailOnError
dell'oggetto AssemblerOptionSpec
e passare false
.Smontare il documento PDF.
Richiama il metodo invokeDDX
dell'oggetto AssemblerServiceClient
e passa i seguenti valori:
com.adobe.idp.Document
che rappresenta il documento DDX creato dinamicamentejava.util.Map
che contiene il documento PDF da smontarecom.adobe.livecycle.assembler.client.AssemblerOptionSpec
che specifica le opzioni di esecuzione, incluso il font predefinito e il livello di log del processoIl metodo invokeDDX
restituisce un oggetto com.adobe.livecycle.assembler.client.AssemblerResult
contenente i documenti PDF smontati ed eventuali eccezioni.
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF smontati, eseguire le operazioni seguenti:
getDocuments
dell'oggetto AssemblerResult
. Questo metodo restituisce un oggetto java.util.Map
.java.util.Map
fino a trovare l'oggetto com.adobe.idp.Document
risultante.copyToFile
dell'oggetto com.adobe.idp.Document
per estrarre il documento PDF.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 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
.
Sostituisci localhost
con l'indirizzo IP del server che ospita AEM Forms.
Creare un client Assembler PDF.
Creare un oggetto AssemblerServiceClient
utilizzando il relativo costruttore predefinito.
Creare un oggetto AssemblerServiceClient.Endpoint.Address
utilizzando il costruttore System.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'attributo lc_version
. Questo attributo viene utilizzato quando si crea un riferimento a un servizio.
Crea un oggetto System.ServiceModel.BasicHttpBinding
ottenendo il valore del campo AssemblerServiceClient.Endpoint.Binding
. Imposta il valore restituito su BasicHttpBinding
.
Impostare il campo MessageEncoding
dell'oggetto System.ServiceModel.BasicHttpBinding
su WSMessageEncoding.Mtom
. Questo valore assicura che venga utilizzato MTOM.
Abilita l’autenticazione HTTP di base eseguendo le seguenti attività:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
al campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
al campo BasicHttpBindingSecurity.Security.Mode
.Crea il documento DDX.
Creare un oggetto System.Xml.XmlElement
utilizzando il relativo costruttore.
Creare l'elemento principale del documento DDX richiamando il metodo XmlElement
dell'oggetto CreateElement
. Questo metodo crea un oggetto Element
che rappresenta l'elemento principale. Passa al metodo CreateElement
un valore stringa che rappresenta il nome dell'elemento. Imposta un valore per l'elemento DDX chiamandone il metodo SetAttribute
. Infine, aggiungi l’elemento al documento DDX chiamando il metodo XmlElement
dell’oggetto AppendChild
. 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);
Crea l'elemento PDFsFromBookmarks
del documento DDX chiamando il metodo XmlElement
dell'oggetto CreateElement
. Passa al metodo CreateElement
un valore stringa che rappresenta il nome dell'elemento. Quindi, imposta un valore per l'elemento chiamandone il metodo SetAttribute
. Aggiungi l’elemento PDFsFromBookmarks
all’elemento principale chiamando il metodo DDX
dell’elemento AppendChild
. Passa l’oggetto elemento PDFsFromBookmarks
come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:
XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks);
Crea l'elemento PDF
del documento DDX chiamando il metodo XmlElement
dell'oggetto CreateElement
. Passa al metodo CreateElement
un valore stringa che rappresenta il nome dell'elemento. Quindi, imposta un valore per l’elemento figlio chiamandone il metodo SetAttribute
. Aggiungi l’elemento PDF
all’elemento PDFsFromBookmarks
chiamando il metodo PDFsFromBookmarks
dell’elemento AppendChild
. Passa l’oggetto elemento PDF
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.
Creare un oggetto System.IO.MemoryStream
utilizzando il relativo costruttore.
Compilare l'oggetto MemoryStream
con il documento DDX utilizzando l'oggetto XmlElement
che rappresenta il documento DDX. Richiamare il metodo Save
dell'oggetto XmlElement
e passare l'oggetto MemoryStream
.
Creare una matrice di byte e compilarla con dati che si trovano nell'oggetto MemoryStream
. 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);
Creare un oggetto BLOB
. Assegnare l’array di byte al campo MTOM
dell’oggetto BLOB
.
Fare riferimento a un documento PDF per smontare.
BLOB
utilizzando il relativo costruttore. L'oggetto BLOB
viene utilizzato per memorizzare il documento PDF di input. Questo oggetto BLOB
viene passato a invokeOneDocument
come argomento.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.System.IO.FileStream
. È possibile determinare le dimensioni dell'array di byte ottenendo la proprietà Length
dell'oggetto System.IO.FileStream
.Read
dell’oggetto System.IO.FileStream
e passando l’array di byte, la posizione iniziale e la lunghezza del flusso da leggere.BLOB
assegnando alla relativa proprietà MTOM
il contenuto dell'array di byte.Impostare le opzioni di esecuzione.
AssemblerOptionSpec
che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.AssemblerOptionSpec
. Ad esempio, per dare istruzioni al servizio Assembler di continuare a elaborare un processo in caso di errore, assegna false
al membro dati AssemblerOptionSpec
dell'oggetto failOnError
.Smontare il documento PDF.
Richiama il metodo invokeDDX
dell'oggetto AssemblerServiceClient
e passa i seguenti valori:
BLOB
che rappresenta il documento DDX creato dinamicamentemapItem
contenente il documento PDF di inputAssemblerOptionSpec
che specifica le opzioni di esecuzioneIl metodo invokeDDX
restituisce un oggetto AssemblerResult
contenente i risultati del processo ed eventuali eccezioni.
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF appena creati, eseguire le operazioni seguenti:
documents
dell'oggetto AssemblerResult
, che è un oggetto Map
che contiene i documenti PDF smontati.Map
per ottenere ogni documento risultante. Quindi, eseguire il cast di value
del membro della matrice su un BLOB
.MTOM
dell’oggetto BLOB
corrispondente. Restituisce una matrice di byte che è possibile scrivere in un file PDF.Consulta anche
Richiamo di AEM Forms tramite MTOM
Richiamo di AEM Forms tramite SwaRef