Creazione dinamica di documenti DDX

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.

NOTA

Per ulteriori informazioni sul servizio Assembler, vedere Guida di riferimento dei servizi per AEM Forms.

NOTA

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 AEM Forms è distribuito su JBoss)
  • jbossall-client.jar (richiesto se AEM Forms è distribuito 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'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 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 oggetto ServiceClientFactory che contiene le proprietà di connessione.
    • Creare un oggetto AssemblerServiceClient utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory.
  3. 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);

  4. Convertire il documento DDX.

    • Creare un oggetto javax.xml.transform.Transformer richiamando il metodo statico javax.xml.transform.Transformer dell'oggetto newInstance.
    • Creare un oggetto Transformer richiamando il metodo TransformerFactory dell'oggetto newTransformer.
    • Creare un oggetto ByteArrayOutputStream utilizzando il relativo costruttore.
    • Creare un oggetto javax.xml.transform.dom.DOMSource utilizzando il relativo costruttore. Passa l'oggetto org.w3c.dom.Document che rappresenta il documento DDX.
    • Creare un oggetto javax.xml.transform.dom.DOMSource utilizzando il relativo costruttore e passando l'oggetto ByteArrayOutputStream.
    • Compilare l'oggetto Java 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.
    • Creare un array di byte e allocare la dimensione dell'oggetto ByteArrayOutputStream all'array di byte.
    • Compilare l'array di byte richiamando il metodo toByteArray dell'oggetto ByteArrayOutputStream.
    • Creare un oggetto com.adobe.idp.Document 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 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:

      • 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 oggetto com.adobe.idp.Document che contiene il documento PDF da smontare.
  6. Impostare le opzioni di esecuzione.

    • Creare un oggetto AssemblerOptionSpec 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'oggetto 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.
  7. Smontare il documento PDF.

    Richiamare il metodo AssemblerServiceClient dell'oggetto invokeDDX e trasmettere i seguenti valori:

    • Un oggetto com.adobe.idp.Document che rappresenta il documento DDX creato dinamicamente
    • Un oggetto java.util.Map che contiene il documento PDF da smontare
    • Un oggetto com.adobe.livecycle.assembler.client.AssemblerOptionSpec che specifica le opzioni di esecuzione, incluso il font predefinito e il livello di registro del processo

    Il metodo invokeDDX restituisce un oggetto com.adobe.livecycle.assembler.client.AssemblerResult che contiene i documenti PDF smontati ed eventuali eccezioni.

  8. Salvare i documenti PDF smontati.

    Per ottenere i documenti PDF disassemblati, effettuare le seguenti operazioni:

    • Richiamare il metodo AssemblerResult dell'oggetto getDocuments. Questo metodo restituisce un oggetto java.util.Map.
    • Iterate l'oggetto java.util.Map fino a individuare l'oggetto com.adobe.idp.Document risultante.
    • Richiamare il metodo 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 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.

    NOTA

    Sostituire localhost con l'indirizzo IP del server che ospita AEM Forms.

  2. 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:

      • Assegnare il nome utente del modulo 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 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);

  4. 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.

  5. Fare riferimento a un documento PDF per smontare.

    • Creare un oggetto 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.
    • Creare un oggetto 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.
    • Creare un array di byte che memorizza il contenuto dell'oggetto System.IO.FileStream. È possibile determinare la dimensione dell'array di byte ottenendo la proprietà System.IO.FileStream dell'oggetto Length.
    • Compilare l'array di byte con i dati del flusso richiamando il metodo Read dell'oggetto System.IO.FileStream e passando l'array di byte, la posizione iniziale e la lunghezza del flusso da leggere.
    • Compilare l'oggetto BLOB assegnando alla relativa proprietà MTOM il contenuto dell'array di byte.
  6. Impostare le opzioni di esecuzione.

    • Creare un oggetto AssemblerOptionSpec 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'oggetto 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.
  7. Smontare il documento PDF.

    Richiamare il metodo AssemblerServiceClient dell'oggetto invokeDDX e trasmettere i seguenti valori:

    • Un oggetto BLOB che rappresenta il documento DDX creato dinamicamente
    • L'array mapItem che contiene il documento PDF di input
    • Un oggetto AssemblerOptionSpec che specifica le opzioni di esecuzione

    Il metodo invokeDDX restituisce un oggetto AssemblerResult 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 documents dell'oggetto AssemblerResult, che è un oggetto Map contenente i documenti PDF smontati.
    • Iterate l'oggetto Map per ottenere ogni documento risultante. Quindi, proiettare l'elemento value del membro della matrice su un elemento BLOB.
    • Estrarre i dati binari che rappresentano il documento PDF accedendo alla proprietà BLOB dell'oggetto MTOM. Questo restituisce un array di byte che è possibile scrivere in un file PDF.

Consulta anche

Chiamata AEM Forms tramite MTOM

Chiamata AEM Forms tramite SwaRef

In questa pagina