Los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
Normalmente, un diseño de formulario creado en Designer se pasa por referencia al servicio de Forms. Los diseños de formulario pueden ser grandes y, como resultado, es más eficaz pasarlos por referencia para evitar tener que calcular las referencias de los bytes de diseño de formulario por valor. El servicio Forms también puede almacenar en caché el diseño de formulario para que, cuando se almacene en caché, no tenga que leer continuamente el diseño de formulario.
Si un diseño de formulario contiene un atributo UUID, se almacena en caché. El valor UUID es único para todos los diseños de formulario y se utiliza para identificar un formulario de forma exclusiva. Al procesar un formulario por valor, el formulario solo debe almacenarse en caché cuando se utiliza repetidamente. Sin embargo, si el formulario no se utiliza repetidamente y debe ser único, puede evitar almacenar en caché el formulario mediante las opciones de almacenamiento en caché establecidas mediante la API de AEM Forms.
El servicio Forms también puede resolver la ubicación del contenido vinculado dentro del diseño de formulario. Por ejemplo, las imágenes vinculadas a las que se hace referencia desde el diseño de formulario son direcciones URL relativas. Se supone que el contenido vinculado siempre es relativo a la ubicación del diseño del formulario. Por lo tanto, para resolver el contenido vinculado es necesario determinar su ubicación aplicando la ruta relativa a la ubicación absoluta del diseño de formulario.
En lugar de pasar un diseño de formulario por referencia, puede pasar un diseño de formulario por valor. Pasar un diseño de formulario por valor es eficaz cuando se crea dinámicamente un diseño de formulario; es decir, cuando una aplicación cliente genera el XML que crea un diseño de formulario durante el tiempo de ejecución. En este caso, un diseño de formulario no se almacena en un repositorio físico porque se almacena en la memoria. Al crear dinámicamente un diseño de formulario en tiempo de ejecución y pasarlo por valor, puede almacenar en caché el formulario y mejorar el rendimiento del servicio de Forms.
Limitaciones al pasar un formulario por valor
Cuando se pasa un diseño de formulario por valor, se aplican las siguientes limitaciones:
Aunque se pueden procesar distintos tipos de formularios por valor (por ejemplo, formularios de HTML o formularios que contengan derechos de uso), en esta sección se describe la representación de PDF forms interactivos.
Para obtener más información sobre el servicio Forms, consulte Referencia de servicios para AEM Forms.
Para procesar un formulario por valor, realice los siguientes pasos:
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.
Crear un objeto de API de cliente de Forms
Para poder importar datos mediante programación en una API de cliente de formulario de PDF, debe crear un cliente de servicio de integración de datos. Al crear un cliente de servicios, define la configuración de conexión necesaria para invocar un servicio.
Hacer referencia al diseño de formulario
Al procesar un formulario por valor, debe crear un com.adobe.idp.Document
que contiene el diseño de formulario que se va a procesar. Puede hacer referencia a un archivo XDP existente o puede crear dinámicamente un diseño de formulario en tiempo de ejecución y rellenar un com.adobe.idp.Document
con esos datos.
Esta sección y el inicio rápido correspondiente hacen referencia a un archivo XDP existente.
Procesar un formulario por valor
Para procesar un formulario por valor, pase un com.adobe.idp.Document
que contiene el diseño de formulario en el método de procesamiento inDataDoc
parámetro (puede ser cualquiera de las FormsServiceClient
métodos de procesamiento del objeto, como renderPDFForm
, (Deprecated) renderHTMLForm
, etc.). Este valor de parámetro se reserva normalmente para los datos que se combinan con el formulario. Del mismo modo, pase un valor de cadena vacío a formQuery
parámetro. Normalmente, este parámetro requiere un valor de cadena que especifica el nombre del diseño de formulario.
Si desea mostrar datos dentro del formulario, los datos deben especificarse dentro del xfa:datasets
Elemento. Para obtener información acerca de la arquitectura XFA, vaya a https://www.pdfa.org/norm-refs/XFA-3_3.pdf.
Escribir el flujo de datos del formulario en el explorador web del cliente
Cuando el servicio Forms procesa un formulario por valor, devuelve un flujo de datos de formulario que debe escribir en el explorador web del cliente. Cuando se escribe en el explorador web del cliente, el formulario es visible para el usuario.
Consulte también
Procesar un formulario por valor mediante la API de Java
Procesar un formulario por valor mediante la API de servicio web
Incluir archivos de biblioteca Java de AEM Forms
Estableciendo propiedades de conexión
Inicio rápido de la API del servicio de Forms
Pasar documentos al servicio de Forms
Crear aplicaciones web que procesen Forms
Procesar un formulario por valor mediante la API de Forms (Java):
Incluir archivos de proyecto
Incluya archivos JAR de cliente, como adobe-forms-client.jar, en la ruta de clase del proyecto Java.
Crear un objeto de API de cliente de Forms
ServiceClientFactory
que contiene las propiedades de conexión.FormsServiceClient
usando su constructor y pasando el objeto ServiceClientFactory
objeto.Hacer referencia al diseño de formulario
java.io.FileInputStream
que representa el diseño de formulario que se va a procesar mediante su constructor y pasando un valor de cadena que especifica la ubicación del archivo XDP.com.adobe.idp.Document
usando su constructor y pasando el objeto java.io.FileInputStream
objeto.Procesar un formulario por valor
Invoque el FormsServiceClient
del objeto renderPDFForm
y pasar los siguientes valores:
com.adobe.idp.Document
que contiene el diseño de formulario. Normalmente, este valor de parámetro se reserva para los datos que se combinan con el formulario.PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. Este es un parámetro opcional y puede especificar null
si no desea especificar opciones en tiempo de ejecución.URLSpec
que contiene valores de URI requeridos por el servicio de Forms.java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificar null
si no desea adjuntar archivos al formulario.El renderPDFForm
El método devuelve un valor FormsResult
que contiene un flujo de datos de formulario que se puede escribir en el explorador web del cliente.
Escribir el flujo de datos del formulario en el explorador web del cliente
com.adobe.idp.Document
invocando el objeto de FormsResult
objeto ‘s getOutputContent
método.com.adobe.idp.Document
invocando su objeto getContentType
método.javax.servlet.http.HttpServletResponse
tipo de contenido del objeto invocando su setContentType
y pasando el tipo de contenido del com.adobe.idp.Document
objeto.javax.servlet.ServletOutputStream
objeto utilizado para escribir el flujo de datos de formulario en el explorador web del cliente invocando el javax.servlet.http.HttpServletResponse
del objeto getOutputStream
método.java.io.InputStream
invocando el objeto de com.adobe.idp.Document
del objeto getInputStream
método.InputStream
objeto. Invoque el InputStream
del objeto available
para obtener el tamaño del objeto InputStream
objeto.InputStream
del objeto read
y pasando la matriz de bytes como argumento.javax.servlet.ServletOutputStream
del objeto write
para enviar el flujo de datos de formulario al explorador web del cliente. Pase la matriz de bytes a write
método.Consulte también
Procesar formularios por valor
Inicio rápido (modo SOAP): Procesamiento por valor mediante la API de Java
Incluir archivos de biblioteca Java de AEM Forms
Estableciendo propiedades de conexión
Procesar un formulario por valor utilizando la API de Forms (servicio web):
Incluir archivos de proyecto
Crear un objeto de API de cliente de Forms
Crear un FormsService
y establezca los valores de autenticación.
Hacer referencia al diseño de formulario
java.io.FileInputStream
mediante su constructor. Pase un valor de cadena que especifique la ubicación del archivo XDP.BLOB
mediante su constructor. El BLOB
se utiliza para almacenar un documento de PDF cifrado con una contraseña.java.io.FileInputStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo el java.io.FileInputStream
tamaño del objeto con su available
método.java.io.FileInputStream
del objeto read
y pasando la matriz de bytes.BLOB
invocando su objeto setBinaryData
y pasando la matriz de bytes.Procesar un formulario por valor
Invoque el FormsService
del objeto renderPDFForm
y pasar los siguientes valores:
BLOB
que contiene el diseño de formulario. Normalmente, este valor de parámetro se reserva para los datos que se combinan con el formulario.PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. Este es un parámetro opcional y puede especificar null
si no desea especificar opciones en tiempo de ejecución.URLSpec
que contiene valores de URI requeridos por el servicio de Forms.java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificar null
si no desea adjuntar archivos al formulario.com.adobe.idp.services.holders.BLOBHolder
objeto que rellena el método. Se utiliza para almacenar el formulario de PDF procesado.javax.xml.rpc.holders.LongHolder
objeto que rellena el método. (Este argumento almacena el número de páginas del formulario.)javax.xml.rpc.holders.StringHolder
objeto que rellena el método. (Este argumento almacena el valor de configuración regional.)com.adobe.idp.services.holders.FormsResultHolder
que contendrá los resultados de esta operación.El renderPDFForm
rellena el método com.adobe.idp.services.holders.FormsResultHolder
que se pasa como el último valor de argumento con un flujo de datos de formulario que debe escribirse en el explorador web del cliente.
Escribir el flujo de datos del formulario en el explorador web del cliente
FormResult
al obtener el valor de la variable com.adobe.idp.services.holders.FormsResultHolder
del objeto value
miembro de datos.BLOB
que contiene datos de formulario invocando el FormsResult
del objeto getOutputContent
método.BLOB
invocando su objeto getContentType
método.javax.servlet.http.HttpServletResponse
tipo de contenido del objeto invocando su setContentType
y pasando el tipo de contenido del BLOB
objeto.javax.servlet.ServletOutputStream
objeto utilizado para escribir el flujo de datos de formulario en el explorador web del cliente invocando el javax.servlet.http.HttpServletResponse
del objeto getOutputStream
método.BLOB
del objeto getBinaryData
método. Esta tarea asigna el contenido del FormsResult
a la matriz de bytes.javax.servlet.http.HttpServletResponse
del objeto write
para enviar el flujo de datos de formulario al explorador web del cliente. Pase la matriz de bytes a write
método.Consulte también
Procesar formularios por valor
Invocar AEM Forms con codificación Base64