Creación de documentos de PDF
Puede utilizar el servicio Output para crear un documento de PDF basado en un diseño de formulario y en los datos de formulario XML proporcionados. El documento de PDF creado por el servicio Output no es un documento interactivo de PDF; un usuario no puede introducir ni modificar datos de formulario.
Si desea crear un documento de PDF pensado para el almacenamiento a largo plazo, se recomienda crear un documento de PDF/A. (Consulte Creación de documentos de PDF/A.)
Para crear un formulario interactivo de PDF que permita al usuario introducir datos, utilice el servicio de Forms. (Consulte Procesamiento de PDF forms interactivos.)
Resumen de los pasos
Para crear un documento de PDF, realice los siguientes pasos:
- Incluir archivos de proyecto.
- Cree un objeto Cliente de salida.
- Hacer referencia a una fuente de datos XML.
- Establecer las opciones de tiempo de ejecución del PDF.
- Establecer las opciones de procesamiento en tiempo de ejecución.
- Genera un documento de PDF.
- Recupere los resultados de la operación.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente con Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
si AEM Forms se implementa en un servidor de aplicaciones J2EE compatible que no sea JBoss, debe reemplazar los archivos adobe-utilities.jar y jbossall-client.jar con archivos JAR específicos del servidor de aplicaciones J2EE en el que está implementado AEM Forms.
Crear un objeto de cliente de salida
Para poder realizar mediante programación una operación del servicio Output, debe crear un objeto de cliente del servicio Output. Si está usando la API de Java, cree un objeto OutputClient
. Si está usando la API del servicio web de salida, cree un objeto OutputServiceService
.
Hacer referencia a un origen de datos XML
Para combinar datos con el diseño de formulario, debe hacer referencia a un origen de datos XML que contenga datos. Debe existir un elemento XML para cada campo de formulario que planee rellenar con datos. 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. Si se especifican todos los elementos XML, no es necesario coincidir con el orden en que se muestran.
Consulte el siguiente ejemplo de formulario de solicitud de préstamo.
Para combinar datos en este diseño de formulario, debe crear una fuente de datos XML que corresponda al formulario. El siguiente XML representa una fuente de datos XML XDP que corresponde al formulario de aplicación hipotecaria de ejemplo.
<?xml version="1.0" encoding="UTF-8" ?>
- <xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
- <xfa:data>
- <data>
- <Layer>
<closeDate>1/26/2007</closeDate>
<lastName>Johnson</lastName>
<firstName>Jerry</firstName>
<mailingAddress>JJohnson@NoMailServer.com</mailingAddress>
<city>New York</city>
<zipCode>00501</zipCode>
<state>NY</state>
<dateBirth>26/08/1973</dateBirth>
<middleInitials>D</middleInitials>
<socialSecurityNumber>(555) 555-5555</socialSecurityNumber>
<phoneNumber>5555550000</phoneNumber>
</Layer>
- <Mortgage>
<mortgageAmount>295000.00</mortgageAmount>
<monthlyMortgagePayment>1724.54</monthlyMortgagePayment>
<purchasePrice>300000</purchasePrice>
<downPayment>5000</downPayment>
<term>25</term>
<interestRate>5.00</interestRate>
</Mortgage>
</data>
</xfa:data>
</xfa:datasets>
Establecer opciones de tiempo de ejecución de PDF
Establezca la opción URI de archivo al crear un documento de PDF. Esta opción especifica el nombre y la ubicación del archivo de PDF que genera el servicio Output.
Establecer opciones de tiempo de ejecución de procesamiento
Puede establecer las opciones de procesamiento en tiempo de ejecución al crear un documento de PDF. Aunque estas opciones no son necesarias (a diferencia de las opciones de tiempo de ejecución de PDF que son necesarias), puede realizar tareas como mejorar el rendimiento del servicio Output. Por ejemplo, puede almacenar en caché el diseño de formulario que utiliza el servicio Output para mejorar su rendimiento.
Si utiliza un formulario Acrobat etiquetado como entrada, no puede utilizar el Java del servicio de salida o la API del servicio web para desactivar la configuración etiquetada. Si intenta establecer esta opción en false
mediante programación, el documento de PDF de resultados aún estará etiquetado.
RenderOptionsSpec
. (Consulte Referencia de la API de AEM Forms).Generar un documento de PDF
Después de hacer referencia a un origen de datos XML válido que contiene datos de formulario y establecer las opciones en tiempo de ejecución, puede invocar el servicio Output, que genera un documento de PDF.
Al generar un documento de PDF, se especifican los valores de URI que requiere el servicio Output para crear un documento de PDF. Un diseño de formulario se puede almacenar en ubicaciones como el sistema de archivos del servidor o como parte de una aplicación de AEM Forms. Se puede hacer referencia a un diseño de formulario (u otros recursos como un archivo de imagen) que existe como parte de una aplicación de Forms mediante el valor de URI de 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 Applications/FormsApplication:
Para obtener acceso al archivo Loan.xdp mostrado en la ilustración anterior, especifique repository:///Applications/FormsApplication/1.0/FormsFolder/
como el tercer parámetro pasado al método generatePDFOutput
del objeto OutputClient
. Especifique el nombre del formulario (Loan.xdp) como el segundo parámetro pasado al método generatePDFOutput
del objeto OutputClient
.
Si el archivo XDP contiene imágenes (u otros recursos como fragmentos), coloque los recursos en la misma carpeta de aplicación que el archivo XDP. AEM Forms utiliza el URI de raíz de contenido como ruta base para resolver referencias a imágenes. Por ejemplo, si el archivo Loan.xdp contiene una imagen, asegúrese de colocar la imagen en Applications/FormsApplication/1.0/FormsFolder/
.
generatePDFOutput
o generatePrintedOutput
del objeto OutputClient
.Recuperar los resultados de la operación
Una vez que el servicio Output realiza una operación, devuelve varios elementos de datos, como datos XML de estado, que especifican si la operación se realizó correctamente.
Consulte también
Creación de un documento de PDF mediante la API de Java
Creación de un documento de PDF mediante la API de servicio web
Incluir archivos de biblioteca Java de AEM Forms
Creación de un documento de PDF mediante la API de Java
Cree un documento de PDF con la API de salida (Java):
-
Incluir archivos de proyecto.
Incluya archivos JAR de cliente, como adobe-output-client.jar, en la ruta de clase del proyecto Java.
-
Cree un objeto Cliente de salida.
- Cree un objeto
ServiceClientFactory
que contenga propiedades de conexión. - Cree un objeto
OutputClient
utilizando su constructor y pasando el objetoServiceClientFactory
.
- Cree un objeto
-
Hacer referencia a una fuente de datos XML.
- Cree un objeto
java.io.FileInputStream
que represente el origen de datos XML utilizado para rellenar el documento de PDF utilizando su constructor y pasando un valor de cadena que especifique la ubicación del archivo XML. - Crear un objeto
com.adobe.idp.Document
mediante su constructor. Pase el objetojava.io.FileInputStream
.
- Cree un objeto
-
Establecer las opciones de tiempo de ejecución del PDF.
- Crear un objeto
PDFOutputOptionsSpec
mediante su constructor. - Establezca la opción URI de archivo invocando el método
setFileURI
del objetoPDFOutputOptionsSpec
. Pase un valor de cadena que especifique la ubicación del archivo PDF que genera el servicio Output. La opción URI de archivo es relativa al servidor de aplicaciones J2EE que aloja AEM Forms, no al equipo cliente.
- Crear un objeto
-
Establecer las opciones de procesamiento en tiempo de ejecución.
- Crear un objeto
RenderOptionsSpec
mediante su constructor. - Almacene en caché el diseño de formulario para mejorar el rendimiento del servicio Output invocando
setCacheEnabled
del objetoRenderOptionsSpec
y pasandotrue
.
NOTA
No puede establecer la versión del documento de PDF mediante el métodosetPdfVersion
del objetoRenderOptionsSpec
si el documento de entrada es un formulario de Acrobat (un formulario creado en Acrobat) o un documento XFA firmado o certificado. El documento del PDF de salida conserva la versión original del PDF. Del mismo modo, no puede establecer la opción de Adobe PDF etiquetado invocando el métodosetTaggedPDF
del objetoRenderOptionsSpec
si el documento de entrada es un formulario de Acrobat o un documento XFA firmado o certificado.NOTA
No puede establecer la opción de PDF linealizado mediante el métodosetLinearizedPDF
del objetoRenderOptionsSpec
si el documento del PDF de entrada está certificado o firmado digitalmente. (Consulte Documentos de PDF de firma digital.) - Crear un objeto
-
Genera un documento de PDF.
Cree un documento de PDF invocando el método
generatePDFOutput
del objetoOutputClient
y pasando los siguientes valores:- Un valor de enumeración
TransformationFormat
. Para generar un documento de PDF, especifiqueTransformationFormat.PDF
. - Un valor de cadena que especifica el nombre del diseño de formulario.
- Valor de cadena que especifica la raíz de contenido donde se encuentra el diseño de formulario.
- Objeto
PDFOutputOptionsSpec
que contiene opciones de tiempo de ejecución de PDF. - Objeto
RenderOptionsSpec
que contiene opciones de procesamiento en tiempo de ejecución. - El objeto
com.adobe.idp.Document
que contiene el origen de datos XML que contiene los datos que se van a combinar con el diseño de formulario.
El método
generatePDFOutput
devuelve un objetoOutputResult
que contiene los resultados de la operación.NOTA
Al generar un documento de PDF invocando el métodogeneratePDFOutput
, no se pueden combinar datos con un formulario de PDF XFA firmado o certificado. (Consulte Firmar y certificar documentos digitalmente.)NOTA
El métodogetRecordLevelMetaDataList
del objetoOutputResult
devuelvenull
.NOTA
También puede crear un documento de PDF invocando el métodogeneratePDFOutput2
del objetoOutputClient
. (Consulte Pasar documentos en Content Services (obsoleto) al servicio Output.) - Un valor de enumeración
-
Recupere los resultados de la operación.
- Recupere un objeto
com.adobe.idp.Document
que represente el estado de la operacióngeneratePDFOutput
invocando el métodogetStatusDoc
del objetoOutputResult
. Este método devuelve datos XML de estado que especifican si la operación se realizó correctamente. - Cree un objeto
java.io.File
que contenga los resultados de la operación. Asegúrese de que la extensión del nombre de archivo sea .xml. - Invoque el método
copyToFile
del objetocom.adobe.idp.Document
para copiar el contenido del objetocom.adobe.idp.Document
en el archivo (asegúrese de utilizar el objetocom.adobe.idp.Document
devuelto por el métodogetStatusDoc
).
Aunque el servicio Output escribe el documento del PDF en la ubicación especificada por el argumento que se pasa al método
setFileURI
del objetoPDFOutputOptionsSpec
, puede recuperar mediante programación el documento PDF/A invocando el métodogetGeneratedDoc
del objetoOutputResult
. - Recupere un objeto
Creación de un documento de PDF mediante la API de servicio web
Cree un documento de PDF mediante la API de salida (servicio web):
-
Incluir archivos de proyecto.
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición de WSDL:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1
.NOTA
Reemplacelocalhost
por la dirección IP del servidor que hospeda AEM Forms. -
Cree un objeto Cliente de salida.
-
Cree un objeto
OutputServiceClient
utilizando su constructor predeterminado. -
Cree un objeto
OutputServiceClient.Endpoint.Address
mediante el constructorSystem.ServiceModel.EndpointAddress
. Pase un valor de cadena que especifique el WSDL al servicio AEM Forms (por ejemplo,http://localhost:8080/soap/services/OutputService?blob=mtom
). No necesita usar el atributolc_version
. Este atributo se utiliza al crear una referencia de servicio. Sin embargo, especifique?blob=mtom
para utilizar MTOM. -
Cree un objeto
System.ServiceModel.BasicHttpBinding
obteniendo el valor del campoOutputServiceClient.Endpoint.Binding
. Convertir el valor devuelto enBasicHttpBinding
. -
Establezca el campo
MessageEncoding
del objetoSystem.ServiceModel.BasicHttpBinding
enWSMessageEncoding.Mtom
. Este valor garantiza que se utiliza MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- AEM Asigne el nombre de usuario de los formularios de la al campo
OutputServiceClient.ClientCredentials.UserName.UserName
. - Asigne el valor de contraseña correspondiente al campo
OutputServiceClient.ClientCredentials.UserName.Password
. - Asigne el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asigne el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- AEM Asigne el nombre de usuario de los formularios de la al campo
-
-
Hacer referencia a una fuente de datos XML.
- Crear un objeto
BLOB
mediante su constructor. El objetoBLOB
se usa para almacenar datos XML que se combinarán con el documento de PDF. - Cree un objeto
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que represente la ubicación del archivo XML que contiene los datos del formulario. - Cree una matriz de bytes que almacene el contenido del objeto
System.IO.FileStream
. Puede determinar el tamaño de la matriz de bytes obteniendo la propiedadLength
del objetoSystem.IO.FileStream
. - Rellene la matriz de bytes con datos de secuencia invocando el método
Read
del objetoSystem.IO.FileStream
y pasando la matriz de bytes, la posición inicial y la longitud de secuencia para que se lea. - Rellene el objeto
BLOB
asignando su campoMTOM
con el contenido de la matriz de bytes.
- Crear un objeto
-
Establecer las opciones de tiempo de ejecución del PDF
- Crear un objeto
PDFOutputOptionsSpec
mediante su constructor. - Establezca la opción URI de archivo asignando un valor de cadena que especifique la ubicación del archivo de PDF que el servicio Output genera en el miembro de datos
fileURI
del objetoPDFOutputOptionsSpec
. La opción URI de archivo es relativa al servidor de aplicaciones J2EE que aloja AEM Forms, no al equipo cliente.
- Crear un objeto
-
Establecer las opciones de procesamiento en tiempo de ejecución.
- Crear un objeto
RenderOptionsSpec
mediante su constructor. - Almacene en caché el diseño de formulario para mejorar el rendimiento del servicio Output al asignar el valor
true
al miembro de datoscacheEnabled
del objetoRenderOptionsSpec
.
NOTA
No puede establecer la versión del documento de PDF mediante el métodosetPdfVersion
del objetoRenderOptionsSpec
si el documento de entrada es un formulario de Acrobat (un formulario creado en Acrobat) o un documento XFA firmado o certificado. El documento del PDF de salida conserva la versión original del PDF. Del mismo modo, no puede establecer la opción de Adobe PDF etiquetado invocando el métodosetTaggedPDF
* del objetoRenderOptionsSpec
si el documento de entrada es un formulario de Acrobat o un documento XFA firmado o certificado.*NOTA
No puede establecer la opción de PDF linealizado mediante el miembrolinearizedPDF
del objetoRenderOptionsSpec
si el documento de PDF de entrada está certificado o firmado digitalmente. (Consulte Documentos de PDF de firma digital.) - Crear un objeto
-
Genera un documento de PDF.
Cree un documento de PDF invocando el método
generatePDFOutput
del objetoOutputServiceService
y pasando los siguientes valores:- Un valor de enumeración
TransformationFormat
. Para generar un documento de PDF, especifiqueTransformationFormat.PDF
. - Un valor de cadena que especifica el nombre del diseño de formulario.
- Valor de cadena que especifica la raíz de contenido donde se encuentra el diseño de formulario.
- Objeto
PDFOutputOptionsSpec
que contiene opciones de tiempo de ejecución de PDF. - Objeto
RenderOptionsSpec
que contiene opciones de procesamiento en tiempo de ejecución. - El objeto
BLOB
que contiene el origen de datos XML que contiene los datos que se van a combinar con el diseño de formulario. - Un objeto
BLOB
que se rellena con el métodogeneratePDFOutput
. El métodogeneratePDFOutput
rellena este objeto con metadatos generados que describen el documento. (Este valor de parámetro solo es necesario para la invocación del servicio web). - Un objeto
BLOB
que se rellena con el métodogeneratePDFOutput
. El métodogeneratePDFOutput
rellena este objeto con datos de resultados. (Este valor de parámetro solo es necesario para la invocación del servicio web). - Un objeto
OutputResult
que contiene los resultados de la operación. (Este valor de parámetro solo es necesario para la invocación del servicio web).
NOTA
Al generar un documento de PDF invocando el métodogeneratePDFOutput
, no se pueden combinar datos con un formulario de PDF XFA firmado o certificado. (Consulte Firmar y certificar documentos digitalmente.)NOTA
También puede crear un documento de PDF invocando el métodogeneratePDFOutput2
del objetoOutputClient
. (Consulte Pasar documentos en Content Services (obsoleto) al servicio Output.) - Un valor de enumeración
-
Recupere los resultados de la operación.
- Cree un objeto
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que represente una ubicación de archivo XML que contenga datos de resultado. Asegúrese de que la extensión del nombre de archivo sea .xml. - Cree una matriz de bytes que almacene el contenido de datos del objeto
BLOB
que el métodogeneratePDFOutput
del objetoOutputServiceService
rellenó con datos de resultados (el octavo parámetro). Rellene la matriz de bytes obteniendo el valor del objetoMTOM
field
del objetoBLOB
. - Cree un objeto
System.IO.BinaryWriter
invocando su constructor y pasando el objetoSystem.IO.FileStream
. - Escriba el contenido de la matriz de bytes en el archivo XML invocando el método
Write
del objetoSystem.IO.BinaryWriter
y pasando la matriz de bytes.
Ver también
- Cree un objeto
generateOutput
del objeto OutputServiceService
está obsoleto.Creación de documentos de PDF/A
Puede utilizar el servicio Output para crear un documento de PDF/A. Como PDF/A es un formato de archivo para la preservación a largo plazo del contenido del documento, todas las fuentes están incrustadas y el archivo no está comprimido. Como resultado, un documento PDF/A suele ser más grande que un documento PDF estándar. Además, un documento de PDF/A no contiene contenido de audio y vídeo. Al igual que otras tareas del servicio Output, puede proporcionar un diseño de formulario y datos para combinarlos con uno para crear un documento de PDF/A.
La especificación PDF/A-1 consta de dos niveles de conformidad, a saber, a y b. La principal diferencia entre los dos es la compatibilidad con la estructura lógica (accesibilidad), que no es necesaria para el nivel de conformidad b. Independientemente del nivel de conformidad, PDF/A-1 dicta que todas las fuentes estén incrustadas en el documento PDF/A generado.
Aunque PDF/A es el estándar para archivar documentos de PDF, no es obligatorio que PDF/A se utilice para archivar si un documento de PDF estándar satisface las necesidades de su empresa. El propósito del estándar PDF/A es crear un archivo de PDF que se pueda almacenar durante un largo periodo de tiempo y que cumpla los requisitos de conservación de documentos. Por ejemplo, una dirección URL no se puede incrustar en un PDF/A porque, con el tiempo, la dirección URL puede no ser válida.
Su organización debe evaluar sus propias necesidades, el tiempo que desea conservar el documento, las consideraciones sobre el tamaño del archivo y determinar su propia estrategia de archivado. Puede determinar mediante programación si un documento de PDF es compatible con PDF/A mediante el servicio DocConverter. (Consulte Determinación Programática De La Conformidad De PDF/A.)
Un documento de PDF/A debe utilizar la fuente especificada en el diseño de formulario y las fuentes no se pueden sustituir. Como resultado, si una fuente ubicada en un documento de PDF no está disponible en el sistema operativo (SO) del host, se produce una excepción.
Cuando se abre un documento de PDF/A en Acrobat, aparece un mensaje que confirma que el documento es un documento de PDF/A, como se muestra en la siguiente ilustración.