Procesar formularios PDF interactivos rendering-interactive-pdf-forms
El servicio Forms procesa PDF forms interactivos en dispositivos cliente, normalmente exploradores web, para recopilar información de los usuarios. Una vez procesado un formulario interactivo, el usuario puede introducir datos en los campos del formulario y hacer clic en un botón de envío ubicado en el formulario para enviar información al servicio de Forms. Adobe Reader o Acrobat deben estar instalados en el equipo que aloje el explorador web del cliente para que pueda verse un formulario de PDF interactivo.
Solicitud de préstamo de muestra
Se ha introducido una aplicación de préstamo de ejemplo para demostrar cómo el servicio Forms utiliza formularios interactivos para recopilar información de los usuarios. Esta aplicación permite a un usuario rellenar un formulario con los datos necesarios para obtener un préstamo y, a continuación, enviar datos al servicio de Forms. En el diagrama siguiente se muestra el flujo lógico de la aplicación del préstamo.
En la tabla siguiente se describen los pasos de este diagrama.
GetLoanForm El servlet Java se invoca desde una página de HTML.GetLoanForm Java Servlet utiliza la API de cliente de servicio de Forms para procesar el formulario de préstamo en el explorador web del cliente. (Consulte Representar un formulario de PDF interactivo mediante la API de Java.)HandleData Servlet Java. (Consulte "Forma de préstamo".)HandleData Java Servlet utiliza la API de cliente del servicio Forms para procesar el envío del formulario y recuperar los datos del formulario. A continuación, los datos se almacenan en una base de datos empresarial. (Consulte Gestión de Forms enviado.)Formulario de préstamo
Este formulario de préstamo interactivo se procesa mediante la solicitud de préstamo de ejemplo GetLoanForm Servlet Java.
Formulario de confirmación
Este formulario se procesa mediante el ejemplo de aplicación de préstamos HandleData Servlet Java.
La variable HandleData El Servlet Java rellena previamente este formulario con el nombre y los apellidos del usuario, así como la cantidad. Una vez que el formulario se rellena previamente, se envía al explorador web del cliente. (Consulte Rellenado previo de Forms con diseños flexibles)
Servlets Java
La aplicación de préstamo de ejemplo es un ejemplo de una aplicación de servicio de Forms que existe como servlet Java. Un servlet Java es un programa Java que se ejecuta en un servidor de aplicaciones J2EE, como WebSphere, y contiene código de API de cliente del servicio Forms.
El siguiente código muestra la sintaxis de un servlet Java llamado GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normalmente, no colocaría el código de API de cliente de servicio de Forms dentro de un servlet Java doGet o doPost método. Es una mejor práctica de programación colocar este código dentro de una clase separada, crear una instancia de la clase desde el doPost método (o doGet ) y llame a los métodos adecuados. Sin embargo, para la brevedad del código, los ejemplos de código de esta sección se reducen al mínimo y los ejemplos de código se colocan en la variable doPost método.
Resumen de los pasos
Para procesar un formulario de PDF interactivo, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de Forms.
- Especifique valores de URI.
- Adjuntar archivos al formulario (opcional).
- Representar un formulario de PDF interactivo.
- Escriba el flujo de datos del 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.
Creación de un objeto de API de cliente de Forms
Para poder realizar una operación de API de cliente de servicio de Forms mediante programación, debe crear un objeto de API de cliente 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.
Especificar valores de URI
Puede especificar los valores de URI que requiere el servicio Forms para procesar un formulario. Se puede hacer referencia a un diseño de formulario guardado como parte de una aplicación de Forms mediante el valor de URI raíz de contenido repository:///. Por ejemplo, considere el siguiente diseño de formulario denominado Loan.xdp ubicada dentro de una aplicación de Forms llamada FormsApplication:
Para acceder a este diseño de formulario, especifique Applications/FormsApplication/1.0/FormsFolder/Loan.xdp como nombre del formulario (el primer parámetro pasado al renderPDFForm método) y repository:/// como valor de URI raíz de contenido.
La ruta a un recurso ubicado en una aplicación de Forms es:
Applications/Application-name/Application-version/Folder.../Filename
Los siguientes valores muestran algunos ejemplos de valores de URI:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
Cuando procesa un formulario interactivo, puede definir valores de URI como la dirección URL de destino donde se publican los datos del formulario. La dirección URL de destino se puede definir de una de las siguientes maneras:
- En el botón Enviar mientras se diseña el diseño de formulario en Designer
- Mediante la API de cliente del servicio Forms
Si la dirección URL de destino está definida en el diseño de formulario, no la anule con la API de cliente del servicio de Forms. Es decir, si se define la dirección URL de destino mediante la API de Forms, se restablece la dirección URL especificada en el diseño de formulario en la especificada mediante la API. Si desea enviar el formulario de PDF a la dirección URL de destino especificada en el diseño de formulario, establezca programáticamente la dirección URL de destino en una cadena vacía.
Si tiene un formulario que contiene un botón de envío y un botón de cálculo (con una secuencia de comandos correspondiente que se ejecuta en el servidor), puede definir mediante programación la dirección URL a la que se envía el formulario para ejecutar la secuencia de comandos. Utilice el botón de envío del diseño de formulario para especificar la dirección URL donde se publican los datos del formulario. (Consulte Cálculo de datos de formulario.)
com.adobe.idp.Document al servicio de Forms. La variable com.adobe.idp.Document contiene un diseño de formulario. (Consulte Pasar documentos al servicio de Forms.)Adjuntar archivos al formulario
Puede adjuntar archivos a un formulario. Cuando se procesa un formulario de PDF con archivos adjuntos, los usuarios pueden recuperar los archivos adjuntos en Acrobat mediante el panel de archivos adjuntos. Puede adjuntar distintos tipos de archivo a un formulario, como un archivo de texto, o a un archivo binario, como un archivo JPG.
Representar un formulario PDF interactivo
Para procesar un formulario, utilice un diseño de formulario creado en Designer y guardado como archivo XDP o PDF. Además, puede procesar un formulario creado con Acrobat y guardado como archivo de PDF. Para procesar un formulario de PDF interactivo, invoque la variable FormsServiceClient del objeto renderPDFForm método o renderPDFForm2 método.
La variable renderPDFForm utiliza un URLSpec objeto. La raíz de contenido al archivo XDP se pasa al servicio de Forms mediante la variable URLSpec del objeto setContentRootURI método. El nombre del diseño de formulario ( formQuery) se pasa como un valor de parámetro independiente. Los dos valores se concatenan para obtener la referencia absoluta al diseño de formulario.
La variable renderPDFForm2 acepta un com.adobe.idp.Document instancia que contiene el documento XDP o PDF que se va a procesar.
Representar un formulario de PDF interactivo mediante la API de Java render-an-interactive-pdf-form-using-the-java-api
Representar un formulario de PDF interactivo 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
-
Especificar valores de URI
- Cree un
URLSpecobjeto que almacena valores de URI utilizando su constructor. - Invocar el
URLSpecdel objetosetApplicationWebRooty pase un valor de cadena que represente la raíz web de la aplicación. - Invocar el
URLSpecdel objetosetContentRootURIy pase un valor de cadena que especifique el valor de URI raíz del contenido. Asegúrese de que el diseño de formulario se encuentra en el URI raíz del contenido. Si no es así, el servicio de Forms genera una excepción. Para hacer referencia al repositorio, especifiquerepository:///. - Invocar el
URLSpecdel objetosetTargetURLy pase un valor de cadena que especifique el valor de la dirección URL de destino donde se publican los datos del formulario. Si define la dirección URL de destino en el diseño de formulario, puede pasar una cadena vacía. También puede especificar la dirección URL a la que se envía un formulario para realizar cálculos.
- Cree un
-
Adjuntar archivos al formulario
-
Cree un
java.util.HashMappara almacenar archivos adjuntos usando su constructor. -
Invocar el
java.util.HashMapdel objetoputpara cada archivo que se adjuntará al formulario procesado. Pase los siguientes valores a este método:- Un valor de cadena que especifica el nombre del archivo adjunto, incluida la extensión de nombre de archivo.
-
A
com.adobe.idp.Documentobjeto que contiene el archivo adjunto.
note note NOTE Repita este paso para cada archivo que desee adjuntar al formulario. Este paso es opcional y puede pasar null* si no desea enviar archivos adjuntos.* -
-
Representar un formulario PDF interactivo
Invocar el
FormsServiceClientdel objetorenderPDFFormy pase los siguientes valores:- Un valor de cadena que especifica el nombre del diseño de 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 completa, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp. - A
com.adobe.idp.Documentobjeto que contiene datos para combinar con el formulario. Si no desea combinar datos, pase un vacíocom.adobe.idp.Documentobjeto. - A
PDFFormRenderSpecque almacena opciones en tiempo de ejecución. Este es un parámetro opcional y puede especificarnullsi no desea especificar opciones de tiempo de ejecución. - A
URLSpecque contiene valores de URI necesarios para el servicio Forms. - A
java.util.HashMapque almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnullsi no desea adjuntar archivos al formulario.
La variable
renderPDFFormel método devuelve unFormsResultobjeto que contiene un flujo de datos de formulario que debe escribirse en el explorador web del cliente. - Un valor de cadena que especifica el nombre del diseño de 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 completa, como
-
Escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un
com.adobe.idp.Documentinvocando el objetoFormsResultobjeto ‘sgetOutputContentmétodo. - Obtenga el tipo de contenido de la variable
com.adobe.idp.Documentinvocando sugetContentTypemétodo. - Configure las variables
javax.servlet.http.HttpServletResponsetipo de contenido del objeto invocando susetContentTypey pasar el tipo de contenido de la variablecom.adobe.idp.Documentobjeto. - Cree un
javax.servlet.ServletOutputStreamobjeto utilizado para escribir el flujo de datos del formulario en el explorador web del cliente invocando la variablejavax.servlet.http.HttpServletResponsedel objetogetOutputStreammétodo. - Cree un
java.io.InputStreaminvocando el objetocom.adobe.idp.Documentdel objetogetInputStreammétodo. - Cree una matriz de bytes y rellénela con la secuencia de datos del formulario invocando la variable
InputStreamdel objetoready pasando la matriz de bytes como argumento. - Invocar el
javax.servlet.ServletOutputStreamdel objetowritemétodo para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawritemétodo.
- Cree un
Representar un formulario de PDF interactivo mediante la API de servicio web render-an-interactive-pdf-form-using-the-web-service-api
Representar un formulario de PDF interactivo 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. -
Especificar valores de URI
- Cree un
URLSpecobjeto que almacena valores de URI utilizando su constructor. - Invocar el
URLSpecdel objetosetApplicationWebRooty pase un valor de cadena que represente la raíz web de la aplicación. - Invocar el
URLSpecdel objetosetContentRootURIy pase un valor de cadena que especifique el valor de URI raíz del contenido. Asegúrese de que el diseño de formulario se encuentra en el URI raíz del contenido. Si no es así, el servicio de Forms genera una excepción. Para hacer referencia al repositorio, especifiquerepository:///. - Invocar el
URLSpecdel objetosetTargetURLy pase un valor de cadena que especifique el valor de la dirección URL de destino donde se publican los datos del formulario. Si define la dirección URL de destino en el diseño de formulario, puede pasar una cadena vacía. También puede especificar la dirección URL a la que se envía un formulario para realizar cálculos.
- Cree un
-
Adjuntar archivos al formulario
-
Cree un
java.util.HashMappara almacenar archivos adjuntos usando su constructor. -
Invocar el
java.util.HashMapdel objetoputpara cada archivo que se adjuntará al formulario procesado. Pase los siguientes valores a este método:- Un valor de cadena que especifica el nombre del archivo adjunto, incluida la extensión del nombre de archivo
-
A
BLOBobjeto que contiene el archivo adjunto
note note NOTE Repita este paso para cada archivo que desee adjuntar al formulario. -
-
Representar un formulario PDF interactivo
Invocar el
FormsServicedel objetorenderPDFFormy pase los siguientes valores:- Un valor de cadena que especifica el nombre del diseño de 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 completa, como
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp. - A
BLOBobjeto que contiene datos para combinar con el formulario. Si no desea combinar datos, pasenull. - A
PDFFormRenderSpecque almacena opciones en tiempo de ejecución. Este es un parámetro opcional y puede especificarnullsi no desea especificar opciones de tiempo de ejecución. - A
URLSpecque contiene valores de URI necesarios para el servicio Forms. - A
java.util.HashMapque almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnullsi no desea adjuntar archivos al formulario. - Un vacío
com.adobe.idp.services.holders.BLOBHolderobjeto que rellena el método . Se utiliza para almacenar el formulario de PDF procesado. - Un vacío
javax.xml.rpc.holders.LongHolderobjeto que rellena el método . (Este argumento almacenará el número de páginas del formulario). - Un vacío
javax.xml.rpc.holders.StringHolderobjeto que rellena el método . (Este argumento almacenará el valor de configuración regional). - Un vacío
com.adobe.idp.services.holders.FormsResultHolderque contendrá los resultados de esta operación.
La variable
renderPDFFormrellena elcom.adobe.idp.services.holders.FormsResultHolderobjeto 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. - Un valor de cadena que especifica el nombre del diseño de 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 completa, como
-
Escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un
FormResultobteniendo el valor decom.adobe.idp.services.holders.FormsResultHolderdel objetovaluemiembro de datos. - Cree un
BLOBobjeto que contiene datos de formulario invocando la variableFormsResultdel objetogetOutputContentmétodo. - Obtenga el tipo de contenido de la variable
BLOBinvocando sugetContentTypemétodo. - Configure las variables
javax.servlet.http.HttpServletResponsetipo de contenido del objeto invocando susetContentTypey pasar el tipo de contenido de la variableBLOBobjeto. - Cree un
javax.servlet.ServletOutputStreamobjeto utilizado para escribir el flujo de datos del formulario en el explorador web del cliente invocando la variablejavax.servlet.http.HttpServletResponsedel objetogetOutputStreammétodo. - Cree una matriz de bytes y rellénela invocando la variable
BLOBdel objetogetBinaryDatamétodo. Esta tarea asigna el contenido de la variableFormsResulta la matriz de bytes. - Invocar el
javax.servlet.http.HttpServletResponsedel objetowritemétodo para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawritemétodo.
- Cree un
Escribir el flujo de datos del formulario en el explorador web del cliente
Cuando el servicio Forms procesa un formulario, 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.