Show Menu
ARGOMENTI×

Creazione dinamica di documenti DDX

È 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 org.w3c.dom.* pacchetto. Analogamente, se si utilizza Microsoft .NET, utilizzare classi appartenenti allo System.Xml spazio dei nomi.
Prima di passare il documento DDX al servizio Assembler, convertire l'XML da un' org.w3c.dom.Document istanza a un' com.adobe.idp.Document istanza. Se si utilizzano i servizi Web, convertire l'XML dal tipo di dati utilizzato per creare l'XML (ad esempio, XmlDocument ) in un' 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. È consigliabile avere familiarità con la scomposizione dei documenti PDF.
Per ulteriori informazioni sul servizio Assembler, vedere Riferimento servizi per i AEM Forms .
Per ulteriori informazioni su un documento DDX, vedere Servizio Assembler e Riferimento DDX.

Riepilogo dei passaggi

Per smontare un documento PDF utilizzando un documento DDX creato in modo dinamico, eseguire le operazioni seguenti:
  1. Includere i file di progetto.
  2. Creare un client Assembler PDF.
  3. Creare il documento DDX.
  4. Convertire il documento DDX.
  5. Impostare le opzioni di esecuzione.
  6. Smontare il documento PDF.
  7. Salvare i documenti PDF smontati.
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:
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-assembler-client.jar
  • adobe-utilities.jar (richiesto se i AEM Forms sono distribuiti su JBoss)
  • jbossall-client.jar (richiesto se i AEM Forms sono distribuiti su JBoss)
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' PDFsFromBookmarks elemento. Convertire il tipo di dati utilizzato per creare il documento DDX in un' com.adobe.idp.Document istanza se si utilizza l'API Java. Se si utilizzano i servizi Web, convertire il tipo di dati in un' BLOB istanza.
Conversione del documento DDX
Un documento DDX creato utilizzando org.w3c.dom le classi deve essere convertito 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 si utilizzano i servizi Web, convertire il documento DDX in un BLOB oggetto.
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 AssemblerOptionSpec oggetto.
Smontare il documento PDF
Smontare il documento PDF richiamando l' invokeDDX operazione. 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 e smontare un documento PDF utilizzando l'API Assembler Service (Java):
  1. Includere i file di progetto.
    Includete file JAR client, ad esempio adobe-assembler-client.jar, nel percorso di classe del progetto Java.
  2. Creare un client Assembler PDF.
    • Creare un ServiceClientFactory oggetto che contenga proprietà di connessione.
    • Creare un AssemblerServiceClient oggetto utilizzando il relativo costruttore e passando l' ServiceClientFactory oggetto.
  3. Creare il documento DDX.
    • Creare un oggetto Java DocumentBuilderFactory chiamando il metodo della DocumentBuilderFactory classe newInstance .
    • Creare un oggetto Java DocumentBuilder chiamando il DocumentBuilderFactory metodo dell' newDocumentBuilder oggetto.
    • Chiamare il metodo dell' DocumentBuilder oggetto newDocument per creare un'istanza di un org.w3c.dom.Document oggetto.
    • Creare l'elemento principale del documento DDX richiamando il org.w3c.dom.Document metodo dell' createElement oggetto. Questo metodo crea un Element oggetto che rappresenta l'elemento principale. Passate al createElement metodo 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 setAttribute metodo. Infine, aggiungete l’elemento all’elemento header chiamando il metodo dell’elemento header e passate l’oggetto element secondario come argomento. appendChild 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);
    • Create l' PDFsFromBookmarks elemento chiamando il metodo dell' Document oggetto createElement . Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Impostate un valore per l' PDFsFromBookmarks elemento chiamandone il setAttribute metodo. Aggiungete l' PDFsFromBookmarks elemento all' DDX elemento chiamando il appendChild metodo dell'elemento DDX. Passate l'oggetto PDFsFromBookmarks element 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 PDF elemento chiamando il metodo dell' Document oggetto createElement . Passate un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Impostate un valore per l' PDF elemento chiamandone il setAttribute metodo. Aggiungete l' PDF elemento all' PDFsFromBookmarks elemento chiamando il metodo dell' PDFsFromBookmarks elemento appendChild . Passate l'oggetto PDF element 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);
  4. Convertire il documento DDX.
    • Creare un javax.xml.transform.Transformer oggetto richiamando il javax.xml.transform.Transformer metodo statico dell'oggetto newInstance .
    • Creare un Transformer oggetto richiamando il TransformerFactory metodo dell' newTransformer oggetto.
    • Creare un ByteArrayOutputStream oggetto utilizzando il relativo costruttore.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore. Passa l' org.w3c.dom.Document oggetto che rappresenta il documento DDX.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore e passando l' ByteArrayOutputStream oggetto.
    • Compilare l'oggetto Java ByteArrayOutputStream richiamando il javax.xml.transform.Transformer metodo dell' transform oggetto. Passate gli javax.xml.transform.dom.DOMSource oggetti e gli javax.xml.transform.stream.StreamResult oggetti.
    • Creare un array di byte e allocare la dimensione dell' ByteArrayOutputStream oggetto all'array di byte.
    • Compilare l'array di byte richiamando il metodo dell' ByteArrayOutputStream oggetto toByteArray .
    • Creare un com.adobe.idp.Document oggetto utilizzando il relativo costruttore e passando l'array di byte.
  5. Fare riferimento a un documento PDF per smontare.
    • Creare un oggetto java.util.Map utilizzato per memorizzare i documenti PDF di input utilizzando un HashMap costruttore.
    • Creare un java.io.FileInputStream oggetto utilizzando il relativo costruttore e passare la posizione del documento PDF da smontare.
    • Create a com.adobe.idp.Document object. Trasmettere l' java.io.FileInputStream oggetto che contiene il documento PDF per smontare.
    • Aggiungere una voce all' java.util.Map oggetto richiamandone il put metodo e passando gli argomenti seguenti:
      • Un valore di 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 .
      • Un com.adobe.idp.Document oggetto che contiene il documento PDF da smontare.
  6. Impostare le opzioni di esecuzione.
    • Creare un AssemblerOptionSpec oggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.
    • Impostate le opzioni di runtime per soddisfare i requisiti aziendali richiamando un metodo che appartiene all' AssemblerOptionSpec oggetto. Ad esempio, per indicare al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiamare il metodo dell' AssemblerOptionSpec oggetto setFailOnError e passare false .
  7. Smontare il documento PDF.
    Richiama il metodo dell’ AssemblerServiceClient oggetto invokeDDX e passa i seguenti valori:
    • Un com.adobe.idp.Document oggetto che rappresenta il documento DDX creato dinamicamente
    • Un java.util.Map oggetto che contiene il documento PDF da smontare
    • Un com.adobe.livecycle.assembler.client.AssemblerOptionSpec oggetto che specifica le opzioni di esecuzione, incluso il font predefinito e il livello di registro del processo
    Il invokeDDX metodo restituisce un com.adobe.livecycle.assembler.client.AssemblerResult oggetto che contiene i documenti PDF disassemblati ed eventuali eccezioni.
  8. Salvare i documenti PDF smontati.
    Per ottenere i documenti PDF disassemblati, effettuare le seguenti operazioni:
    • Richiama il metodo dell’ AssemblerResult oggetto getDocuments . Questo metodo restituisce un java.util.Map oggetto.
    • Eseguire un'iterazione sull' java.util.Map oggetto fino a individuare l' com.adobe.idp.Document oggetto risultante.
    • Richiamare il metodo dell' com.adobe.idp.Document oggetto copyToFile per estrarre il documento PDF.
Consulta anche

Creare in modo dinamico un documento DDX utilizzando l'API del servizio Web

Creare in modo dinamico un documento DDX e smontare un documento PDF utilizzando l'API Assembler Service (servizio Web):
  1. 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 host AEM Forms.
  2. Creare un client Assembler PDF.
    • Creare un AssemblerServiceClient oggetto utilizzando il relativo costruttore predefinito.
    • Creare un AssemblerServiceClient.Endpoint.Address oggetto utilizzando il System.ServiceModel.EndpointAddress costruttore. 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' lc_version attributo. Questo attributo viene utilizzato quando create un riferimento a un servizio.
    • Creare un System.ServiceModel.BasicHttpBinding oggetto ottenendo il valore del AssemblerServiceClient.Endpoint.Binding campo. Inserite il valore restituito in BasicHttpBinding .
    • Impostare il campo System.ServiceModel.BasicHttpBinding dell' MessageEncoding oggetto su WSMessageEncoding.Mtom . Questo valore assicura che venga utilizzato MTOM.
    • Abilitate l'autenticazione HTTP di base eseguendo le seguenti operazioni:
      • 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.Basic al campo BasicHttpBindingSecurity.Transport.ClientCredentialType .
      • Assegnare il valore costante BasicHttpSecurityMode.TransportCredentialOnly al campo BasicHttpBindingSecurity.Security.Mode .
  3. Creare il documento DDX.
    • Creare un System.Xml.XmlElement oggetto utilizzando il relativo costruttore.
    • Creare l'elemento principale del documento DDX richiamando il XmlElement metodo dell' CreateElement oggetto. Questo metodo crea un Element oggetto che rappresenta l'elemento principale. Passate al CreateElement metodo un valore di stringa che rappresenta il nome dell'elemento. Impostate un valore per l'elemento DDX chiamandone il SetAttribute metodo. Infine, aggiungere l'elemento al documento DDX chiamando il XmlElement metodo 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' PDFsFromBookmarks elemento del documento DDX chiamando il XmlElement metodo dell' CreateElement oggetto. Passate al CreateElement metodo un valore di stringa che rappresenta il nome dell'elemento. Quindi, impostate un valore per l'elemento chiamandone il SetAttribute metodo. Aggiungete l' PDFsFromBookmarks elemento all'elemento principale chiamando il metodo dell' DDX elemento AppendChild . Passate l'oggetto PDFsFromBookmarks element 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' PDF elemento del documento DDX chiamando il XmlElement metodo dell' CreateElement oggetto. Passate al CreateElement metodo un valore di stringa che rappresenta il nome dell'elemento. Quindi, impostate un valore per l’elemento secondario chiamandone il SetAttribute metodo. Aggiungete l' PDF elemento all' PDFsFromBookmarks elemento chiamando il metodo dell' PDFsFromBookmarks elemento AppendChild . Passate l'oggetto PDF element 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);
  4. Convertire il documento DDX.
    • Creare un System.IO.MemoryStream oggetto utilizzando il relativo costruttore.
    • Compilare l' MemoryStream oggetto con il documento DDX utilizzando l' XmlElement oggetto che rappresenta il documento DDX. Richiamare il metodo dell' XmlElement oggetto Save e passare l' MemoryStream oggetto.
    • Creare un array di byte e compilarlo con i dati che si trovano nell' MemoryStream oggetto. 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);
    • Create a BLOB object. Assegnare l'array di byte al campo dell' BLOB oggetto MTOM .
  5. Fare riferimento a un documento PDF per smontare.
    • Creare un BLOB oggetto utilizzando il relativo costruttore. L' BLOB oggetto viene utilizzato per memorizzare il documento PDF di input. Questo BLOB oggetto viene passato all'oggetto invokeOneDocument come argomento.
    • Creare un System.IO.FileStream oggetto 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.
    • Creare un array di byte che memorizza il contenuto dell' System.IO.FileStream oggetto. È possibile determinare la dimensione dell'array di byte ottenendo la proprietà dell' System.IO.FileStream oggetto Length .
    • Compilare l'array di byte con i dati del flusso richiamando il System.IO.FileStream Read metodo dell'oggetto e passando l'array di byte, la posizione iniziale e la lunghezza del flusso da leggere.
    • Compilare l' BLOB oggetto assegnando alla MTOM proprietà il contenuto dell'array di byte.
  6. Impostare le opzioni di esecuzione.
    • Creare un AssemblerOptionSpec oggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.
    • Impostare le opzioni di runtime per soddisfare i requisiti aziendali assegnando un valore a un membro di dati che appartiene all' AssemblerOptionSpec oggetto. Ad esempio, per indicare al servizio Assembler di continuare l'elaborazione di un processo in caso di errore, assegnare false al membro AssemblerOptionSpec dati dell' failOnError oggetto.
  7. Smontare il documento PDF.
    Richiama il metodo dell’ AssemblerServiceClient oggetto invokeDDX e passa i seguenti valori:
    • Un BLOB oggetto che rappresenta il documento DDX creato dinamicamente
    • L' mapItem array che contiene il documento PDF di input
    • Un oggetto AssemblerOptionSpec che specifica le opzioni di esecuzione
    Il invokeDDX metodo restituisce un AssemblerResult oggetto che contiene i risultati del processo ed eventuali eccezioni.
  8. Salvare i documenti PDF smontati.
    Per ottenere i documenti PDF appena creati, effettuare le seguenti operazioni:
    • Accedere al campo dell' AssemblerResult oggetto documents , ovvero un Map oggetto che contiene i documenti PDF smontati.
    • Eseguire un'iterazione sull' Map oggetto per ottenere ogni documento risultante. Quindi, inserite il membro dell'array value in un BLOB .
    • Estrarre i dati binari che rappresentano il documento PDF accedendo alla BLOB proprietà dell' MTOM oggetto. Questo restituisce un array di byte che è possibile scrivere in un file PDF.
Consulta anche