Creación dinámica de documentos DDX dynamically-creating-ddx-documents
Puede crear dinámicamente un documento DDX que pueda utilizarse para realizar una operación Assembler. La creación dinámica de un documento DDX permite utilizar valores en el documento DDX obtenidos durante la ejecución. Para crear dinámicamente un documento DDX, utilice clases que pertenezcan al lenguaje de programación que esté utilizando. Por ejemplo, si está desarrollando la aplicación cliente mediante Java, utilice clases que pertenezcan al grupo org.w3c.dom.*paquete. Del mismo modo, si utiliza Microsoft .NET, utilice clases que pertenezcan a la variable System.Xml espacio de nombres.
Para poder pasar el documento DDX al servicio Assembler, convierta el XML desde un org.w3c.dom.Document instancia a un com.adobe.idp.Document instancia. Si utiliza servicios web, convierta el XML del tipo de datos utilizado para crear el XML (por ejemplo, XmlDocument) a BLOB instancia.
Para esta discusión, supongamos que el siguiente documento DDX se crea de forma dinámica.
<?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>
Este documento DDX desmonta un documento PDF. Se recomienda que esté familiarizado con el desmontaje de documentos PDF.
Resumen de los pasos summary-of-steps
Para desmontar un documento PDF utilizando un documento DDX creado dinámicamente, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de ensamblador de PDF.
- Cree el documento DDX.
- Convierta el documento DDX.
- Establezca las opciones de tiempo de ejecución.
- Desmonte el documento del PDF.
- Guarde los documentos de PDF desmontados.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Creación de un cliente de ensamblador de PDF
Antes de realizar una operación Assembler mediante programación, cree un cliente de servicio Assembler.
Crear el documento DDX
Cree un documento DDX utilizando el lenguaje de programación que está utilizando. Para crear un documento DDX que desmonte un documento PDF, asegúrese de que contiene el PDFsFromBookmarks elemento. Convertir el tipo de datos utilizado para crear el documento DDX a un com.adobe.idp.Document instancia si utiliza la API de Java. Si utiliza servicios web, convierta el tipo de datos en un BLOB instancia.
Convertir el documento DDX
Un documento DDX que se crea mediante el uso de org.w3c.dom las clases deben convertirse en com.adobe.idp.Document objeto. Para realizar esta tarea al utilizar la API de Java, utilice clases de transformación XML de Java. Si utiliza servicios web, convierta el documento DDX a un BLOB objeto.
Haga referencia a un documento del PDF para desmontarlo
Para desmontar un documento de PDF, haga referencia a un archivo de PDF que represente el documento de PDF que desea desmontar. Cuando se pasa al servicio Assembler, se devuelve un documento PDF independiente para cada marcador de nivel 1 del documento.
Establecer opciones de tiempo de ejecución
Puede establecer opciones en tiempo de ejecución que controlan el comportamiento del servicio Assembler mientras realiza un trabajo. Por ejemplo, puede definir una opción que indique al servicio Assembler que continúe procesando un trabajo si se encuentra un error. Para configurar las opciones de tiempo de ejecución, utilice un AssemblerOptionSpec objeto.
Desmontar el documento del PDF
Desmonte el documento del PDF invocando el invokeDDX operación. Pase el documento DDX que se creó dinámicamente. El servicio Assembler devuelve documentos PDF desmontados dentro de un objeto de colección.
Guarde los documentos del PDF desmontados
Todos los documentos PDF desmontados se devuelven dentro de un objeto de colección. Itere a través del objeto de colección y guarde cada documento de PDF como archivo de PDF.
Consulte también
Creación dinámica de un documento DDX mediante la API de Java
Creación dinámica de un documento DDX mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Desmontaje programático de documentos PDF
Creación dinámica de un documento DDX mediante la API de Java dynamically-create-a-ddx-document-using-the-java-api
Cree dinámicamente un documento DDX y desmonte un documento PDF utilizando la API de servicio del ensamblador (Java):
-
Incluir archivos de proyecto.
Incluya archivos JAR del cliente, como adobe-assembler-client.jar, en la ruta de clase de su proyecto Java.
-
Cree un cliente de ensamblador de PDF.
- Cree un
ServiceClientFactoryobjeto que contiene propiedades de conexión. - Cree un
AssemblerServiceClientusando su constructor y pasando elServiceClientFactoryobjeto.
- Cree un
-
Cree el documento DDX.
-
Creación de un Java
DocumentBuilderFactoryllamando alDocumentBuilderFactoryclass"newInstancemétodo. -
Creación de un Java
DocumentBuilderllamando alDocumentBuilderFactorydel objetonewDocumentBuildermétodo. -
Llame a la función
DocumentBuilderdel objetonewDocumentpara crear una instancia deorg.w3c.dom.Documentobjeto. -
Cree el elemento raíz del documento DDX invocando la variable
org.w3c.dom.Documentdel objetocreateElementmétodo. Este método crea unElementobjeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElementmétodo. Conversión del valor devuelto aElement. A continuación, establezca un valor para el elemento secundario llamando a susetAttributemétodo. Finalmente, anexe el elemento al elemento del encabezado llamando al elemento del encabezadoappendChildy pase el objeto de elemento secundario como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root); -
Cree la variable
PDFsFromBookmarksllamando alDocumentdel objetocreateElementmétodo. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElementmétodo. Conversión del valor devuelto aElement. Establezca un valor para la variablePDFsFromBookmarksllamando a susetAttributemétodo. Anexe la variablePDFsFromBookmarksalDDXllamando al elemento DDX deappendChildmétodo. Pase elPDFsFromBookmarksobjeto element como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks); -
Cree un
PDFllamando alDocumentdel objetocreateElementmétodo. Pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement. Establezca un valor para la variablePDFllamando a susetAttributemétodo. Anexe la variablePDFalPDFsFromBookmarksllamando alPDFsFromBookmarksdel elementoappendChildmétodo. Pase elPDFobjeto element como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Convierta el documento DDX.
- Cree un
javax.xml.transform.Transformerinvocando el objetojavax.xml.transform.Transformerestático del objetonewInstancemétodo. - Cree un
Transformerinvocando el objetoTransformerFactorydel objetonewTransformermétodo. - Cree un
ByteArrayOutputStreamusando su constructor. - Cree un
javax.xml.transform.dom.DOMSourceusando su constructor. Pase elorg.w3c.dom.Documentque representa el documento DDX. - Cree un
javax.xml.transform.dom.DOMSourceusando su constructor y pasando elByteArrayOutputStreamobjeto. - Rellenar el Java
ByteArrayOutputStreaminvocando el objetojavax.xml.transform.Transformerdel objetotransformmétodo. Pase eljavax.xml.transform.dom.DOMSourceyjavax.xml.transform.stream.StreamResultobjetos. - Cree una matriz de bytes y asigne el tamaño de la variable
ByteArrayOutputStreama la matriz de bytes. - Rellene la matriz de bytes invocando la variable
ByteArrayOutputStreamdel objetotoByteArraymétodo. - Cree un
com.adobe.idp.Documentusando su constructor y pasando la matriz de bytes.
- Cree un
-
Haga referencia a un documento del PDF para desmontarlo.
-
Cree un
java.util.Mapobjeto que se utiliza para almacenar documentos del PDF de entrada mediante unHashMapconstructor. -
Cree un
java.io.FileInputStreamutilizando su constructor y pasando la ubicación del documento PDF para desmontarlo. -
Cree un
com.adobe.idp.Documentobjeto. Pase eljava.io.FileInputStreamobjeto que contiene el documento PDF que se va a desmontar. -
Agregue una entrada al
java.util.Mapinvocando suputy pasando los siguientes argumentos:- Un valor de cadena que representa el nombre de la clave. Este valor debe coincidir con el valor del elemento de origen del PDF especificado en el documento DDX. (En el documento DDX que se crea dinámicamente, el valor es
AssemblerResultPDF.pdf.) - A
com.adobe.idp.Documentobjeto que contiene el documento PDF que se va a desmontar.
- Un valor de cadena que representa el nombre de la clave. Este valor debe coincidir con el valor del elemento de origen del PDF especificado en el documento DDX. (En el documento DDX que se crea dinámicamente, el valor es
-
-
Establezca las opciones de tiempo de ejecución.
- Cree un
AssemblerOptionSpecque almacena opciones en tiempo de ejecución mediante su constructor. - Configure las opciones en tiempo de ejecución para satisfacer los requisitos empresariales invocando un método que pertenece al
AssemblerOptionSpecobjeto. Por ejemplo, para solicitar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, invoque la funciónAssemblerOptionSpecdel objetosetFailOnErrormétodo y pasefalse.
- Cree un
-
Desmonte el documento del PDF.
Invocar el
AssemblerServiceClientdel objetoinvokeDDXy pase los siguientes valores:- A
com.adobe.idp.Documentobjeto que representa el documento DDX creado dinámicamente - A
java.util.Mapobjeto que contiene el documento del PDF que se va a desmontar - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpecobjeto que especifica las opciones de tiempo de ejecución, incluyendo la fuente predeterminada y el nivel de registro de trabajo
La variable
invokeDDXel método devuelve uncom.adobe.livecycle.assembler.client.AssemblerResultque contiene los documentos de PDF desmontados y cualquier excepción que se haya producido. - A
-
Guarde los documentos de PDF desmontados.
Para obtener los documentos de PDF desmontados, realice las siguientes acciones:
- Invocar el
AssemblerResultdel objetogetDocumentsmétodo. Este método devuelve unjava.util.Mapobjeto. - Iterar a través de la variable
java.util.Maphasta que encuentre el resultadocom.adobe.idp.Documentobjeto. - Invocar el
com.adobe.idp.Documentdel objetocopyToFilemétodo para extraer el documento PDF.
- Invocar el
Consulte también
Inicio rápido (modo SOAP): Creación dinámica de un documento DDX mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Creación dinámica de un documento DDX mediante la API de servicio web dynamically-create-a-ddx-document-using-the-web-service-api
Cree dinámicamente un documento DDX y desmonte un documento PDF utilizando la API de servicio del ensamblador (servicio web):
-
Incluir archivos de proyecto.
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL al configurar una referencia de servicio:
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.note note NOTE Reemplazar localhostcon la dirección IP del servidor que hospeda AEM Forms. -
Cree un cliente de ensamblador de PDF.
-
Cree un
AssemblerServiceClientusando su constructor predeterminado. -
Cree un
AssemblerServiceClient.Endpoint.Addressusando la variableSystem.ServiceModel.EndpointAddressconstructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/AssemblerService?blob=mtom). No es necesario que use la variablelc_versionatributo. Este atributo se utiliza al crear una referencia de servicio. -
Cree un
System.ServiceModel.BasicHttpBindingobteniendo el valor deAssemblerServiceClient.Endpoint.Bindingcampo . Conversión del valor devuelto aBasicHttpBinding. -
Configure las variables
System.ServiceModel.BasicHttpBindingdel objetoMessageEncodingcampo aWSMessageEncoding.Mtom. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
AssemblerServiceClient.ClientCredentials.UserName.UserName. - Asignar el valor de contraseña correspondiente al campo
AssemblerServiceClient.ClientCredentials.UserName.Password. - Asignar el valor constante
HttpClientCredentialType.Basical campoBasicHttpBindingSecurity.Transport.ClientCredentialType. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnlyal campoBasicHttpBindingSecurity.Security.Mode.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Cree el documento DDX.
-
Cree un
System.Xml.XmlElementusando su constructor. -
Cree el elemento raíz del documento DDX invocando la variable
XmlElementdel objetoCreateElementmétodo. Este método crea unElementobjeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElementmétodo. Establezca un valor para el elemento DDX llamando a suSetAttributemétodo. Finalmente, anexe el elemento al documento DDX llamando a la variableXmlElementdel objetoAppendChildmétodo. Pase el objeto DDX como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root); -
Creación del documento DDX
PDFsFromBookmarksllamando alXmlElementdel objetoCreateElementmétodo. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElementmétodo. A continuación, establezca un valor para el elemento llamando a suSetAttributemétodo. Anexe la variablePDFsFromBookmarksal elemento raíz llamando a la funciónDDXdel elementoAppendChildmétodo. Pase elPDFsFromBookmarksobjeto element como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks); -
Creación del documento DDX
PDFllamando alXmlElementdel objetoCreateElementmétodo. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElementmétodo. A continuación, establezca un valor para el elemento secundario llamando a suSetAttributemétodo. Anexe la variablePDFalPDFsFromBookmarksllamando alPDFsFromBookmarksdel elementoAppendChildmétodo. Pase elPDFobjeto element como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Convierta el documento DDX.
-
Cree un
System.IO.MemoryStreamusando su constructor. -
Rellene el
MemoryStreamcon el documento DDX utilizando la variableXmlElementque representa el documento DDX. Invocar elXmlElementdel objetoSavey pase elMemoryStreamobjeto. -
Cree una matriz de bytes y rellénela con datos ubicados en la variable
MemoryStreamobjeto. El siguiente código muestra esta lógica de aplicación:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen); -
Cree un
BLOBobjeto. Asigne la matriz de bytes a la variableBLOBdel objetoMTOMcampo .
-
-
Haga referencia a un documento del PDF para desmontarlo.
- Cree un
BLOBusando su constructor. La variableBLOBse utiliza para almacenar el documento del PDF de entrada. EstaBLOBse pasa alinvokeOneDocumentcomo argumento. - Cree un
System.IO.FileStreaminvocando su constructor. Pase un valor de cadena que represente la ubicación del archivo del documento del PDF de entrada y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStreamobjeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStreamdel objetoLengthpropiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStreamdel objetoReady pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOBasignando suMTOMpropiedad del contenido de la matriz de bytes.
- Cree un
-
Establezca las opciones de tiempo de ejecución.
- Cree un
AssemblerOptionSpecque almacena opciones en tiempo de ejecución mediante su constructor. - Configure las opciones en tiempo de ejecución para satisfacer los requisitos empresariales asignando un valor a un miembro de datos que pertenezca al grupo
AssemblerOptionSpecobjeto. Por ejemplo, para solicitar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, asignefalseaAssemblerOptionSpecdel objetofailOnErrormiembro de datos.
- Cree un
-
Desmonte el documento del PDF.
Invocar el
AssemblerServiceClientdel objetoinvokeDDXy pase los siguientes valores:- A
BLOBobjeto que representa el documento DDX creado dinámicamente - La variable
mapItemmatriz que contiene el documento del PDF de entrada - Un
AssemblerOptionSpecobjeto que especifica opciones en tiempo de ejecución
La variable
invokeDDXdevuelve un valorAssemblerResultque contiene los resultados del trabajo y cualquier excepción que se haya producido. - A
-
Guarde los documentos de PDF desmontados.
Para obtener los documentos de PDF recién creados, realice las siguientes acciones:
- Acceda a la
AssemblerResultdel objetodocuments, que es unMapque contiene los documentos de PDF desmontados. - Iterar a través de la variable
Mappara obtener cada documento resultante. A continuación, cree elvalueaBLOB. - Extraiga los datos binarios que representan el documento del PDF accediendo a su
BLOBdel objetoMTOMpropiedad. Esto devuelve una matriz de bytes que puede escribir en un archivo PDF.
- Acceda a la
Consulte también
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef