Esempi ed esempi in questo documento sono disponibili solo per AEM Forms nell'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 valori nel documento DDX ottenuti durante l'esecuzione. Per creare in modo dinamico un documento DDX, utilizzare classi appartenenti al linguaggio di programmazione utilizzato. Ad esempio, se state sviluppando l'applicazione client utilizzando Java, utilizzate le classi che appartengono al pacchetto org.w3c.dom.*
. Analogamente, se si utilizza Microsoft .NET, utilizzare classi appartenenti 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
in un'istanza com.adobe.idp.Document
. Se si utilizzano 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 smonta un documento PDF. È consigliabile avere familiarità con la scomposizione dei documenti PDF.
Per ulteriori informazioni sul servizio Assembler, vedere Guida di riferimento dei 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
Includete i file necessari nel progetto di sviluppo. Se create un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate i servizi Web, accertatevi di includere i file proxy.
I seguenti file JAR devono essere aggiunti al percorso di classe del progetto:
Creare un client Assembler PDF
Prima di eseguire un'operazione Assembler a livello di programmazione, create 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, assicurarsi 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 si utilizzano servizi Web, convertire 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 si utilizzano i servizi Web, convertire 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 ciascun segnalibro di livello 1 nel documento.
Impostazione delle opzioni di esecuzione
È possibile impostare opzioni di esecuzione che controllano il comportamento del servizio Assembler mentre esegue un processo. Ad esempio, potete impostare un'opzione che indichi al servizio Assembler di continuare l'elaborazione di un processo in caso di errore. Per impostare le opzioni di esecuzione, è necessario 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 disassemblati vengono restituiti all'interno di un oggetto raccolta. Iterare l'oggetto della raccolta e salvare ciascun 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 file libreria Java AEM Forms
Impostazione delle proprietà di connessione
Scomposizione programmatica dei documenti PDF
Creare in modo dinamico un documento DDX e smontare un documento PDF utilizzando l'API Assembler Service (Java):
Includere i file di progetto.
Includete file JAR client, ad esempio adobe-assembler-client.jar, nel percorso di classe del progetto Java.
Creare un client Assembler PDF.
ServiceClientFactory
che contiene le proprietà di connessione.AssemblerServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
.Creare il documento DDX.
Creare un oggetto Java DocumentBuilderFactory
chiamando il metodo DocumentBuilderFactory
class newInstance
.
Creare un oggetto Java DocumentBuilder
chiamando il metodo DocumentBuilderFactory
dell'oggetto newDocumentBuilder
.
Chiamare il metodo DocumentBuilder
dell'oggetto newDocument
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. Passate al metodo createElement
un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element
. Quindi, impostate un valore per l'elemento secondario chiamandone il metodo setAttribute
. Infine, aggiungete l'elemento all'elemento header chiamando il metodo dell'elemento header appendChild
e passate l'oggetto dell'elemento secondario 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);
Creare l'elemento PDFsFromBookmarks
chiamando il metodo Document
dell'oggetto createElement
. Passate al metodo createElement
un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element
. Impostate un valore per l'elemento PDFsFromBookmarks
chiamandone il metodo setAttribute
. Aggiungete l'elemento PDFsFromBookmarks
all'elemento DDX
chiamando il metodo appendChild
dell'elemento DDX. Passa l'oggetto 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);
Create un elemento PDF
chiamando il metodo Document
dell'oggetto createElement
. Passate un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element
. Impostate un valore per l'elemento PDF
chiamandone il metodo setAttribute
. Aggiungete l'elemento PDF
all'elemento PDFsFromBookmarks
chiamando il metodo PDFsFromBookmarks
dell'elemento appendChild
. Passa l'oggetto PDF
come argomento. Le seguenti righe di codice mostrano la logica di questa 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
. Passare 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 l'array di 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
. Passare l'oggetto java.io.FileInputStream
che contiene il documento PDF da smontare.
Aggiungere una voce all'oggetto java.util.Map
richiamandone il metodo put
e trasmettendo gli argomenti seguenti:
AssemblerResultPDF.pdf
.com.adobe.idp.Document
che contiene 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 indicare al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiamare il metodo AssemblerOptionSpec
dell'oggetto setFailOnError
e passare false
.Smontare il documento PDF.
Richiamare il metodo AssemblerServiceClient
dell'oggetto invokeDDX
e trasmettere 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 registro del processoIl metodo invokeDDX
restituisce un oggetto com.adobe.livecycle.assembler.client.AssemblerResult
che contiene i documenti PDF smontati ed eventuali eccezioni.
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF disassemblati, effettuare le seguenti operazioni:
AssemblerResult
dell'oggetto getDocuments
. Questo metodo restituisce un oggetto java.util.Map
.java.util.Map
fino a individuare l'oggetto com.adobe.idp.Document
risultante.com.adobe.idp.Document
dell'oggetto copyToFile
per estrarre il documento PDF.Consulta anche
Avvio rapido (modalità SOAP): Creazione dinamica di un documento DDX utilizzando l'API Java
Inclusione file libreria Java AEM Forms
Impostazione delle proprietà di connessione
Creare in modo dinamico un documento DDX e smontare un documento PDF utilizzando l'API Assembler Service (servizio Web):
Includere i file di progetto.
Creare un progetto Microsoft .NET che utilizza MTOM. Quando imposti un riferimento a un servizio, accertatevi di utilizzare la seguente definizione WSDL: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Sostituire 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
. Passate un valore di 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 create un riferimento a un servizio.
Creare un oggetto System.ServiceModel.BasicHttpBinding
ottenendo il valore del campo AssemblerServiceClient.Endpoint.Binding
. Inserite il valore restituito in BasicHttpBinding
.
Impostare il campo System.ServiceModel.BasicHttpBinding
dell'oggetto MessageEncoding
su WSMessageEncoding.Mtom
. Questo valore assicura che venga utilizzato MTOM.
Abilitate l'autenticazione HTTP di base eseguendo le seguenti operazioni:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
al campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
al campo BasicHttpBindingSecurity.Security.Mode
.Creare 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. Passate al metodo CreateElement
un valore di stringa che rappresenta il nome dell'elemento. Impostate un valore per l'elemento DDX chiamandone il metodo SetAttribute
. Infine, aggiungere 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);
Creare l'elemento PDFsFromBookmarks
del documento DDX chiamando il metodo XmlElement
dell'oggetto CreateElement
. Passate al metodo CreateElement
un valore di stringa che rappresenta il nome dell'elemento. Quindi, impostate un valore per l'elemento chiamandone il metodo SetAttribute
. Aggiungete l'elemento PDFsFromBookmarks
all'elemento principale chiamando il metodo DDX
dell'elemento AppendChild
. Passa l'oggetto 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);
Creare l'elemento PDF
del documento DDX chiamando il metodo XmlElement
dell'oggetto CreateElement
. Passate al metodo CreateElement
un valore di stringa che rappresenta il nome dell'elemento. Quindi, impostate un valore per l'elemento secondario chiamandone il metodo SetAttribute
. Aggiungete l'elemento PDF
all'elemento PDFsFromBookmarks
chiamando il metodo PDFsFromBookmarks
dell'elemento AppendChild
. Passa l'oggetto PDF
come argomento. Le seguenti righe di codice mostrano la logica di questa 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 XmlElement
dell'oggetto Save
e passare l'oggetto MemoryStream
.
Creare un array di byte e compilarlo con i dati che si trovano nell'oggetto MemoryStream
. Il codice seguente mostra la logica di questa 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 BLOB
dell'oggetto MTOM
.
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 al invokeOneDocument
come argomento.System.IO.FileStream
richiamandone il costruttore. Passa un valore di stringa che rappresenta la posizione del file del documento PDF di input e la modalità di apertura del file.System.IO.FileStream
. È possibile determinare la dimensione dell'array di byte ottenendo la proprietà System.IO.FileStream
dell'oggetto Length
.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 indicare al servizio Assembler di continuare l'elaborazione di un processo in caso di errore, assegnare false
al membro di dati AssemblerOptionSpec
dell'oggetto failOnError
.Smontare il documento PDF.
Richiamare il metodo AssemblerServiceClient
dell'oggetto invokeDDX
e trasmettere i seguenti valori:
BLOB
che rappresenta il documento DDX creato dinamicamentemapItem
che contiene il documento PDF di inputAssemblerOptionSpec
che specifica le opzioni di esecuzioneIl metodo invokeDDX
restituisce un oggetto AssemblerResult
che contiene i risultati del processo ed eventuali eccezioni.
Salvare i documenti PDF smontati.
Per ottenere i documenti PDF appena creati, effettuare le seguenti operazioni:
documents
dell'oggetto AssemblerResult
, che è un oggetto Map
contenente i documenti PDF smontati.Map
per ottenere ogni documento risultante. Quindi, proiettare l'elemento value
del membro della matrice su un elemento BLOB
.BLOB
dell'oggetto MTOM
. Questo restituisce un array di byte che è possibile scrivere in un file PDF.Consulta anche