Creación dinámica de documentos DDX
Creado para:
- Developer
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
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
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
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
AssemblerServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Cree el documento DDX.
-
Creación de un Java
DocumentBuilderFactory
llamando alDocumentBuilderFactory
class"newInstance
método. -
Creación de un Java
DocumentBuilder
llamando alDocumentBuilderFactory
del objetonewDocumentBuilder
método. -
Llame a la función
DocumentBuilder
del objetonewDocument
para crear una instancia deorg.w3c.dom.Document
objeto. -
Cree el elemento raíz del documento DDX invocando la variable
org.w3c.dom.Document
del objetocreateElement
método. Este método crea unElement
objeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, establezca un valor para el elemento secundario llamando a susetAttribute
método. Finalmente, anexe el elemento al elemento del encabezado llamando al elemento del encabezadoappendChild
y 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
PDFsFromBookmarks
llamando alDocument
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. Establezca un valor para la variablePDFsFromBookmarks
llamando a susetAttribute
método. Anexe la variablePDFsFromBookmarks
alDDX
llamando al elemento DDX deappendChild
método. Pase elPDFsFromBookmarks
objeto 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
PDF
llamando alDocument
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement
. Establezca un valor para la variablePDF
llamando a susetAttribute
método. Anexe la variablePDF
alPDFsFromBookmarks
llamando alPDFsFromBookmarks
del elementoappendChild
método. Pase elPDF
objeto 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.Transformer
invocando el objetojavax.xml.transform.Transformer
estático del objetonewInstance
método. - Cree un
Transformer
invocando el objetoTransformerFactory
del objetonewTransformer
método. - Cree un
ByteArrayOutputStream
usando su constructor. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor. Pase elorg.w3c.dom.Document
que representa el documento DDX. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor y pasando elByteArrayOutputStream
objeto. - Rellenar el Java
ByteArrayOutputStream
invocando el objetojavax.xml.transform.Transformer
del objetotransform
método. Pase eljavax.xml.transform.dom.DOMSource
yjavax.xml.transform.stream.StreamResult
objetos. - Cree una matriz de bytes y asigne el tamaño de la variable
ByteArrayOutputStream
a la matriz de bytes. - Rellene la matriz de bytes invocando la variable
ByteArrayOutputStream
del objetotoByteArray
método. - Cree un
com.adobe.idp.Document
usando su constructor y pasando la matriz de bytes.
- Cree un
-
Haga referencia a un documento del PDF para desmontarlo.
-
Cree un
java.util.Map
objeto que se utiliza para almacenar documentos del PDF de entrada mediante unHashMap
constructor. -
Cree un
java.io.FileInputStream
utilizando su constructor y pasando la ubicación del documento PDF para desmontarlo. -
Cree un
com.adobe.idp.Document
objeto. Pase eljava.io.FileInputStream
objeto que contiene el documento PDF que se va a desmontar. -
Agregue una entrada al
java.util.Map
invocando suput
y 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.Document
objeto 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
AssemblerOptionSpec
que 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
AssemblerOptionSpec
objeto. Por ejemplo, para solicitar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, invoque la funciónAssemblerOptionSpec
del objetosetFailOnError
método y pasefalse
.
- Cree un
-
Desmonte el documento del PDF.
Invocar el
AssemblerServiceClient
del objetoinvokeDDX
y pase los siguientes valores:- A
com.adobe.idp.Document
objeto que representa el documento DDX creado dinámicamente - A
java.util.Map
objeto que contiene el documento del PDF que se va a desmontar - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
objeto que especifica las opciones de tiempo de ejecución, incluyendo la fuente predeterminada y el nivel de registro de trabajo
La variable
invokeDDX
el método devuelve uncom.adobe.livecycle.assembler.client.AssemblerResult
que 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
AssemblerResult
del objetogetDocuments
método. Este método devuelve unjava.util.Map
objeto. - Iterar a través de la variable
java.util.Map
hasta que encuentre el resultadocom.adobe.idp.Document
objeto. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
mé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
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
.NOTEReemplazarlocalhost
con la dirección IP del servidor que hospeda AEM Forms. -
Cree un cliente de ensamblador de PDF.
-
Cree un
AssemblerServiceClient
usando su constructor predeterminado. -
Cree un
AssemblerServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. 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_version
atributo. Este atributo se utiliza al crear una referencia de servicio. -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deAssemblerServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo 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.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Cree el documento DDX.
-
Cree un
System.Xml.XmlElement
usando su constructor. -
Cree el elemento raíz del documento DDX invocando la variable
XmlElement
del objetoCreateElement
método. Este método crea unElement
objeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElement
método. Establezca un valor para el elemento DDX llamando a suSetAttribute
método. Finalmente, anexe el elemento al documento DDX llamando a la variableXmlElement
del objetoAppendChild
mé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
PDFsFromBookmarks
llamando alXmlElement
del objetoCreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElement
método. A continuación, establezca un valor para el elemento llamando a suSetAttribute
método. Anexe la variablePDFsFromBookmarks
al elemento raíz llamando a la funciónDDX
del elementoAppendChild
método. Pase elPDFsFromBookmarks
objeto 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
PDF
llamando alXmlElement
del objetoCreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variableCreateElement
método. A continuación, establezca un valor para el elemento secundario llamando a suSetAttribute
método. Anexe la variablePDF
alPDFsFromBookmarks
llamando alPDFsFromBookmarks
del elementoAppendChild
método. Pase elPDF
objeto 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.MemoryStream
usando su constructor. -
Rellene el
MemoryStream
con el documento DDX utilizando la variableXmlElement
que representa el documento DDX. Invocar elXmlElement
del objetoSave
y pase elMemoryStream
objeto. -
Cree una matriz de bytes y rellénela con datos ubicados en la variable
MemoryStream
objeto. 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
BLOB
objeto. Asigne la matriz de bytes a la variableBLOB
del objetoMTOM
campo .
-
-
Haga referencia a un documento del PDF para desmontarlo.
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar el documento del PDF de entrada. EstaBLOB
se pasa alinvokeOneDocument
como argumento. - Cree un
System.IO.FileStream
invocando 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.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes.
- Cree un
-
Establezca las opciones de tiempo de ejecución.
- Cree un
AssemblerOptionSpec
que 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
AssemblerOptionSpec
objeto. Por ejemplo, para solicitar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, asignefalse
aAssemblerOptionSpec
del objetofailOnError
miembro de datos.
- Cree un
-
Desmonte el documento del PDF.
Invocar el
AssemblerServiceClient
del objetoinvokeDDX
y pase los siguientes valores:- A
BLOB
objeto que representa el documento DDX creado dinámicamente - La variable
mapItem
matriz que contiene el documento del PDF de entrada - Un
AssemblerOptionSpec
objeto que especifica opciones en tiempo de ejecución
La variable
invokeDDX
devuelve un valorAssemblerResult
que 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
AssemblerResult
del objetodocuments
, que es unMap
que contiene los documentos de PDF desmontados. - Iterar a través de la variable
Map
para obtener cada documento resultante. A continuación, cree elvalue
aBLOB
. - Extraiga los datos binarios que representan el documento del PDF accediendo a su
BLOB
del objetoMTOM
propiedad. Esto devuelve una matriz de bytes que puede escribir en un archivo PDF.
- Acceda a la