Los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
Puede crear dinámicamente un documento DDX que se pueda utilizar para realizar una operación de Assembler. La creación dinámica de un documento DDX permite utilizar valores en el documento DDX que se obtienen durante el tiempo de 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 utilizando Java, utilice clases que pertenezcan a org.w3c.dom.*
paquete. Del mismo modo, si utiliza Microsoft .NET, utilice clases que pertenezcan a la variable System.Xml
namespace.
Antes de poder pasar el documento DDX al servicio Assembler, convierta el XML de un org.w3c.dom.Document
instancia a com.adobe.idp.Document
ejemplo. Si utiliza servicios web, convierta el XML del tipo de datos utilizado para crear el XML (por ejemplo, XmlDocument
) a un BLOB
ejemplo.
Para esta discusión, suponga que el siguiente documento DDX se crea dinámicamente.
<?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 de PDF. Se recomienda que esté familiarizado con el desmontaje de documentos del PDF.
Para obtener más información sobre el servicio Assembler, consulte Referencia de servicios para AEM Forms.
Para obtener más información sobre un documento DDX, consulte Servicio Assembler y referencia DDX.
Para desmontar un documento de PDF mediante un documento DDX creado dinámicamente, realice las siguientes tareas:
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente con 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:
Crear un cliente de PDF Assembler
Para poder realizar mediante programación una operación de Assembler, cree un cliente de servicio Assembler.
Creación del documento DDX
Cree un documento DDX utilizando el lenguaje de programación que está utilizando. Para crear un documento DDX que desensambla un documento de PDF, asegúrese de que contiene el PDFsFromBookmarks
Elemento. Convierta el tipo de datos utilizado para crear el documento DDX en un com.adobe.idp.Document
instancia de si utiliza la API de Java. Si utiliza servicios web, convierta el tipo de datos a un BLOB
ejemplo.
Conversión del documento DDX
Un documento DDX creado mediante org.w3c.dom
las clases deben convertirse en un com.adobe.idp.Document
objeto. Para realizar esta tarea al utilizar la API de Java, utilice las clases de transformación XML de Java. Si utiliza servicios web, convierta el documento DDX en un BLOB
objeto.
Hacer referencia a un documento de PDF para desmontar
Para desmontar un documento de PDF, haga referencia a un fichero de PDF que represente el documento de PDF que se va a desmontar. Cuando se pasa al servicio Assembler, se devuelve un documento de PDF independiente para cada marcador de nivel 1 del documento.
Establecer opciones en tiempo de ejecución
Puede establecer opciones en tiempo de ejecución que controlen el comportamiento del servicio Assembler mientras realiza un trabajo. Por ejemplo, puede establecer una opción que indique al servicio Assembler que continúe procesando un trabajo si se produce un error. Para establecer las opciones en tiempo de ejecución, se utiliza un AssemblerOptionSpec
objeto.
Desmontar el documento del PDF
Desmontar el documento del PDF invocando el invokeDDX
operación. Pase el documento DDX creado dinámicamente. El servicio Assembler devuelve documentos de PDF desensamblados dentro de un objeto de colección.
Guardar los documentos de PDF desensamblados
Todos los documentos de PDF desensamblados se devuelven dentro de un objeto de colección. Recorra en iteración el objeto de colección y guarde cada documento de PDF como un archivo de PDF.
Consulte también
Crear dinámicamente un documento DDX mediante la API de Java
Crear dinámicamente un documento DDX mediante la API de servicio web
Incluir archivos de biblioteca Java de AEM Forms
Estableciendo propiedades de conexión
Desmontaje programático de documentos PDF
Cree de forma dinámica un documento DDX y desmonte un documento de PDF mediante la API del servicio Assembler (Java):
Incluir archivos de proyecto.
Incluya archivos JAR de cliente, como adobe-assembler-client.jar, en la ruta de clase del proyecto Java.
Cree un cliente de PDF Assembler.
ServiceClientFactory
que contiene las propiedades de conexión.AssemblerServiceClient
usando su constructor y pasando el objeto ServiceClientFactory
objeto.Cree el documento DDX.
Crear un Java DocumentBuilderFactory
llamando a la función DocumentBuilderFactory
class' newInstance
método.
Crear un Java DocumentBuilder
llamando a la función DocumentBuilderFactory
del objeto newDocumentBuilder
método.
Llame a DocumentBuilder
del objeto newDocument
método para crear una instancia de org.w3c.dom.Document
objeto.
Cree el elemento raíz del documento DDX invocando el org.w3c.dom.Document
del objeto createElement
método. Este método crea un Element
que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a createElement
método. Convierta el valor devuelto en Element
. A continuación, establezca un valor para el elemento secundario llamando a su setAttribute
método. Finalmente, anexe el elemento al elemento header llamando al método appendChild
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 el PDFsFromBookmarks
llamando a la variable Document
del objeto createElement
método. Pase un valor de cadena que represente el nombre del elemento a createElement
método. Convierta el valor devuelto en Element
. Establezca un valor para PDFsFromBookmarks
llamando a su elemento setAttribute
método. Adjuntar el PDFsFromBookmarks
al elemento DDX
llamando al elemento DDX de appendChild
método. Pase el PDFsFromBookmarks
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);
Crear un PDF
llamando a la variable Document
del objeto createElement
método. Pase un valor de cadena que represente el nombre del elemento. Convierta el valor devuelto en Element
. Establezca un valor para PDF
llamando a su elemento setAttribute
método. Adjuntar el PDF
al elemento PDFsFromBookmarks
llamando a la variable PDFsFromBookmarks
del elemento appendChild
método. Pase el PDF
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.
javax.xml.transform.Transformer
invocando el objeto de javax.xml.transform.Transformer
objeto estático newInstance
método.Transformer
invocando el objeto de TransformerFactory
del objeto newTransformer
método.ByteArrayOutputStream
mediante su constructor.javax.xml.transform.dom.DOMSource
mediante su constructor. Pase el org.w3c.dom.Document
que representa el documento DDX.javax.xml.transform.dom.DOMSource
usando su constructor y pasando el objeto ByteArrayOutputStream
objeto.ByteArrayOutputStream
invocando el objeto de javax.xml.transform.Transformer
del objeto transform
método. Pase el javax.xml.transform.dom.DOMSource
y el javax.xml.transform.stream.StreamResult
objetos.ByteArrayOutputStream
a la matriz de bytes.ByteArrayOutputStream
del objeto toByteArray
método.com.adobe.idp.Document
mediante su constructor y pasando la matriz de bytes.Hacer referencia a un documento de PDF para desmontar.
Crear un java.util.Map
objeto que se utiliza para almacenar documentos del PDF de entrada mediante un HashMap
constructor.
Crear un java.io.FileInputStream
utilizando su constructor y pasando la ubicación del documento de PDF que se va a desmontar.
Crear un com.adobe.idp.Document
objeto. Pase el java.io.FileInputStream
que contiene el documento de PDF que se va a desmontar.
Añada una entrada a java.util.Map
invocando su objeto put
y pasando los siguientes argumentos:
AssemblerResultPDF.pdf
.)com.adobe.idp.Document
que contiene el documento de PDF que se va a desmontar.Establecer opciones en tiempo de ejecución.
AssemblerOptionSpec
que almacena las opciones en tiempo de ejecución mediante su constructor.AssemblerOptionSpec
objeto. Por ejemplo, para indicar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, invoque el AssemblerOptionSpec
del objeto setFailOnError
método y pase false
.Desmontar el documento del PDF.
Invoque el AssemblerServiceClient
del objeto invokeDDX
y pasar los siguientes valores:
com.adobe.idp.Document
que representa el documento DDX creado dinámicamentejava.util.Map
que contiene el documento de PDF que se va a desmontarcom.adobe.livecycle.assembler.client.AssemblerOptionSpec
que especifica las opciones en tiempo de ejecución, incluida la fuente predeterminada y el nivel de registro de trabajoEl invokeDDX
El método devuelve un valor com.adobe.livecycle.assembler.client.AssemblerResult
que contiene los documentos de PDF desensamblados y las excepciones que se han producido.
Guarde los documentos del PDF desmontados.
Para obtener los documentos de PDF desmontados, realice las siguientes acciones:
AssemblerResult
del objeto getDocuments
método. Este método devuelve un java.util.Map
objeto.java.util.Map
hasta que encuentre el resultado com.adobe.idp.Document
objeto.com.adobe.idp.Document
del objeto copyToFile
para extraer el documento del PDF.Consulte también
Inicio rápido (modo SOAP): Creación dinámica de un documento DDX mediante la API de Java
Incluir archivos de biblioteca Java de AEM Forms
Estableciendo propiedades de conexión
Cree de forma dinámica un documento DDX y desmonte un documento de PDF mediante la API del servicio Assembler (servicio web):
Incluir archivos de proyecto.
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición de WSDL al configurar una referencia de servicio: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Reemplazar localhost
con la dirección IP del servidor que aloja AEM Forms.
Cree un cliente de PDF Assembler.
Crear un AssemblerServiceClient
mediante su constructor predeterminado.
Crear un AssemblerServiceClient.Endpoint.Address
mediante el uso del objeto System.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio AEM Forms (por ejemplo, http://localhost:8080/soap/services/AssemblerService?blob=mtom
). No es necesario que utilice el lc_version
atributo. Este atributo se utiliza al crear una referencia de servicio.
Crear un System.ServiceModel.BasicHttpBinding
al obtener el valor de la variable AssemblerServiceClient.Endpoint.Binding
field. Convierta el valor devuelto en BasicHttpBinding
.
Configure las variables System.ServiceModel.BasicHttpBinding
del objeto MessageEncoding
field a WSMessageEncoding.Mtom
. Este valor garantiza que se utiliza MTOM.
Habilite la autenticación HTTP básica realizando las siguientes tareas:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
al campo BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
al campo BasicHttpBindingSecurity.Security.Mode
.Cree el documento DDX.
Crear un System.Xml.XmlElement
mediante su constructor.
Cree el elemento raíz del documento DDX invocando el XmlElement
del objeto CreateElement
método. Este método crea un Element
que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a CreateElement
método. Establezca un valor para el elemento DDX llamando a su SetAttribute
método. Finalmente, anexe el elemento al documento DDX llamando a la función XmlElement
del objeto AppendChild
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);
Cree el documento DDX de PDFsFromBookmarks
llamando a la variable XmlElement
del objeto CreateElement
método. Pase un valor de cadena que represente el nombre del elemento a CreateElement
método. A continuación, establezca un valor para el elemento llamando a su SetAttribute
método. Adjuntar el PDFsFromBookmarks
al elemento raíz llamando a la variable DDX
del elemento AppendChild
método. Pase el PDFsFromBookmarks
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);
Cree el documento DDX de PDF
llamando a la variable XmlElement
del objeto CreateElement
método. Pase un valor de cadena que represente el nombre del elemento a CreateElement
método. A continuación, establezca un valor para el elemento secundario llamando a su SetAttribute
método. Adjuntar el PDF
al elemento PDFsFromBookmarks
llamando a la variable PDFsFromBookmarks
del elemento AppendChild
método. Pase el PDF
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.
Crear un System.IO.MemoryStream
mediante su constructor.
Rellene el MemoryStream
con el documento DDX utilizando el objeto XmlElement
que representa el documento DDX. Invoque el XmlElement
del objeto Save
y pase el MemoryStream
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);
Crear un BLOB
objeto. Asigne la matriz de bytes al BLOB
del objeto MTOM
field.
Hacer referencia a un documento de PDF para desmontar.
BLOB
mediante su constructor. El BLOB
se utiliza para almacenar el documento del PDF de entrada. Esta BLOB
El objeto se pasa a invokeOneDocument
como argumento.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 abrirá el archivo.System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo el System.IO.FileStream
del objeto Length
propiedad.System.IO.FileStream
del objeto Read
y pasando la matriz de bytes, la posición inicial y la longitud de la secuencia que se va a leer.BLOB
al asignar su MTOM
propiedad el contenido de la matriz de bytes.Establecer opciones en tiempo de ejecución.
AssemblerOptionSpec
que almacena las opciones en tiempo de ejecución mediante su constructor.AssemblerOptionSpec
objeto. Por ejemplo, para indicar al servicio Assembler que continúe procesando un trabajo cuando se produzca un error, asigne a false
a la AssemblerOptionSpec
del objeto failOnError
miembro de datos.Desmontar el documento del PDF.
Invoque el AssemblerServiceClient
del objeto invokeDDX
y pasar los siguientes valores:
BLOB
que representa el documento DDX creado dinámicamentemapItem
matriz que contiene el documento del PDF de entradaAssemblerOptionSpec
objeto que especifica opciones en tiempo de ejecuciónEl invokeDDX
El método devuelve un AssemblerResult
que contiene los resultados del trabajo y las excepciones que se han producido.
Guarde los documentos del PDF desmontados.
Para obtener los documentos del PDF recién creados, realice las siguientes acciones:
AssemblerResult
del objeto documents
, que es un Map
que contiene los documentos de PDF desensamblados.Map
para obtener cada documento resultante. A continuación, convierta el de ese miembro de la matriz value
a un BLOB
.BLOB
del objeto MTOM
propiedad. Devuelve una matriz de bytes que puede escribir en un archivo PDF.Consulte también
Invocar AEM Forms mediante MTOM
Invocar AEM Forms mediante SwaRef