Los ejemplos y ejemplos de este documento son solo 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, 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 PDF interactivo.
Para poder procesar un formulario con el servicio Forms, debe crear un diseño de formulario. Normalmente, un diseño de formulario se crea 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.
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.
Etapa |
Descripción |
---|---|
1 |
El servlet Java |
2 |
El |
3 |
Una vez que el usuario rellena el formulario de préstamo y hace clic en el botón de envío, los datos se envían al servlet Java |
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 de posición variable). |
Formulario de préstamo
Este formulario de préstamo interactivo lo representa el GetLoanForm
servlet Java de la aplicación de préstamos de ejemplo.
Formulario de confirmación
Este formulario se procesa mediante el servlet Java HandleData
de la aplicación de préstamos de ejemplo.
El HandleData
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 de posición variable)
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 los métodos doGet
o doPost
de un servlet Java. Es mejor programar el colocar este código dentro de una clase independiente, crear una instancia de la clase desde el método doPost
(o el método doGet
) y llamar 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 el método doPost
.
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 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.
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 objeto FormsServiceClient
. Si utiliza la API de servicio web de Forms, cree un objeto FormsService
.
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 ubicado dentro de 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 pasado al método renderPDFForm
) y repository:///
como valor de URI raíz del 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 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 PDF a la dirección URL de destino especificada en el diseño de formulario, defina programáticamente la dirección URL de destino como 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 del formulario).
En lugar de especificar un valor de URL para hacer referencia a un archivo XDP, también puede pasar una instancia com.adobe.idp.Document
al servicio Forms. La instancia 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 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.
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. Asimismo, puede procesar un formulario creado con Acrobat y guardado como archivo PDF. Para procesar un formulario PDF interactivo, invoque el método FormsServiceClient
o renderPDFForm2
del objeto renderPDFForm
.
El renderPDFForm
utiliza un objeto URLSpec
. La raíz de contenido al archivo XDP se pasa al servicio Forms mediante el método URLSpec
del objeto setContentRootURI
. 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.
El método renderPDFForm2
acepta una instancia com.adobe.idp.Document
que contiene el documento XDP o PDF que se va a procesar.
La opción etiquetada en tiempo de ejecución de PDF no se puede establecer si el documento de entrada es un documento PDF. Si el archivo de entrada es un archivo XDP, se puede configurar la opción PDF con etiquetas.
Representar un formulario PDF interactivo utilizando 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
ServiceClientFactory
que contenga propiedades de conexión.FormsServiceClient
utilizando su constructor y pasando el objeto ServiceClientFactory
.Especificar valores de URI
URLSpec
que almacene valores de URI usando 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 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, especifique repository:///
.URLSpec
del objeto setTargetURL
y pase un valor de cadena que especifique el valor de la dirección URL de destino donde se registran 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
Cree un objeto java.util.HashMap
para almacenar archivos adjuntos usando su constructor.
Invoque el método java.util.HashMap
del objeto put
para cada archivo que se adjuntará al formulario procesado. Pase los siguientes valores a este método:
Un objeto 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.
Representar un formulario PDF interactivo
Invoque el método FormsServiceClient
del objeto renderPDFForm
y pase 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 objeto com.adobe.idp.Document
vacío.PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. Se trata de un parámetro opcional y puede especificar null
si no desea especificar opciones en tiempo de ejecución.URLSpec
que contiene valores de URI necesarios para el servicio Forms.java.util.HashMap
que almacena archivos adjuntos. Se trata de un parámetro opcional y puede especificar null
si no desea adjuntar archivos al formulario.El método renderPDFForm
devuelve un objeto FormsResult
que contiene 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
com.adobe.idp.Document
invocando el método FormsResult
del objeto ‘s getOutputContent
.com.adobe.idp.Document
invocando su método getContentType
.javax.servlet.http.HttpServletResponse
invocando su método setContentType
y pasando el tipo de contenido del objeto com.adobe.idp.Document
.javax.servlet.ServletOutputStream
que se utilice para escribir el flujo de datos del formulario en el explorador web del cliente invocando el método javax.servlet.http.HttpServletResponse
del objeto getOutputStream
.java.io.InputStream
invocando el método com.adobe.idp.Document
del objeto getInputStream
.InputStream
del objeto read
y pasando la matriz de bytes como argumento.javax.servlet.ServletOutputStream
del objeto write
para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes al método write
.Representar un formulario PDF interactivo mediante la API de Forms (servicio web):
Incluir archivos de proyecto
Creación de un objeto de API de cliente de Forms
Cree un objeto FormsService
y establezca valores de autenticación.
Especificar valores de URI
URLSpec
que almacene valores de URI usando 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 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, especifique repository:///
.URLSpec
del objeto setTargetURL
y pase un valor de cadena que especifique el valor de la dirección URL de destino donde se registran 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
Cree un objeto java.util.HashMap
para almacenar archivos adjuntos usando su constructor.
Invoque el método java.util.HashMap
del objeto put
para cada archivo que se adjuntará al formulario procesado. Pase los siguientes valores a este método:
Un objeto BLOB
que contiene el archivo adjunto
Repita este paso para cada archivo que desee adjuntar al formulario.
Representar un formulario PDF interactivo
Invoque el método FormsService
del objeto renderPDFForm
y pase los siguientes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
que contiene datos para combinar con el formulario. Si no desea combinar datos, pase null
.PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. Se trata de un parámetro opcional y puede especificar null
si no desea especificar opciones en tiempo de ejecución.URLSpec
que contiene valores de URI necesarios para el servicio Forms.java.util.HashMap
que almacena archivos adjuntos. Se trata de un parámetro opcional y puede especificar null
si no desea adjuntar archivos al formulario.com.adobe.idp.services.holders.BLOBHolder
vacío que se rellena con el método . Se utiliza para almacenar el formulario PDF procesado.javax.xml.rpc.holders.LongHolder
vacío que se rellena con el método . (Este argumento almacenará el número de páginas del formulario).javax.xml.rpc.holders.StringHolder
vacío que se rellena con el método . (Este argumento almacenará el valor de configuración regional).com.adobe.idp.services.holders.FormsResultHolder
vacío que contendrá los resultados de esta operación.El método renderPDFForm
rellena el objeto 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
obteniendo el valor del miembro de datos com.adobe.idp.services.holders.FormsResultHolder
del objeto value
.BLOB
que contenga datos de formulario invocando el método FormsResult
del objeto getOutputContent
.BLOB
invocando su método getContentType
.javax.servlet.http.HttpServletResponse
invocando su método setContentType
y pasando el tipo de contenido del objeto BLOB
.javax.servlet.ServletOutputStream
que se utilice para escribir el flujo de datos del formulario en el explorador web del cliente invocando el método javax.servlet.http.HttpServletResponse
del objeto getOutputStream
.BLOB
del objeto getBinaryData
. Esta tarea asigna el contenido del objeto FormsResult
a la matriz de bytes.javax.servlet.http.HttpServletResponse
del objeto write
para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes al método write
.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.