Los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
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, un usuario puede introducir datos en los campos de formulario y hacer clic en un botón de envío ubicado en el formulario para enviar información de vuelta al servicio de Forms. Adobe Reader o Acrobat deben estar instalados en el equipo que aloja el explorador web del cliente para que un formulario de PDF interactivo sea visible.
Para poder procesar un formulario mediante el servicio Forms, cree un diseño de formulario. Normalmente, se crea un diseño de formulario en Designer y se guarda como archivo XDP. Para obtener información sobre la creación de un diseño de formulario, consulte Forms Designer.
Ejemplo de solicitud de préstamo
Se presenta 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 al usuario rellenar un formulario con los datos necesarios para obtener un préstamo y, a continuación, enviar datos al servicio de Forms. El diagrama siguiente muestra el flujo lógico de la aplicación del préstamo.
En la tabla siguiente se describen los pasos de este diagrama.
Paso |
Descripción |
---|---|
1 |
El |
2 |
El |
3 |
Una vez que el usuario rellena el formulario de préstamo y hace clic en el botón Enviar, los datos se envían al |
4 |
El |
5 |
Se devuelve un formulario de confirmación al explorador web. Los datos como el nombre y los apellidos del usuario se combinan con el formulario antes de procesarse. (Consulte Rellenado previo de Forms con diseños flexibles.) |
Formulario de préstamo
Este formulario de préstamo interactivo lo procesa el administrador de la solicitud de préstamo de ejemplo GetLoanForm
Servlet Java.
Formulario de confirmación
Este formulario lo procesa el administrador de la solicitud de préstamo de ejemplo HandleData
Servlet Java.
El HandleData
Java Servlet rellena previamente este formulario con el nombre y los apellidos del usuario, así como la cantidad. Una vez rellenado previamente el formulario, 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 el código de API del cliente del servicio Forms.
El siguiente código muestra la sintaxis de un servlet Java denominado 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 la API del cliente del servicio de Forms dentro de un servidor Java doGet
o doPost
método. Se recomienda colocar este código en una clase independiente, crear instancias de la clase desde dentro de doPost
método (o doGet
método) y llame a los métodos adecuados. Sin embargo, para que el código sea más breve, los ejemplos de código de esta sección se mantienen al mínimo y los ejemplos de código se colocan en el doPost
método.
Para obtener más información sobre el servicio Forms, consulte Referencia de servicios para AEM Forms.
Resumen de los pasos
Para procesar un formulario de PDF interactivo, realice las siguientes tareas:
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 la API de cliente del servicio de Forms, debe crear un objeto de la 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 que se guarda como parte de una aplicación de Forms mediante el valor URI de raíz de contenido repository:///
. Por ejemplo, considere el siguiente diseño de formulario denominado Loan.xdp ubicado en una aplicación de Forms denominada 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 que se pasa a la variable renderPDFForm
método) y repository:///
como el valor URI de la raíz de contenido.
Para obtener información sobre la creación de una aplicación de Forms mediante Workbench, consulte Ayuda de Workbench.
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:
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:
Si la dirección URL de destino se define dentro del diseño de formulario, no la anule con la API de cliente del servicio de Forms. Es decir, al establecer la dirección URL de destino mediante la API de Forms, se restablece la dirección URL especificada en el diseño de formulario a la especificada mediante la API. Si desea enviar el formulario de PDF a la URL de destino especificada en el diseño de formulario, establezca mediante programación la 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 a la que se publican los datos del formulario. (Consulte Calcular datos de formulario.)
En lugar de especificar un valor de URL para hacer referencia a un archivo XDP, también puede pasar un com.adobe.idp.Document
al servicio Forms. El com.adobe.idp.Document
La instancia de contiene un diseño de formulario. (Consulte Pasar documentos al servicio de Forms.)
Adjuntar archivos al formulario
Puede adjuntar archivos a un formulario. Cuando 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.
Adjuntar archivos adjuntos a un formulario es opcional.
Procesar un formulario interactivo de PDF
Para procesar un formulario, utilice un diseño de formulario creado en Designer y guardado como archivo XDP o de PDF. Además, puede procesar un formulario creado con Acrobat y guardado como archivo de PDF. Para procesar un formulario de PDF interactivo, invoque el FormsServiceClient
del objeto renderPDFForm
método o renderPDFForm2
método.
El renderPDFForm
utiliza un URLSpec
objeto. La raíz de contenido del archivo XDP se pasa al servicio de Forms mediante el URLSpec
del objeto setContentRootURI
método. El nombre del diseño del 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.
El renderPDFForm2
El método acepta un com.adobe.idp.Document
que contiene el documento XDP o de PDF que se va a procesar.
La opción de tiempo de ejecución del PDF etiquetado no se puede establecer si el documento de entrada es un documento del PDF. Si el archivo de entrada es un archivo XDP, se puede establecer la opción de PDF etiquetado.
Procesar un formulario interactivo de PDF 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.Especificar valores de URI
URLSpec
que almacena los valores de URI mediante su constructor.URLSpec
del objeto setApplicationWebRoot
y pase un valor de cadena que represente la raíz web de la aplicación.URLSpec
del objeto setContentRootURI
y pasan un valor de cadena que especifica el valor de URI de la raíz de contenido. Asegúrese de que el diseño de formulario esté ubicado en el URI raíz del contenido. Si no es así, el servicio Forms genera una excepción. Para hacer referencia al repositorio, especifique repository:///
.URLSpec
del objeto setTargetURL
y pasan un valor de cadena que especifica 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.Adjuntar archivos al formulario
Crear un java.util.HashMap
para almacenar los archivos adjuntos mediante su constructor.
Invoque el java.util.HashMap
del objeto put
para que cada archivo se adjunte al formulario procesado. Pase los siguientes valores a este método:
A com.adobe.idp.Document
que contiene el archivo adjunto.
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.
Procesar un formulario interactivo de PDF
Invoque el FormsServiceClient
del objeto renderPDFForm
y pasar los siguientes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
que contiene datos para combinar con el formulario. Si no desea combinar datos, pase un vacío com.adobe.idp.Document
objeto.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 debe escribirse en el explorador web 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
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.Procesar un formulario interactivo de PDF mediante 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.
Especificar valores de URI
URLSpec
que almacena los valores de URI mediante su constructor.URLSpec
del objeto setApplicationWebRoot
y pase un valor de cadena que represente la raíz web de la aplicación.URLSpec
del objeto setContentRootURI
y pasan un valor de cadena que especifica el valor de URI de la raíz de contenido. Asegúrese de que el diseño de formulario esté ubicado en el URI raíz del contenido. Si no es así, el servicio Forms genera una excepción. Para hacer referencia al repositorio, especifique repository:///
.URLSpec
del objeto setTargetURL
y pasan un valor de cadena que especifica 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.Adjuntar archivos al formulario
Crear un java.util.HashMap
para almacenar los archivos adjuntos mediante su constructor.
Invoque el java.util.HashMap
del objeto put
para que cada archivo se adjunte al formulario procesado. Pase los siguientes valores a este método:
A BLOB
objeto que contiene el archivo adjunto
Repita este paso para cada archivo que desee adjuntar al formulario.
Procesar un formulario interactivo de PDF
Invoque el FormsService
del objeto renderPDFForm
y pasar los siguientes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
que contiene datos para combinar con el formulario. Si no desea combinar los datos, apruebe null
.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 almacenará el número de páginas del formulario).javax.xml.rpc.holders.StringHolder
objeto que rellena el método. (Este argumento almacenará 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.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.