Rellenado previo de Forms con diseños flexibles prepopulating-forms-with-flowable-layouts1
Rellenado previo de Forms con diseños flexibles prepopulating-forms-with-flowable-layouts2
Al cumplimentar los formularios de antemano, se muestran datos a los usuarios de un formulario procesado. Por ejemplo, supongamos que un usuario inicia sesión en un sitio web con un nombre de usuario y una contraseña. Si la autenticación se realiza correctamente, la aplicación cliente consulta una base de datos para obtener información del usuario. Los datos se combinan en el formulario y se procesan para el usuario. Como resultado, el usuario puede ver datos personalizados dentro del formulario.
Cumplimentar previamente un formulario tiene las siguientes ventajas:
- Permite al usuario ver datos personalizados en un formulario.
- Reduce la cantidad de escritura que el usuario hace para rellenar un formulario.
- Garantiza la integridad de los datos al tener control sobre dónde se colocan los datos.
Los dos orígenes de datos XML siguientes pueden rellenar previamente un formulario:
- Un origen de datos XDP, que es XML que se ajusta a la sintaxis XFA (o datos XFDF para rellenar previamente un formulario creado con Acrobat).
- Un origen de datos XML arbitrario que contiene pares de nombre/valor que coinciden con los nombres de campo del formulario (los ejemplos de esta sección utilizan un origen de datos XML arbitrario).
Debe existir un elemento XML para cada campo de formulario que desee rellenar previamente. El nombre del elemento XML debe coincidir con el nombre del campo. Se ignora un elemento XML si no se corresponde con un campo de formulario o si el nombre del elemento XML no coincide con el nombre del campo. No es necesario coincidir con el orden en que se muestran los elementos XML, siempre y cuando se especifiquen todos los elementos XML.
Cuando rellene previamente un formulario que ya contenga datos, debe especificar los datos que ya se muestran en el origen de datos XML. Supongamos que un formulario que contiene 10 campos tiene datos en cuatro campos. A continuación, suponga que desea rellenar previamente los seis campos restantes. En este caso, debe especificar 10 elementos XML en el origen de datos XML que se utiliza para rellenar previamente el formulario. Si especifica solo seis elementos, los cuatro campos originales están vacíos.
Por ejemplo, puede rellenar previamente un formulario, como el formulario de confirmación de ejemplo. (Consulte "Formulario de confirmación" en Renderización de PDF forms interactivos.)
Para rellenar previamente el formulario de confirmación de ejemplo, debe crear un origen de datos XML que contenga tres elementos XML que coincidan con los tres campos del formulario. Este formulario contiene los tres campos siguientes: FirstName
, LastName
y Amount
. El primer paso es crear un origen de datos XML que contenga elementos XML que coincidan con los campos ubicados en el diseño de formulario. El siguiente paso es asignar valores de datos a los elementos XML, como se muestra en el siguiente código XML.
<Untitled>
<FirstName>Jerry</FirstName>
<LastName>Johnson</LastName>
<Amount>250000</Amount>
</Untitled>
Después de rellenar previamente el formulario de confirmación con este origen de datos XML y después procesar el formulario, se muestran los valores de datos que asignó a los elementos XML, como se muestra en el diagrama siguiente.
Rellenado previo de formularios con diseños flexibles prepopulating_forms_with_flowable_layouts-1
Forms con diseños flexibles es útil para mostrar una cantidad indeterminada de datos a los usuarios. Dado que la presentación del formulario se ajusta automáticamente a la cantidad de datos combinados, no es necesario predeterminar una presentación fija ni un número de páginas para el formulario, como se debe hacer con un formulario con una presentación fija.
Un formulario suele rellenarse con datos obtenidos durante la ejecución. Como resultado, puede rellenar previamente un formulario creando un origen de datos XML en memoria y colocando los datos directamente en el origen de datos XML en memoria.
Considere una aplicación basada en la Web, como una tienda en línea. Una vez que un comprador en línea termina de comprar artículos, todos los artículos adquiridos se colocan en un origen de datos XML en memoria que se utiliza para rellenar previamente un formulario. El diagrama siguiente muestra este proceso, que se explica en la tabla siguiente al diagrama.
En la tabla siguiente se describen los pasos de este diagrama.
En el diagrama siguiente se muestra un ejemplo de un formulario de orden de compra. La información de la tabla se puede ajustar al número de registros de los datos XML.
Consideraciones sobre el diseño de formularios form-design-considerations
Forms con diseños flexibles se basa en diseños de formulario creados en Designer. Un diseño de formulario especifica un conjunto de reglas de presentación, presentación y captura de datos, incluido el cálculo de valores en función de los datos introducidos por el usuario. Las reglas se aplican cuando se introducen datos en un formulario. Los campos que se agregan a un formulario son subformularios que se encuentran dentro del diseño de formulario. Por ejemplo, en el formulario de orden de compra que se muestra en el diagrama anterior, cada línea es un subformulario. Para obtener información sobre la creación de un diseño de formulario que contenga subformularios, consulte Creación de un formulario de orden de compra con una presentación flexible.
Explicación de los subgrupos de datos understanding-data-subgroups
Un origen de datos XML se utiliza para rellenar previamente los formularios con diseños fijos y presentaciones flexibles. Sin embargo, la diferencia es que un origen de datos XML que rellena previamente un formulario con una presentación flexible contiene elementos XML de repetición que se utilizan para rellenar previamente subformularios que se repiten dentro del formulario. Estos elementos XML repetitivos se denominan subgrupos de datos.
Un origen de datos XML que se utiliza para rellenar previamente el formulario de orden de compra que se muestra en el diagrama anterior contiene cuatro subgrupos de datos de repetición. Cada subgrupo de datos corresponde a un artículo comprado. Los artículos comprados son un monitor, una lámpara de escritorio, un teléfono y una libreta de direcciones.
El siguiente origen de datos XML se utiliza para rellenar previamente el formulario de orden de compra.
<header>
<!-- XML elements used to prepopulate non-repeating fields such as address
<!and city
<txtPONum>8745236985</txtPONum>
<dtmDate>2004-02-08</dtmDate>
<txtOrderedByCompanyName>Any Company Name</txtOrderedByCompanyName>
<txtOrderedByAddress>555, Any Blvd.</txtOrderedByAddress>
<txtOrderedByCity>Any City</txtOrderedByCity>
<txtOrderedByStateProv>ST</txtOrderedByStateProv>
<txtOrderedByZipCode>12345</txtOrderedByZipCode>
<txtOrderedByCountry>Any Country</txtOrderedByCountry>
<txtOrderedByPhone>(123) 456-7890</txtOrderedByPhone>
<txtOrderedByFax>(123) 456-7899</txtOrderedByFax>
<txtOrderedByContactName>Contact Name</txtOrderedByContactName>
<txtDeliverToCompanyName>Any Company Name</txtDeliverToCompanyName>
<txtDeliverToAddress>7895, Any Street</txtDeliverToAddress>
<txtDeliverToCity>Any City</txtDeliverToCity>
<txtDeliverToStateProv>ST</txtDeliverToStateProv>
<txtDeliverToZipCode>12346</txtDeliverToZipCode>
<txtDeliverToCountry>Any Country</txtDeliverToCountry>
<txtDeliverToPhone>(123) 456-7891</txtDeliverToPhone>
<txtDeliverToFax>(123) 456-7899</txtDeliverToFax>
<txtDeliverToContactName>Contact Name</txtDeliverToContactName>
</header>
<detail>
<!-- A data subgroup that contains information about the monitor>
<txtPartNum>00010-100</txtPartNum>
<txtDescription>Monitor</txtDescription>
<numQty>1</numQty>
<numUnitPrice>350.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the desk lamp>
<txtPartNum>00010-200</txtPartNum>
<txtDescription>Desk lamps</txtDescription>
<numQty>3</numQty>
<numUnitPrice>55.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the Phone>
<txtPartNum>00025-275</txtPartNum>
<txtDescription>Phone</txtDescription>
<numQty>5</numQty>
<numUnitPrice>85.00</numUnitPrice>
</detail>
<detail>
<!-- A data subgroup that contains information about the address book>
<txtPartNum>00300-896</txtPartNum>
<txtDescription>Address book</txtDescription>
<numQty>2</numQty>
<numUnitPrice>15.00</numUnitPrice>
</detail>
Observe que cada subgrupo de datos contiene cuatro elementos XML que corresponden a esta información:
- Número de pieza de elementos
- Descripción de elementos
- Cantidad de artículos
- Precio unitario
El nombre del elemento XML principal de un subgrupo de datos debe coincidir con el nombre del subformulario ubicado en el diseño de formulario. Por ejemplo, en el diagrama anterior, observe que el nombre del elemento XML principal del subgrupo de datos es detail
. Esto corresponde al nombre del subformulario ubicado en el diseño de formulario en el que se basa el formulario de orden de compra. Si el nombre del elemento XML principal del subgrupo de datos y el subformulario no coinciden, no se rellena previamente un formulario del lado del servidor.
Cada subgrupo de datos debe contener elementos XML que coincidan con los nombres de campo del subformulario. La variable detail
subformulario ubicado en el diseño de formulario contiene los siguientes campos:
- txtPartNum
- txtDescription
- numQty
- numUnitPrice
RenderAtClient
a No
, solo el primer registro de datos se combina en el formulario. Para asegurarse de que todos los registros de datos se combinan en el formulario, establezca la variable RenderAtClient
a Yes
. Para obtener información sobre la variable RenderAtClient
, consulte Representación de Forms en el cliente.Resumen de los pasos summary-of-steps
Para rellenar previamente un formulario con una presentación flexible, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un origen de datos XML en memoria.
- Convierta el origen de datos XML.
- Representar un formulario rellenado previamente.
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.
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 origen de datos XML en memoria
Puede usar org.w3c.dom
clases para crear un origen de datos XML en memoria para cumplimentar previamente un formulario con una presentación flexible. Debe colocar los datos en un origen de datos XML que se ajuste al formulario. Para obtener información sobre la relación entre un formulario con presentación flexible y el origen de datos XML, consulte Explicación de los subgrupos de datos.
Convertir el origen de datos XML
Un origen de datos XML en memoria que se crea mediante org.w3c.dom
se pueden convertir en com.adobe.idp.Document
antes de que se pueda utilizar para rellenar previamente un formulario. Se puede convertir un origen de datos XML en memoria mediante clases de transformación XML de Java.
org.w3c.dom.Document
en un BLOB
objeto.Representar un formulario rellenado previamente
Los formularios rellenados previamente se representan del mismo modo que los demás formularios. La única diferencia es que usa la variable com.adobe.idp.Document
objeto que contiene el origen de datos XML para rellenar previamente el formulario.
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
Procesar formularios PDF interactivos
Creación de aplicaciones web que procesen Forms
Rellenado previo de formularios mediante la API de Java prepopulating-forms-using-the-java-api
Para rellenar previamente un formulario con una presentación flexible mediante la API de Forms (Java), siga estos pasos:
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-forms-client.jar, en la ruta de clase de su proyecto Java. Para obtener información sobre la ubicación de estos archivos, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
-
Crear un origen de datos XML en memoria
-
Creación de un Java
DocumentBuilderFactory
llamando alDocumentBuilderFactory
class"newInstance
método. -
Creación de un Java
DocumentBuilder
llamando alDocumentBuilderFactory
del objetonewDocumentBuilder
método. -
Llame a la función
DocumentBuilder
del objetonewDocument
para crear una instancia deorg.w3c.dom.Document
objeto. -
Cree el elemento raíz del origen de datos XML invocando la variable
org.w3c.dom.Document
del objetocreateElement
método. Esto crea unElement
objeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento raíz al documento llamando a la funciónDocument
del objetoappendChild
y pase el objeto de elemento raíz como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element root = (Element)document.createElement("transaction"); document.appendChild(root);
-
Cree el elemento de encabezado de la fuente de datos XML llamando a la función
Document
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento de encabezado al elemento raíz llamando a la funciónroot
del objetoappendChild
y pase el objeto de elemento de encabezado como un argumento. Los elementos XML que se adjuntan al elemento de encabezado corresponden a la parte estática del formulario. Las siguientes líneas de código muestran esta lógica de aplicación:Element header = (Element)document.createElement("header"); root.appendChild(header);
-
Cree un elemento secundario que pertenezca al elemento del encabezado llamando a la función
Document
del objetocreateElement
y pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement
. A continuación, establezca un valor para el elemento secundario llamando a suappendChild
y pase elDocument
del objetocreateTextNode
como argumento. Especifique un valor de cadena que aparezca como el valor del elemento secundario. Finalmente, anexe el elemento secundario al elemento del encabezado llamando al elemento del encabezadoappendChild
y pase el objeto de elemento secundario como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element poNum= (Element)document.createElement("txtPONum"); poNum.appendChild(document.createTextNode("8745236985")); header.appendChild(LastName);
-
Agregue todos los elementos restantes al elemento del encabezado repitiendo el último subpaso para cada campo que aparezca en la parte estática del formulario (en el diagrama de origen de datos XML, estos campos se muestran en la sección A. (Consulte Explicación de los subgrupos de datos.)
-
Cree el elemento de detalle de la fuente de datos XML llamando a la función
Document
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento de detalle al elemento raíz llamando a la funciónroot
del objetoappendChild
y pase el objeto detail element como argumento. Los elementos XML que se adjuntan al elemento detalle corresponden a la parte dinámica del formulario. Las siguientes líneas de código muestran esta lógica de aplicación:Element detail = (Element)document.createElement("detail"); root.appendChild(detail);
-
Cree un elemento secundario que pertenezca al elemento de detalle llamando a la función
Document
del objetocreateElement
y pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement
. A continuación, establezca un valor para el elemento secundario llamando a suappendChild
y pase elDocument
del objetocreateTextNode
como argumento. Especifique un valor de cadena que aparezca como el valor del elemento secundario. Finalmente, anexe el elemento secundario al elemento de detalle llamando al elemento de detalleappendChild
y pase el objeto de elemento secundario como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element txtPartNum = (Element)document.createElement("txtPartNum"); txtPartNum.appendChild(document.createTextNode("00010-100")); detail.appendChild(txtPartNum);
-
Repita el último subpaso para todos los elementos XML que desee anexar al elemento detalle. Para crear correctamente el origen de datos XML utilizado para rellenar el formulario de orden de compra, debe añadir los siguientes elementos XML al elemento detalle:
txtDescription
,numQty
ynumUnitPrice
. -
Repita los dos últimos subpasos para todos los elementos de datos utilizados para rellenar previamente el formulario.
-
-
Convertir el origen de datos XML
- Cree un
javax.xml.transform.Transformer
invocando el objetojavax.xml.transform.Transformer
estático del objetonewInstance
método. - Cree un
Transformer
invocando el objetoTransformerFactory
del objetonewTransformer
método. - Cree un
ByteArrayOutputStream
usando su constructor. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor y pasando elorg.w3c.dom.Document
objeto creado en el paso 1. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor y pasando elByteArrayOutputStream
objeto. - Rellenar el Java
ByteArrayOutputStream
invocando el objetojavax.xml.transform.Transformer
del objetotransform
y pasando eljavax.xml.transform.dom.DOMSource
yjavax.xml.transform.stream.StreamResult
objetos. - Cree una matriz de bytes y asigne el tamaño de la variable
ByteArrayOutputStream
a la matriz de bytes. - Rellene la matriz de bytes invocando la variable
ByteArrayOutputStream
del objetotoByteArray
método. - Cree un
com.adobe.idp.Document
usando su constructor y pasando la matriz de bytes.
- Cree un
-
Representar un formulario rellenado previamente
Invocar el
FormsServiceClient
del objetorenderPDFForm
y 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.
- A
com.adobe.idp.Document
objeto que contiene datos para combinar con el formulario. Asegúrese de usar la variablecom.adobe.idp.Document
objeto creado en los pasos uno y dos. - A
PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. - A
URLSpec
que contiene valores de URI necesarios para el servicio Forms. - A
java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario.
La variable
renderPDFForm
el método devuelve unFormsResult
objeto que contiene un flujo de datos de formulario que debe escribirse en el explorador web del cliente.- Cree un
javax.servlet.ServletOutputStream
objeto utilizado para enviar una secuencia de datos de formulario al explorador web del cliente. - Cree un
com.adobe.idp.Document
invocando el objetoFormsResult
objeto ‘sgetOutputContent
método. - Cree un
java.io.InputStream
invocando el objetocom.adobe.idp.Document
del objetogetInputStream
método. - Crear una matriz de bytes rellenarla con la secuencia de datos del formulario invocando la variable
InputStream
del objetoread
y pasando la matriz de bytes como argumento. - Invocar el
javax.servlet.ServletOutputStream
del objetowrite
método para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawrite
método.
Consulte también
Inicio rápido (modo SOAP): Rellenado previo de Forms con diseños flexibles mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Rellenado previo de formularios mediante la API de servicio web prepopulating-forms-using-the-web-service-api
Para rellenar previamente un formulario con una presentación flexible mediante la API de Forms (servicio web), siga estos pasos:
-
Incluir archivos de proyecto
- Cree clases de proxy Java que consuman el WSDL del servicio Forms. (Consulte Creación de clases de proxy Java mediante el eje Apache.)
- Incluya las clases proxy de Java en la ruta de clase.
-
Crear un origen de datos XML en memoria
-
Creación de un Java
DocumentBuilderFactory
llamando alDocumentBuilderFactory
class"newInstance
método. -
Creación de un Java
DocumentBuilder
llamando alDocumentBuilderFactory
del objetonewDocumentBuilder
método. -
Llame a la función
DocumentBuilder
del objetonewDocument
para crear una instancia deorg.w3c.dom.Document
objeto. -
Cree el elemento raíz del origen de datos XML invocando la variable
org.w3c.dom.Document
del objetocreateElement
método. Esto crea unElement
objeto que representa el elemento raíz. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento raíz al documento llamando a la funciónDocument
del objetoappendChild
y pase el objeto de elemento raíz como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element root = (Element)document.createElement("transaction"); document.appendChild(root);
-
Cree el elemento de encabezado de la fuente de datos XML llamando a la función
Document
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento de encabezado al elemento raíz llamando a la funciónroot
del objetoappendChild
y pase el objeto de elemento de encabezado como un argumento. Los elementos XML que se adjuntan al elemento de encabezado corresponden a la parte estática del formulario. Las siguientes líneas de código muestran esta lógica de aplicación:Element header = (Element)document.createElement("header"); root.appendChild(header);
-
Cree un elemento secundario que pertenezca al elemento del encabezado llamando a la función
Document
del objetocreateElement
y pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement
. A continuación, establezca un valor para el elemento secundario llamando a suappendChild
y pase elDocument
del objetocreateTextNode
como argumento. Especifique un valor de cadena que aparezca como el valor del elemento secundario. Finalmente, anexe el elemento secundario al elemento del encabezado llamando al elemento del encabezadoappendChild
y pase el objeto de elemento secundario como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element poNum= (Element)document.createElement("txtPONum"); poNum.appendChild(document.createTextNode("8745236985")); header.appendChild(LastName);
-
Agregue todos los elementos restantes al elemento del encabezado repitiendo el último subpaso para cada campo que aparezca en la parte estática del formulario (en el diagrama de origen de datos XML, estos campos se muestran en la sección A. (Consulte Explicación de los subgrupos de datos.)
-
Cree el elemento de detalle de la fuente de datos XML llamando a la función
Document
del objetocreateElement
método. Pase un valor de cadena que represente el nombre del elemento a la variablecreateElement
método. Conversión del valor devuelto aElement
. A continuación, anexe el elemento de detalle al elemento raíz llamando a la funciónroot
del objetoappendChild
y pase el objeto detail element como argumento. Los elementos XML que se adjuntan al elemento detalle corresponden a la parte dinámica del formulario. Las siguientes líneas de código muestran esta lógica de aplicación:Element detail = (Element)document.createElement("detail"); root.appendChild(detail);
-
Cree un elemento secundario que pertenezca al elemento de detalle llamando a la función
Document
del objetocreateElement
y pase un valor de cadena que represente el nombre del elemento. Conversión del valor devuelto aElement
. A continuación, establezca un valor para el elemento secundario llamando a suappendChild
y pase elDocument
del objetocreateTextNode
como argumento. Especifique un valor de cadena que aparezca como el valor del elemento secundario. Finalmente, anexe el elemento secundario al elemento de detalle llamando al elemento de detalleappendChild
y pase el objeto de elemento secundario como argumento. Las siguientes líneas de código muestran esta lógica de aplicación:Element txtPartNum = (Element)document.createElement("txtPartNum"); txtPartNum.appendChild(document.createTextNode("00010-100")); detail.appendChild(txtPartNum);
-
Repita el último subpaso para todos los elementos XML que desee anexar al elemento detalle. Para crear correctamente el origen de datos XML utilizado para rellenar el formulario de orden de compra, debe añadir los siguientes elementos XML al elemento detalle:
txtDescription
,numQty
ynumUnitPrice
. -
Repita los dos últimos subpasos para todos los elementos de datos utilizados para rellenar previamente el formulario.
-
-
Convertir el origen de datos XML
- Cree un
javax.xml.transform.Transformer
invocando el objetojavax.xml.transform.Transformer
estático del objetonewInstance
método. - Cree un
Transformer
invocando el objetoTransformerFactory
del objetonewTransformer
método. - Cree un
ByteArrayOutputStream
usando su constructor. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor y pasando elorg.w3c.dom.Document
objeto creado en el paso 1. - Cree un
javax.xml.transform.dom.DOMSource
usando su constructor y pasando elByteArrayOutputStream
objeto. - Rellenar el Java
ByteArrayOutputStream
invocando el objetojavax.xml.transform.Transformer
del objetotransform
y pasando eljavax.xml.transform.dom.DOMSource
yjavax.xml.transform.stream.StreamResult
objetos. - Cree una matriz de bytes y asigne el tamaño de la variable
ByteArrayOutputStream
a la matriz de bytes. - Rellene la matriz de bytes invocando la variable
ByteArrayOutputStream
del objetotoByteArray
método. - Cree un
BLOB
usando su constructor e invocando susetBinaryData
y pase la matriz de bytes.
- Cree un
-
Representar un formulario rellenado previamente
Invocar el
FormsService
del objetorenderPDFForm
y 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.
- A
BLOB
objeto que contiene datos para combinar con el formulario. Asegúrese de usar la variableBLOB
objeto creado en los pasos uno y dos. - A
PDFFormRenderSpecc
que almacena opciones en tiempo de ejecución. Para obtener más información, consulte Referencia de la API de AEM Forms. - A
URLSpec
que contiene valores de URI necesarios para el servicio Forms. - A
java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario. - Un vacío
com.adobe.idp.services.holders.BLOBHolder
objeto que rellena el método . Se utiliza para almacenar el formulario de PDF procesado. - Un vacío
javax.xml.rpc.holders.LongHolder
objeto que rellena el método . (Este argumento almacenará el número de páginas del formulario). - Un vacío
javax.xml.rpc.holders.StringHolder
objeto que rellena el método . (Este argumento almacenará el valor de configuración regional). - Un vacío
com.adobe.idp.services.holders.FormsResultHolder
que contendrá los resultados de esta operación.
La variable
renderPDFForm
rellena elcom.adobe.idp.services.holders.FormsResultHolder
objeto 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.- Cree un
FormResult
obteniendo el valor decom.adobe.idp.services.holders.FormsResultHolder
del objetovalue
miembro de datos. - Cree un
BLOB
objeto que contiene datos de formulario invocando la variableFormsResult
del objetogetOutputContent
método. - Obtenga el tipo de contenido de la variable
BLOB
invocando sugetContentType
método. - Configure las variables
javax.servlet.http.HttpServletResponse
tipo de contenido del objeto invocando susetContentType
y pasar el tipo de contenido de la variableBLOB
objeto. - Cree un
javax.servlet.ServletOutputStream
objeto utilizado para escribir el flujo de datos del formulario en el explorador web del cliente invocando la variablejavax.servlet.http.HttpServletResponse
del objetogetOutputStream
método. - Cree una matriz de bytes y rellénela invocando la variable
BLOB
del objetogetBinaryData
método. Esta tarea asigna el contenido de la variableFormsResult
a la matriz de bytes. - Invocar el
javax.servlet.http.HttpServletResponse
del objetowrite
método para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawrite
método.
note note NOTE La variable renderPDFForm
rellena elcom.adobe.idp.services.holders.FormsResultHolder
objeto 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.
Consulte también
Invocación de AEM Forms mediante la codificación Base64