Cifrar documentos de PDF con una contraseña

Cuando se cifra un documento PDF con una contraseña, cualquier usuario deberá especificar la contraseña para abrir el documento PDF en Adobe Reader o Acrobat. Además, antes de que se pueda realizar otra operación de AEM Forms, como firmar digitalmente el documento de PDF, se debe desbloquear un documento de PDF cifrado con contraseña.

NOTE
Si carga un documento de PDF cifrado en el repositorio de AEM Forms, no podrá descifrar el documento de PDF ni extraer el contenido XDP. Se recomienda no cifrar un documento antes de cargarlo en el repositorio de AEM Forms. (Consulte Recursos de escritura.)
NOTE
Para obtener más información acerca del servicio Encryption, vea Referencia de servicios para AEM Forms.

Resumen de los pasos

Para cifrar un documento de PDF con una contraseña, realice los siguientes pasos:

  1. Incluir archivos de proyecto.
  2. Cree un objeto de API de cliente de cifrado.
  3. Obtenga un documento de PDF para cifrar.
  4. Establecer opciones de cifrado en tiempo de ejecución.
  5. Añada la contraseña.
  6. Guarde el documento de PDF cifrado como un archivo de PDF.

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.

Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-encryption-client.jar
  • adobe-utilities.jar (requerido si AEM Forms está implementado en JBoss)
  • jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)

Crear un objeto de API de cliente de cifrado

Para realizar mediante programación una operación de servicio Encryption, debe crear un cliente de servicio Encryption.

Obtener un documento de PDF para cifrar

Obtenga un documento de PDF sin cifrar para cifrar el documento con una contraseña. Si intenta proteger un documento de PDF que ya está cifrado, se producirá una excepción.

Establecer opciones de cifrado en tiempo de ejecución

Para cifrar un documento de PDF con una contraseña, debe especificar cuatro valores, incluidos dos valores de contraseña. El primer valor de contraseña se utiliza para cifrar el documento de PDF y debe especificarse al abrir el documento de PDF. El segundo valor de contraseña, denominado valor de contraseña maestra, se utiliza para quitar el cifrado del documento de PDF. Los valores de contraseña distinguen entre mayúsculas y minúsculas y estos dos valores de contraseña no pueden ser iguales.

Especifique los recursos del documento de PDF que desea cifrar. Puede cifrar todo el documento de PDF, todo excepto los metadatos del documento o solo los archivos adjuntos del documento. Si cifra únicamente los datos adjuntos del documento, se pedirá al usuario una contraseña cuando intente obtener acceso a los datos adjuntos del archivo.

Al cifrar un documento de PDF, puede especificar los permisos asociados al documento protegido. Al especificar permisos, puede controlar las acciones que puede realizar un usuario que abre un documento de PDF cifrado con contraseña. Por ejemplo, para extraer correctamente datos de formulario, debe establecer los siguientes permisos:

  • PASSWORD_EDIT_ADD
  • PASSWORD_EDIT_MODIFY
NOTE
Los permisos se especifican como PasswordEncryptionPermission valores de enumeración.

Agregar la contraseña

Después de recuperar un documento de PDF no protegido y establecer los valores de cifrado en tiempo de ejecución, puede agregar una contraseña al documento de PDF.

Guardar el documento de PDF cifrado como archivo de PDF

Puede guardar el documento de PDF cifrado con contraseña como un archivo de PDF.

Consulte también

Cifrado de un documento de PDF mediante la API de Java

Cifrado de un documento de PDF mediante la API de servicio web

Incluir archivos de biblioteca Java de AEM Forms

Estableciendo propiedades de conexión

Inicio rápido de API de servicio de cifrado

Cifrar documentos de PDF con certificados

Cifrado de un documento de PDF mediante la API de Java

Cifrar un documento de PDF con una contraseña mediante la API de cifrado (Java):

  1. Incluir archivos de proyecto.

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

  2. Crear una API de cliente de cifrado.

    • Cree un objeto ServiceClientFactory que contenga propiedades de conexión.
    • Cree un objeto EncryptionServiceClient utilizando su constructor y pasando el objeto ServiceClientFactory.
  3. Obtenga un documento de PDF para cifrar.

    • Cree un objeto java.io.FileInputStream que represente el documento de PDF que se va a cifrar utilizando su constructor y pasando un valor de cadena que especifique la ubicación del documento de PDF.
    • Cree un objeto com.adobe.idp.Document utilizando su constructor y pasando el objeto java.io.FileInputStream.
  4. Establecer opciones de cifrado en tiempo de ejecución.

    • Cree un objeto PasswordEncryptionOptionSpec invocando su constructor.
    • Especifique los recursos de documentos de PDF que se van a cifrar invocando el método setEncryptOption del objeto PasswordEncryptionOptionSpec y pasando un valor de enumeración PasswordEncryptionOption que especifica los recursos de documento que se van a cifrar. Por ejemplo, para cifrar todo el documento del PDF, incluidos sus metadatos y sus datos adjuntos, especifique PasswordEncryptionOption.ALL.
    • Cree un objeto java.util.List que almacene los permisos de cifrado mediante el constructor ArrayList.
    • Especifique un permiso invocando el método add del objeto java.util.List y pasando un valor de enumeración que corresponda al permiso que desea establecer. Por ejemplo, para establecer el permiso que permite a un usuario copiar datos en el documento del PDF, especifique PasswordEncryptionPermission.PASSWORD_EDIT_COPY. (Repita este paso para cada permiso que desee establecer).
    • Especifique la opción de compatibilidad de Acrobat invocando el método setCompatability del objeto PasswordEncryptionOptionSpec y pasando un valor de enumeración que especifique el nivel de compatibilidad de Acrobat. Por ejemplo, puede especificar PasswordEncryptionCompatability.ACRO_7.
    • Especifique el valor de contraseña que permite a un usuario abrir el documento de PDF cifrado invocando el método setDocumentOpenPassword del objeto PasswordEncryptionOptionSpec y pasando un valor de cadena que representa la contraseña de apertura.
    • Especifique el valor de la contraseña maestra que permite a un usuario quitar el cifrado del documento de PDF invocando el método setPermissionPassword del objeto PasswordEncryptionOptionSpec y pasando un valor de cadena que representa la contraseña maestra.
  5. Añada la contraseña.

    Cifre el documento del PDF invocando el método encryptPDFUsingPassword del objeto EncryptionServiceClient y pasando los siguientes valores:

    • El objeto com.adobe.idp.Document que contiene el documento de PDF que se va a cifrar con la contraseña.
    • El objeto PasswordEncryptionOptionSpec que contiene opciones de cifrado en tiempo de ejecución.

    El método encryptPDFUsingPassword devuelve un objeto com.adobe.idp.Document que contiene un documento de PDF cifrado con contraseña.

  6. Guarde el documento de PDF cifrado como un archivo de PDF.

    • Cree un objeto java.io.File y asegúrese de que la extensión del archivo sea .pdf.
    • 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 encryptPDFUsingPassword.

Cifrado de un documento de PDF mediante la API de servicio web

Cifrar un documento de PDF con una contraseña mediante la API de cifrado (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/EncryptionService?WSDL&lc_version=9.0.1.

    NOTE
    Reemplace localhost por la dirección IP del servidor que hospeda AEM Forms.
  2. Cree un objeto de API de cliente de cifrado.

    • Cree un objeto EncryptionServiceClient utilizando su constructor predeterminado.

    • Cree un objeto EncryptionServiceClient.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/EncryptionService?WSDL). No necesita usar el atributo lc_version. Este atributo se utiliza al crear una referencia de servicio).

    • Cree un objeto System.ServiceModel.BasicHttpBinding obteniendo el valor del campo EncryptionServiceClient.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 EncryptionServiceClient.ClientCredentials.UserName.UserName.
      • Asigne el valor de contraseña correspondiente al campo EncryptionServiceClient.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. Obtenga un documento de PDF para cifrar.

    • Crear un objeto BLOB mediante su constructor. El objeto BLOB se usa para almacenar un documento de PDF cifrado con una contraseña.
    • Cree un objeto System.IO.FileStream invocando su constructor y pasando un valor de cadena que represente la ubicación de archivo del documento de PDF que se va a cifrar y el modo en que se va a abrir el archivo.
    • 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 a leer la matriz de bytes, la posición inicial y la longitud de secuencia.
    • Rellene el objeto BLOB asignando el contenido de la matriz de bytes al miembro de datos MTOM del objeto BLOB.
  4. Establecer opciones de cifrado en tiempo de ejecución.

    • Crear un objeto PasswordEncryptionOptionSpec mediante su constructor.
    • Especifique los recursos de documentos del PDF que se van a cifrar asignando un valor de enumeración PasswordEncryptionOption al miembro de datos encryptOption del objeto PasswordEncryptionOptionSpec. Para cifrar todo el PDF, incluidos los metadatos y los datos adjuntos, asigne PasswordEncryptionOption.ALL a este miembro de datos.
    • Especifique la opción de compatibilidad de Acrobat asignando un valor de enumeración PasswordEncryptionCompatability al miembro de datos compatability del objeto PasswordEncryptionOptionSpec. Por ejemplo, asigne PasswordEncryptionCompatability.ACRO_7 a este miembro de datos.
    • Especifique el valor de contraseña que permite a un usuario abrir el documento de PDF cifrado asignando un valor de cadena que representa la contraseña de apertura al miembro de datos documentOpenPassword del objeto PasswordEncryptionOptionSpec.
    • Especifique el valor de contraseña que permite a un usuario quitar el cifrado del documento del PDF asignando un valor de cadena que represente la contraseña maestra al miembro de datos permissionPassword del objeto PasswordEncryptionOptionSpec.
  5. Añada la contraseña.

    Cifre el documento del PDF invocando el método encryptPDFUsingPassword del objeto EncryptionServiceClient y pasando los siguientes valores:

    • El objeto BLOB que contiene el documento de PDF que se va a cifrar con la contraseña.
    • El objeto PasswordEncryptionOptionSpec que contiene opciones de cifrado en tiempo de ejecución.

    El método encryptPDFUsingPassword devuelve un objeto BLOB que contiene un documento de PDF cifrado con contraseña.

  6. Guarde el documento de PDF cifrado como un archivo de PDF.

    • Cree un objeto System.IO.FileStream invocando su constructor y pasando un valor de cadena que represente la ubicación de archivo del documento de PDF protegido.
    • Cree una matriz de bytes que almacene el contenido de datos del objeto BLOB devuelto por el método encryptPDFUsingPassword. Rellene la matriz de bytes obteniendo el valor del miembro de datos MTOM 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 un archivo PDF invocando el método Write del objeto System.IO.BinaryWriter y pasando la matriz de bytes.