Administrar formularios enviados handling-submitted-forms
Las aplicaciones basadas en la Web que permiten a un usuario rellenar formularios interactivos requieren que los datos se envíen de nuevo al servidor. Con el servicio Forms, puede recuperar los datos introducidos por el usuario en un formulario interactivo. Después de recuperar los datos, puede procesarlos para satisfacer los requisitos empresariales. Por ejemplo, puede almacenar los datos en una base de datos, enviarlos a otra aplicación, enviarlos a otro servicio, combinar los datos en un diseño de formulario, mostrar los datos en un explorador Web, etc.
Los datos del formulario se envían al servicio Forms como datos XML o de PDF, una opción que se establece en Designer. Un formulario enviado como XML permite extraer valores de datos de campo individuales. Es decir, puede extraer el valor de cada campo de formulario que el usuario haya introducido en el formulario. Un formulario que se envía como datos de PDF son datos binarios, no datos XML. Puede guardar el formulario como archivo de PDF o enviarlo a otro servicio. Si desea extraer datos de un formulario enviado como XML y, a continuación, utilizar los datos del formulario para crear un documento PDF, invoque otra operación de AEM Forms. (Consulte Creación de documentos de PDF con datos XML enviados)
El diagrama siguiente muestra los datos que se están enviando a un servlet Java denominado HandleData de un formulario interactivo que se muestra en un explorador web.
En la tabla siguiente se explican los pasos del diagrama.
HandleData Servlet Java como datos XML.HandleData El servlet Java contiene lógica de aplicación para recuperar los datos.Gestión de datos XML enviados handling-submitted-xml-data
Cuando los datos del formulario se envían como XML, se pueden recuperar datos XML que representen los datos enviados. Todos los campos de formulario aparecen como nodos en un esquema XML. Los valores de nodo corresponden a los valores que el usuario ha rellenado. Considere un formulario de préstamo en el que cada campo del formulario aparece como un nodo dentro de los datos XML. El valor de cada nodo corresponde al valor que rellena el usuario. Supongamos que un usuario rellena el formulario de préstamo con datos que se muestran en el siguiente formulario.
La siguiente ilustración muestra los datos XML correspondientes que se recuperan mediante la API de cliente del servicio Forms.
Los campos del formulario de préstamo. Estos valores se pueden recuperar mediante clases XML de Java.
Gestión de los datos del PDF enviados handling-submitted-pdf-data
Considere una aplicación web que invoque el servicio Forms. Una vez que el servicio Forms procesa un formulario de PDF interactivo en un explorador web del cliente, el usuario rellena el formulario y lo envía de nuevo como datos de PDF. Cuando el servicio Forms recibe los datos del PDF, puede enviar los datos del PDF a otro servicio o guardarlos como un archivo del PDF. El diagrama siguiente muestra el flujo lógico de la aplicación.
En la tabla siguiente se describen los pasos de este diagrama.
Gestión de datos de URL UTF-16 enviados handling-submitted-url-utf-16-data
Si los datos del formulario se envían como datos de URL UTF-16, el equipo cliente requiere Adobe Reader o Acrobat 8.1 o posterior. Además, si el diseño de formulario contiene un botón de envío con datos codificados con URL (HTTP Post) y la opción de codificación de datos es UTF-16, el diseño de formulario debe modificarse en un editor de texto como el Bloc de notas. Puede establecer la opción de codificación en UTF-16LE o UTF-16BE para el botón de envío. Designer no proporciona esta funcionalidad.
Resumen de los pasos summary-of-steps
Para gestionar los formularios enviados, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de Forms.
- Recupere datos de formulario.
- Determine si el envío del formulario contiene archivos adjuntos.
- Procese los datos enviados.
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.
Creación de 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 utiliza la API de Java, cree un FormsServiceClient objeto. Si utiliza la API del servicio web de Forms, cree un FormsService objeto.
Recuperar datos de formulario
Para recuperar los datos de formulario enviados, invoque la variable FormsServiceClient del objeto processFormSubmission método. Al invocar este método, debe especificar el tipo de contenido del formulario enviado. Cuando los datos se envían desde un explorador web del cliente al servicio Forms, se pueden enviar como datos XML o de PDF. Para recuperar los datos introducidos en los campos del formulario, estos se pueden enviar como datos XML.
También puede recuperar campos de formulario de un formulario enviado como datos de PDF estableciendo las siguientes opciones en tiempo de ejecución:
- Pase el siguiente valor a la variable
processFormSubmissioncomo parámetro de tipo de contenido:CONTENT_TYPE=application/pdf. - Configure las variables
RenderOptionsSpecdel objetoPDFToXDPvalortrue - Configure las variables
RenderOptionsSpecdel objetoExportDataFormatvalorXMLData
Especifique el tipo de contenido del formulario enviado cuando invoque la variable processFormSubmission método. La siguiente lista especifica valores de tipo de contenido aplicables:
- text/xml: Representa el tipo de contenido que se utiliza cuando un formulario de PDF envía datos de formulario como XML.
- application/x-www-form-urlencoded: Representa el tipo de contenido que se utiliza cuando un formulario de HTML envía datos como XML.
- aplicación/pdf: Representa el tipo de contenido que se utiliza cuando un formulario de PDF envía datos como PDF.
application/pdf. Los PDF forms de administración enviados como XML mediante el inicio rápido de la API de Java muestran cómo gestionar los datos XML enviados desde un formulario de PDF. El tipo de contenido especificado en este inicio rápido es text/xml. Del mismo modo, los formularios del HTML de gestión enviados como XML mediante el inicio rápido de la API de Java muestran cómo gestionar los datos XML enviados desde un formulario de HTML. El tipo de contenido especificado en este inicio rápido es application/x-www-form-urlencoded.Los datos de formulario que se publicaron en el servicio de Forms se recuperan y se determina su estado de procesamiento. Es decir, cuando los datos se envían al servicio de Forms, no significa necesariamente que el servicio de Forms haya terminado de procesar los datos y que estos estén listos para procesarse. Por ejemplo, se pueden enviar datos al servicio Forms para que se pueda realizar un cálculo. Cuando se completa el cálculo, el formulario se vuelve a procesar para el usuario con los resultados de cálculo mostrados. Antes de procesar los datos enviados, se recomienda determinar si el servicio de Forms ha finalizado el procesamiento de los datos.
El servicio Forms devuelve los siguientes valores para indicar si ha finalizado el procesamiento de los datos:
- 0 (Enviar): Los datos enviados están listos para ser procesados.
- 1 (Calcular): El servicio Forms realizó una operación de cálculo en los datos y los resultados deben devolverse al usuario.
- 2 (Validar): El servicio Forms validó los datos de formulario y los resultados deben ser devueltos al usuario.
- 3 (Siguiente): La página actual ha cambiado con resultados que deben escribirse en la aplicación cliente.
- 4 (Anterior): La página actual ha cambiado con resultados que deben escribirse en la aplicación cliente.
Determinar si el envío del formulario contiene archivos adjuntos
Forms enviado al servicio de Forms puede contener archivos adjuntos. Por ejemplo, con el panel de archivos adjuntos integrado de Acrobat, un usuario puede seleccionar los archivos adjuntos que desea enviar junto con el formulario. Además, un usuario también puede seleccionar archivos adjuntos mediante una barra de herramientas de HTML que se procesa con un archivo de HTML.
Después de determinar si un formulario contiene archivos adjuntos, puede procesar los datos. Por ejemplo, puede guardar el archivo adjunto en el sistema de archivos local.
Procesamiento de los datos enviados
Según el tipo de contenido de los datos enviados, puede extraer valores de campo de formulario individuales de los datos XML enviados o guardar los datos de PDF enviados como archivo de PDF (o enviarlos a otro servicio). Para extraer campos de formulario individuales, convierta los datos XML enviados a un origen de datos XML y, a continuación, recupere los valores de orígenes de datos XML utilizando org.w3c.dom clases .
Consulte también
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Inicio rápido de la API del servicio de Forms
Pasar documentos al servicio de Forms
Creación de aplicaciones web que procesen Forms
Administrar formularios enviados mediante la API de Java handle-submitted-forms-using-the-java-api
Gestione un formulario enviado mediante la API de Forms (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-forms-client.jar, en la ruta de clase de su proyecto Java.
-
Creación de un objeto de API de cliente de Forms
- Cree un
ServiceClientFactoryobjeto que contiene propiedades de conexión. - Cree un
FormsServiceClientusando su constructor y pasando elServiceClientFactoryobjeto.
- Cree un
-
Recuperar datos de formulario
- Para recuperar datos de formulario publicados en un servlet Java, cree un
com.adobe.idp.Documentusando su constructor e invocando la variablejavax.servlet.http.HttpServletResponsedel objetogetInputStreamdesde dentro del constructor. - Cree un
RenderOptionsSpecusando su constructor. Establezca el valor de configuración regional invocando la variableRenderOptionsSpecdel objetosetLocaley pasando un valor de cadena que especifica el valor de configuración regional.
note note NOTE Puede indicar al servicio de Forms que cree datos XDP o XML a partir del contenido del PDF enviado invocando la variable RenderOptionsSpecdel objetosetPDF2XDPmétodo y pasotruey también llamando asetXMLDatay pasartrue. A continuación, puede invocar la variableFormsResultdel objetogetOutputXMLpara recuperar los datos XML que corresponden a los datos XDP/XML. (ElFormsResultel objeto es devuelto por elprocessFormSubmission* , que se explica en el siguiente subpaso.)*-
Invocar el
FormsServiceClientdel objetoprocessFormSubmissiony pase los siguientes valores:- La variable
com.adobe.idp.Documentobjeto que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno, incluidos todos los encabezados HTTP relevantes. Especifique el tipo de contenido que se va a gestionar. Para gestionar datos XML, especifique el siguiente valor de cadena para este parámetro:
CONTENT_TYPE=text/xml. Para gestionar los datos del PDF, especifique el siguiente valor de cadena para este parámetro:CONTENT_TYPE=application/pdf. - Un valor de cadena que especifica la variable
HTTP_USER_AGENTvalor de encabezado, por ejemplo, .Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). Este valor de parámetro es opcional. - A
RenderOptionsSpecque almacena opciones en tiempo de ejecución.
La variable
processFormSubmissionel método devuelve unFormsResultque contiene los resultados del envío del formulario. - La variable
-
Determine si el servicio Forms ha terminado de procesar los datos del formulario invocando la variable
FormsResultdel objetogetActionmétodo. Si este método devuelve el valor0, los datos están listos para procesarse.
- Para recuperar datos de formulario publicados en un servlet Java, cree un
-
Determinar si el envío del formulario contiene archivos adjuntos
- Invocar el
FormsResultdel objetogetAttachmentsmétodo. Este método devuelve unjava.util.Listobjeto que contiene archivos enviados con el formulario. - Iterar a través de la variable
java.util.Listpara determinar si hay archivos adjuntos. Si hay archivos adjuntos, cada elemento es uncom.adobe.idp.Documentinstancia. Puede guardar los archivos adjuntos invocando la variablecom.adobe.idp.Documentdel objetocopyToFilemétodo y pasar unajava.io.Fileobjeto.
note note NOTE Este paso solo es aplicable si el formulario se envía como PDF. - Invocar el
-
Procesamiento de los datos enviados
-
Si el tipo de contenido de datos es
application/vnd.adobe.xdp+xmlotext/xml, cree lógica de aplicación para recuperar valores de datos XML.- Cree un
com.adobe.idp.Documentinvocando el objetoFormsResultdel objetogetOutputContentmétodo. - Cree un
java.io.InputStreaminvocando el objetojava.io.DataInputStreamconstructor y pasar elcom.adobe.idp.Documentobjeto. - Cree un
org.w3c.dom.DocumentBuilderFactoryllamando al objeto estáticoorg.w3c.dom.DocumentBuilderFactorydel objetonewInstancemétodo. - Cree un
org.w3c.dom.DocumentBuilderinvocando el objetoorg.w3c.dom.DocumentBuilderFactorydel objetonewDocumentBuildermétodo. - Cree un
org.w3c.dom.Documentinvocando el objetoorg.w3c.dom.DocumentBuilderdel objetoparsey pasando eljava.io.InputStreamobjeto. - Recupere el valor de cada nodo dentro del documento XML. Una forma de realizar esta tarea es crear un método personalizado que acepte dos parámetros: el
org.w3c.dom.Documenty el nombre del nodo cuyo valor desea recuperar. Este método devuelve un valor de cadena que representa el valor del nodo . En el ejemplo de código que sigue este proceso, se llama a este método personalizadogetNodeText. Se muestra el cuerpo de este método.
- Cree un
-
Si el tipo de contenido de datos es
application/pdf, cree una lógica de aplicación para guardar los datos del PDF enviados como un archivo del PDF.- Cree un
com.adobe.idp.Documentinvocando el objetoFormsResultdel objetogetOutputContentmétodo. - Cree un
java.io.Fileusando su constructor público. Asegúrese de especificar PDF como extensión de nombre de archivo. - Rellene el archivo del PDF invocando la variable
com.adobe.idp.Documentdel objetocopyToFiley pasando eljava.io.Fileobjeto.
- Cree un
-
Consulte también
Inicio rápido (modo SOAP): Gestión de PDF forms enviados como XML mediante la API de Java
Inicio rápido (modo SOAP): Gestión de formularios de HTML enviados como XML mediante la API de Java
Inicio rápido (modo SOAP): Gestión de PDF forms enviados como PDF mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Gestión de datos de PDF enviados mediante la API de servicio web handle-submitted-pdf-data-using-the-web-service-api
Gestione un formulario enviado 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 proxy de Java en la ruta de clase.
-
Creación de un objeto de API de cliente de Forms
Cree un
FormsServicey establezca los valores de autenticación. -
Recuperar datos de formulario
-
Para recuperar datos de formulario publicados en un servlet Java, cree un
BLOBusando su constructor. -
Cree un
java.io.InputStreaminvocando el objetojavax.servlet.http.HttpServletResponsedel objetogetInputStreammétodo. -
Cree un
java.io.ByteArrayOutputStreamusando su constructor y pasando la longitud dejava.io.InputStreamobjeto. -
Copie el contenido del
java.io.InputStreamen eljava.io.ByteArrayOutputStreamobjeto. -
Cree una matriz de bytes invocando la variable
java.io.ByteArrayOutputStreamdel objetotoByteArraymétodo. -
Rellene el
BLOBinvocando susetBinaryDatay pasando la matriz de bytes como argumento. -
Cree un
RenderOptionsSpecusando su constructor. Establezca el valor de configuración regional invocando la variableRenderOptionsSpecdel objetosetLocaley pasando un valor de cadena que especifica el valor de configuración regional. -
Invocar el
FormsServicedel objetoprocessFormSubmissiony pase los siguientes valores:- La variable
BLOBobjeto que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno, incluidos todos los encabezados HTTP relevantes. Especifique el tipo de contenido que se va a gestionar. Para gestionar datos XML, especifique el siguiente valor de cadena para este parámetro:
CONTENT_TYPE=text/xml. Para gestionar los datos del PDF, especifique el siguiente valor de cadena para este parámetro:CONTENT_TYPE=application/pdf. - Un valor de cadena que especifica la variable
HTTP_USER_AGENTvalor de encabezado; por ejemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). - A
RenderOptionsSpecque almacena opciones en tiempo de ejecución. - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
javax.xml.rpc.holders.StringHolderobjeto que rellena el método . - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
javax.xml.rpc.holders.ShortHolderobjeto que rellena el método . - Un vacío
MyArrayOf_xsd_anyTypeHolderobjeto que rellena el método . Este parámetro se utiliza para almacenar archivos adjuntos enviados junto con el formulario. - Un vacío
FormsResultHolderobjeto que rellena el método con el formulario enviado.
La variable
processFormSubmissionrellena elFormsResultHoldercon los resultados del envío del formulario. - La variable
-
Determine si el servicio Forms ha terminado de procesar los datos del formulario invocando la variable
FormsResultdel objetogetActionmétodo. Si este método devuelve el valor0, los datos del formulario están listos para procesarse. Puede obtener unFormsResultobteniendo el valor deFormsResultHolderdel objetovaluemiembro de datos.
-
-
Determinar si el envío del formulario contiene archivos adjuntos
Obtener el valor de la variable
MyArrayOf_xsd_anyTypeHolderdel objetovaluemiembro de datos (elMyArrayOf_xsd_anyTypeHolderse pasó alprocessFormSubmissionmétodo). Este miembro de datos devuelve una matriz deObjects. Cada elemento dentro de la variableObjectarray esObjectque corresponde a los archivos enviados junto con el formulario. Puede obtener cada elemento dentro de la matriz y lanzarlo a unaBLOBobjeto. -
Procesamiento de los datos enviados
-
Si el tipo de contenido de datos es
application/vnd.adobe.xdp+xmlotext/xml, cree lógica de aplicación para recuperar valores de datos XML.- Cree un
BLOBinvocando el objetoFormsResultdel objetogetOutputContentmétodo. - Cree una matriz de bytes invocando la variable
BLOBdel objetogetBinaryDatamétodo. - Cree un
java.io.InputStreaminvocando el objetojava.io.ByteArrayInputStreamy pasando la matriz de bytes. - Cree un
org.w3c.dom.DocumentBuilderFactoryllamando al objeto estáticoorg.w3c.dom.DocumentBuilderFactorydel objetonewInstancemétodo. - Cree un
org.w3c.dom.DocumentBuilderinvocando el objetoorg.w3c.dom.DocumentBuilderFactorydel objetonewDocumentBuildermétodo. - Cree un
org.w3c.dom.Documentinvocando el objetoorg.w3c.dom.DocumentBuilderdel objetoparsey pasando eljava.io.InputStreamobjeto. - Recupere el valor de cada nodo dentro del documento XML. Una forma de realizar esta tarea es crear un método personalizado que acepte dos parámetros: el
org.w3c.dom.Documenty el nombre del nodo cuyo valor desea recuperar. Este método devuelve un valor de cadena que representa el valor del nodo . En el ejemplo de código que sigue este proceso, se llama a este método personalizadogetNodeText. Se muestra el cuerpo de este método.
- Cree un
-
Si el tipo de contenido de datos es
application/pdf, cree una lógica de aplicación para guardar los datos del PDF enviados como un archivo del PDF.- Cree un
BLOBinvocando el objetoFormsResultdel objetogetOutputContentmétodo. - Cree una matriz de bytes invocando la variable
BLOBdel objetogetBinaryDatamétodo. - Cree un
java.io.Fileusando su constructor público. Asegúrese de especificar PDF como extensión de nombre de archivo. - Cree un
java.io.FileOutputStreamusando su constructor y pasando eljava.io.Fileobjeto. - Rellene el archivo del PDF invocando la variable
java.io.FileOutputStreamdel objetowritey pasando la matriz de bytes.
- Cree un
-
Consulte también
Invocación de AEM Forms mediante la codificación Base64