Procesar formularios en el cliente rendering-forms-at-the-client
Las muestras y los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
Procesar formularios en el cliente rendering-forms-at-the-client-inner
Puede optimizar la entrega de contenido de PDF y mejorar la capacidad del servicio Forms para gestionar la carga de red mediante la capacidad de procesamiento del lado del cliente de Acrobat o Adobe Reader. Este proceso se conoce como procesar un formulario en el cliente. Para procesar un formulario en el cliente, el dispositivo cliente (normalmente un explorador web) debe utilizar Acrobat 7.0 o Adobe Reader 7.0 o posterior.
Los cambios realizados en un formulario como resultado de la ejecución de scripts del lado del servidor no se reflejan en un formulario que se procese en el cliente a menos que el subformulario raíz contenga el atributo restoreState
establecido en auto
. Para obtener más información acerca de este atributo, vea Forms Designer.
Resumen de los pasos summary-of-steps
Para procesar un formulario en el cliente, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de Forms.
- Establecer las opciones de tiempo de ejecución de procesamiento de cliente.
- Procesar un formulario en el cliente.
- Escriba el formulario en el explorador web del cliente.
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 realizar mediante programación una operación de API de cliente de servicio de Forms, debe crear un cliente de servicio de Forms. Si está usando la API de Java, cree un objeto FormsServiceClient
. Si está usando la API del servicio web de Forms, cree un objeto FormsService
.
Establecer opciones de tiempo de ejecución de procesamiento de cliente
Establezca la opción de tiempo de ejecución de representación de cliente para procesar un formulario en el cliente estableciendo la opción de tiempo de ejecución RenderAtClient
en true
. Esto hace que el formulario se envíe al dispositivo cliente donde se representa. Si RenderAtClient
es auto
(el valor predeterminado), el diseño de formulario determina si el formulario se procesará en el cliente. El diseño de formulario debe ser un diseño de formulario con un diseño fluido.
Una opción de tiempo de ejecución opcional que puede establecer es la opción SeedPDF
. La opción SeedPDF
combina el contenedor de PDF (documento de PDF semilla) con el diseño de formulario y los datos XML. Tanto el diseño de formulario como los datos XML se envían a Acrobat o Adobe Reader, donde se procesa el formulario. La opción SeedPDF
se puede usar cuando el equipo cliente no tiene fuentes que se usen en el formulario, como cuando un usuario final no tiene licencia para usar una fuente para la que el propietario del formulario tiene licencia.
Puede utilizar Designer para crear un archivo de PDF dinámico simple para utilizarlo como archivo de PDF semilla. Se requieren los siguientes pasos para realizar esta tarea:
- Determine si necesita incrustar alguna fuente dentro del archivo del PDF semilla. El archivo del PDF semilla debe contener las fuentes adicionales que requiere el formulario que se está procesando. Al incrustar fuentes en el archivo del PDF semilla, asegúrese de que no infringe ningún acuerdo de licencia de fuentes. En Designer, puede determinar si puede incrustar fuentes legalmente. Al guardar, si hay fuentes que no se pueden incrustar en el formulario, Designer muestra un mensaje con las fuentes que no se pueden incrustar. Este mensaje no se muestra en Designer para documentos de PDF estáticos.
- Si está creando el archivo del PDF semilla en Designer, se recomienda que, como mínimo, añada un campo de texto que contenga un mensaje. El mensaje debe dirigirse a los usuarios de versiones anteriores de Adobe Reader para informarles de que necesitan Acrobat 7.0 o posterior, o Adobe Reader 7.0 o posterior, para ver el documento.
- Guarde el archivo del PDF semilla como un archivo de PDF dinámico con la extensión de nombre de archivo del PDF.
Procesar un formulario en el cliente
Para procesar un formulario en el cliente, debe asegurarse de que las opciones de tiempo de ejecución de procesamiento del cliente estén incluidas en la lógica de la aplicación para procesar un formulario.
Escriba el flujo de datos del formulario en el explorador web del cliente
El servicio Forms crea 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 se procesa mediante Acrobat 7.0 o Adobe Reader 7.0 o posterior y es visible para el usuario.
Consulte también
Procesar un formulario en el cliente mediante la API de Java
Procesar un formulario en el cliente 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
Procesar un formulario en el cliente mediante la API de Java render-a-form-at-the-client-using-the-java-api
Procesar un formulario en el cliente 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
- Cree un objeto
ServiceClientFactory
que contenga propiedades de conexión. - Cree un objeto
FormsServiceClient
utilizando su constructor y pasando el objetoServiceClientFactory
.
- Cree un objeto
-
Establecer opciones de tiempo de ejecución de procesamiento de cliente
- Crear un objeto
PDFFormRenderSpec
mediante su constructor. - Establezca la opción de tiempo de ejecución
RenderAtClient
invocando el métodosetRenderAtClient
del objetoPDFFormRenderSpec
y pasando el valor de enumeraciónRenderAtClient.Yes
.
- Crear un objeto
-
Procesar un formulario en el cliente
Invoque el método
renderPDFForm
del objetoFormsServiceClient
y pase los siguientes valores:- Un valor de cadena que especifica el nombre del diseño del formulario, incluida la extensión del nombre de archivo. Si hace referencia a un diseño de formulario que forma parte de una aplicación de AEM Forms, asegúrese de especificar la ruta de acceso completa, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Objeto
com.adobe.idp.Document
que contiene datos para combinar con el formulario. Si no desea combinar datos, pase un objetocom.adobe.idp.Document
vacío. - Un objeto
PDFFormRenderSpec
que almacena las opciones en tiempo de ejecución necesarias para procesar un formulario en el cliente. - Un objeto
URLSpec
que contiene valores de URI requeridos por el servicio Forms para procesar un formulario. - Objeto
java.util.HashMap
que almacena datos adjuntos de archivos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario.
El método
renderPDFForm
devuelve un objetoFormsResult
que contiene una secuencia de datos de formulario que debe escribirse en el explorador web del cliente. - Un valor de cadena que especifica el nombre del diseño del formulario, incluida la extensión del nombre de archivo. Si hace referencia a un diseño de formulario que forma parte de una aplicación de AEM Forms, asegúrese de especificar la ruta de acceso completa, como
-
Escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un objeto
com.adobe.idp.Document
invocando el métodogetOutputContent
del objetoFormsResult
. - Obtenga el tipo de contenido del objeto
com.adobe.idp.Document
invocando su métodogetContentType
. - Establezca el tipo de contenido del objeto
javax.servlet.http.HttpServletResponse
invocando su métodosetContentType
y pasando el tipo de contenido del objetocom.adobe.idp.Document
. - Cree un objeto
javax.servlet.ServletOutputStream
utilizado para escribir el flujo de datos de formulario en el explorador web del cliente invocando el métodogetOutputStream
del objetojavax.servlet.http.HttpServletResponse
. - Cree un objeto
java.io.InputStream
invocando el métodogetInputStream
del objetocom.adobe.idp.Document
. - Cree una matriz de bytes y rellénela con la secuencia de datos de formulario invocando el método
read
del objetoInputStream
y pasando la matriz de bytes como argumento. - Invoque el método
write
del objetojavax.servlet.ServletOutputStream
para enviar el flujo de datos de formulario al explorador web del cliente. Pase la matriz de bytes al métodowrite
.
- Cree un objeto
Consulte también
SOAP Inicio rápido (modo de): Procesar un formulario en el cliente mediante la API de Java
Procesar un formulario en el cliente mediante la API de servicio web render-a-form-at-the-client-using-the-web-service-api
Procesar un formulario en el cliente mediante la API de Forms (servicio web):
-
Incluir archivos de proyecto
- Cree clases de proxy Java que consuman el WSDL del servicio Forms.
- Incluya las clases de proxy Java en la ruta de clase.
-
Crear un objeto de API de cliente de Forms
Cree un objeto
FormsService
y establezca los valores de autenticación. -
Establecer opciones de tiempo de ejecución de procesamiento de cliente
- Crear un objeto
PDFFormRenderSpec
mediante su constructor. - Establezca la opción de tiempo de ejecución
RenderAtClient
invocando el métodosetRenderAtClient
del objetoPDFFormRenderSpec
y pasando el valor de cadenaRenderAtClient.Yes
.
- Crear un objeto
-
Procesar un formulario en el cliente
Invoque el método
renderPDFForm
del objetoFormsService
y pase los siguientes valores:- Un valor de cadena que especifica el nombre del diseño del formulario, incluida la extensión del nombre de archivo. Si hace referencia a un diseño de formulario que forma parte de una aplicación de Forms, asegúrese de especificar la ruta de acceso completa, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Objeto
BLOB
que contiene datos para combinar con el formulario. Si no desea combinar datos, pasenull
. (Consulte Rellenado previo de Forms con diseños flexibles). - Un objeto
PDFFormRenderSpec
que almacena las opciones en tiempo de ejecución necesarias para procesar un formulario en el cliente. - Un objeto
URLSpec
que contiene valores de URI requeridos por el servicio Forms. - Objeto
java.util.HashMap
que almacena datos adjuntos de archivos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario. - Un objeto
com.adobe.idp.services.holders.BLOBHolder
vacío que ha rellenado el método. Este parámetro se utiliza para almacenar el formulario de PDF procesado. - Un objeto
javax.xml.rpc.holders.LongHolder
vacío que ha rellenado el método. (Este argumento almacenará el número de páginas en el formulario). - Un objeto
javax.xml.rpc.holders.StringHolder
vacío que ha rellenado el método. (Este argumento almacenará el valor de configuración regional). - Un objeto
com.adobe.idp.services.holders.FormsResultHolder
vacío que contendrá los resultados de esta operación.
El método
renderPDFForm
rellena el objetocom.adobe.idp.services.holders.FormsResultHolder
que se pasa como el último valor de argumento con una secuencia de datos de formulario que debe escribirse en el explorador web del cliente. - Un valor de cadena que especifica el nombre del diseño del formulario, incluida la extensión del nombre de archivo. Si hace referencia a un diseño de formulario que forma parte de una aplicación de Forms, asegúrese de especificar la ruta de acceso completa, como
-
Escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un objeto
FormResult
obteniendo el valor del miembro de datosvalue
del objetocom.adobe.idp.services.holders.FormsResultHolder
. - Cree un objeto
BLOB
que contenga datos de formulario invocando el métodogetOutputContent
del objetoFormsResult
. - Obtenga el tipo de contenido del objeto
BLOB
invocando su métodogetContentType
. - Establezca el tipo de contenido del objeto
javax.servlet.http.HttpServletResponse
invocando su métodosetContentType
y pasando el tipo de contenido del objetoBLOB
. - Cree un objeto
javax.servlet.ServletOutputStream
utilizado para escribir el flujo de datos de formulario en el explorador web del cliente invocando el métodogetOutputStream
del objetojavax.servlet.http.HttpServletResponse
. - Cree una matriz de bytes y rellénela invocando el método
getBinaryData
del objetoBLOB
. Esta tarea asigna el contenido del objetoFormsResult
a la matriz de bytes. - Invoque el método
write
del objetojavax.servlet.http.HttpServletResponse
para enviar el flujo de datos de formulario al explorador web del cliente. Pase la matriz de bytes al métodowrite
.
- Cree un objeto
Consulte también
Procesar formularios en el cliente
Invocar AEM Forms con codificación Base64