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.)

NOTA
Para obtener más información acerca del servicio Output, vea Referencia de servicios para AEM Forms.

Resumen de los pasos

Para crear un documento de PDF, realice los siguientes pasos:

  1. Incluir archivos de proyecto.
  2. Cree un objeto Cliente de salida.
  3. Hacer referencia a una fuente de datos XML.
  4. Establecer las opciones de tiempo de ejecución del PDF.
  5. Establecer las opciones de procesamiento en tiempo de ejecución.
  6. Genera un documento de PDF.
  7. 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.

cp_cp_loanformdata

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.

NOTA
En lugar de establecer la opción de tiempo de ejecución de URI de archivo, puede recuperar mediante programación el documento de PDF a partir del tipo de datos complejo que devuelve el servicio Output. Sin embargo, al establecer la opción de tiempo de ejecución de URI de archivo, no es necesario crear una lógica de aplicación que recupere mediante programación el documento de PDF.

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.

NOTA
Si no especifica las opciones de procesamiento en tiempo de ejecución, se utilizarán los valores predeterminados. Para obtener información acerca de la representación de opciones en tiempo de ejecución, vea la referencia de clase 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:

cp_cp_formrepository

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/.

NOTA
Puede hacer referencia a un URI de aplicación de Forms al invocar los métodos generatePDFOutput o generatePrintedOutput del objeto OutputClient.
NOTA
Para ver un inicio rápido completo que crea un documento de PDF haciendo referencia a un XDP en una aplicación de Forms, consulte Inicio rápido (modo EJB): Creación de un documento de PDF basado en un archivo XDP de aplicación mediante la API de Java.

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

Estableciendo propiedades de conexión

Inicios rápidos de API del servicio de salida

Creación de un documento de PDF mediante la API de Java

Cree un documento de PDF con la API de salida (Java):

  1. Incluir archivos de proyecto.

    Incluya archivos JAR de cliente, como adobe-output-client.jar, en la ruta de clase del proyecto Java.

  2. 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 objeto ServiceClientFactory.
  3. 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 objeto java.io.FileInputStream.
  4. 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 objeto PDFOutputOptionsSpec. 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.
  5. 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 objeto RenderOptionsSpec y pasando true.
    NOTA
    No puede establecer la versión del documento de PDF mediante el método setPdfVersion del objeto RenderOptionsSpec 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étodo setTaggedPDF del objeto RenderOptionsSpec 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étodo setLinearizedPDF del objeto RenderOptionsSpec si el documento del PDF de entrada está certificado o firmado digitalmente. (Consulte Documentos de PDF de firma digital.)
  6. Genera un documento de PDF.

    Cree un documento de PDF invocando el método generatePDFOutput del objeto OutputClient y pasando los siguientes valores:

    • Un valor de enumeración TransformationFormat. Para generar un documento de PDF, especifique TransformationFormat.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 objeto OutputResult que contiene los resultados de la operación.

    NOTA
    Al generar un documento de PDF invocando el método generatePDFOutput, no se pueden combinar datos con un formulario de PDF XFA firmado o certificado. (Consulte Firmar y certificar documentos digitalmente.)
    NOTA
    El método getRecordLevelMetaDataList del objeto OutputResult devuelve null.
    NOTA
    También puede crear un documento de PDF invocando el método generatePDFOutput2 del objeto OutputClient. (Consulte Pasar documentos en Content Services (obsoleto) al servicio Output.)
  7. Recupere los resultados de la operación.

    • Recupere un objeto com.adobe.idp.Document que represente el estado de la operación generatePDFOutput invocando el método getStatusDoc del objeto OutputResult. 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 objeto com.adobe.idp.Document para copiar el contenido del objeto com.adobe.idp.Document en el archivo (asegúrese de utilizar el objeto com.adobe.idp.Document devuelto por el método getStatusDoc).

    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 objeto PDFOutputOptionsSpec, puede recuperar mediante programación el documento PDF/A invocando el método getGeneratedDoc del objeto OutputResult.

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):

  1. 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
    Reemplace localhost por la dirección IP del servidor que hospeda AEM Forms.
  2. Cree un objeto Cliente de salida.

    • Cree un objeto OutputServiceClient utilizando su constructor predeterminado.

    • Cree un objeto OutputServiceClient.Endpoint.Address mediante el constructor System.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 atributo lc_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 campo OutputServiceClient.Endpoint.Binding. Convertir el valor devuelto en BasicHttpBinding.

    • Establezca el campo MessageEncoding del objeto System.ServiceModel.BasicHttpBinding en WSMessageEncoding.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 campo BasicHttpBindingSecurity.Transport.ClientCredentialType.
      • Asigne el valor constante BasicHttpSecurityMode.TransportCredentialOnly al campo BasicHttpBindingSecurity.Security.Mode.
  3. Hacer referencia a una fuente de datos XML.

    • Crear un objeto BLOB mediante su constructor. El objeto BLOB 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 propiedad Length del objeto System.IO.FileStream.
    • Rellene la matriz de bytes con datos de secuencia invocando el método Read del objeto System.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 campo MTOM con el contenido de la matriz de bytes.
  4. 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 objeto PDFOutputOptionsSpec. La opción URI de archivo es relativa al servidor de aplicaciones J2EE que aloja AEM Forms, no al equipo cliente.
  5. 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 datos cacheEnabled del objeto RenderOptionsSpec.
    NOTA
    No puede establecer la versión del documento de PDF mediante el método setPdfVersion del objeto RenderOptionsSpec 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étodo setTaggedPDF* del objeto RenderOptionsSpec 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 miembro linearizedPDF del objeto RenderOptionsSpec si el documento de PDF de entrada está certificado o firmado digitalmente. (Consulte Documentos de PDF de firma digital.)
  6. Genera un documento de PDF.

    Cree un documento de PDF invocando el método generatePDFOutputdel objeto OutputServiceService y pasando los siguientes valores:

    • Un valor de enumeración TransformationFormat. Para generar un documento de PDF, especifique TransformationFormat.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étodo generatePDFOutput. El método generatePDFOutput 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étodo generatePDFOutput. El método generatePDFOutput 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étodo generatePDFOutput, 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étodo generatePDFOutput2 del objeto OutputClient. (Consulte Pasar documentos en Content Services (obsoleto) al servicio Output.)
  7. 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étodo generatePDFOutput del objeto OutputServiceService rellenó con datos de resultados (el octavo parámetro). Rellene la matriz de bytes obteniendo el valor del objeto MTOM field del objeto BLOB.
    • Cree un objeto System.IO.BinaryWriter invocando su constructor y pasando el objeto System.IO.FileStream.
    • Escriba el contenido de la matriz de bytes en el archivo XML invocando el método Write del objeto System.IO.BinaryWriter y pasando la matriz de bytes.

    Ver también

NOTA
El método 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.

cp_cp_pdfamessage

NOTA
El sitio web de AIIM tiene una sección de preguntas frecuentes del PDF/A a la que puede acceder en https://www.loc.gov/preservation/digital/formats/fdd/fdd000125.shtml.
NOTA
Para obtener más información acerca del servicio Output, vea Referencia de servicios para AEM Forms.