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.
Resumen de los pasos
Para cifrar un documento de PDF con una contraseña, realice los siguientes pasos:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de cifrado.
- Obtenga un documento de PDF para cifrar.
- Establecer opciones de cifrado en tiempo de ejecución.
- Añada la contraseña.
- 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
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
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):
-
Incluir archivos de proyecto.
Incluya archivos JAR de cliente, como adobe-encryption-client.jar, en la ruta de clase del proyecto Java.
-
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 objetoServiceClientFactory
.
- Cree un objeto
-
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 objetojava.io.FileInputStream
.
- Cree un objeto
-
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 objetoPasswordEncryptionOptionSpec
y pasando un valor de enumeraciónPasswordEncryptionOption
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, especifiquePasswordEncryptionOption.ALL
. - Cree un objeto
java.util.List
que almacene los permisos de cifrado mediante el constructorArrayList
. - Especifique un permiso invocando el método
add
del objetojava.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, especifiquePasswordEncryptionPermission.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 objetoPasswordEncryptionOptionSpec
y pasando un valor de enumeración que especifique el nivel de compatibilidad de Acrobat. Por ejemplo, puede especificarPasswordEncryptionCompatability.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 objetoPasswordEncryptionOptionSpec
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 objetoPasswordEncryptionOptionSpec
y pasando un valor de cadena que representa la contraseña maestra.
- Cree un objeto
-
Añada la contraseña.
Cifre el documento del PDF invocando el método
encryptPDFUsingPassword
del objetoEncryptionServiceClient
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 objetocom.adobe.idp.Document
que contiene un documento de PDF cifrado con contraseña. - El objeto
-
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 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étodoencryptPDFUsingPassword
.
- Cree un objeto
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):
-
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
Reemplacelocalhost
por la dirección IP del servidor que hospeda AEM Forms. -
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 constructorSystem.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 atributolc_version
. Este atributo se utiliza al crear una referencia de servicio). -
Cree un objeto
System.ServiceModel.BasicHttpBinding
obteniendo el valor del campoEncryptionServiceClient.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
EncryptionServiceClient.ClientCredentials.UserName.UserName
. - Asigne el valor de contraseña correspondiente al campo
EncryptionServiceClient.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
-
-
Obtenga un documento de PDF para cifrar.
- Crear un objeto
BLOB
mediante su constructor. El objetoBLOB
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 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 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 datosMTOM
del objetoBLOB
.
- Crear un objeto
-
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 datosencryptOption
del objetoPasswordEncryptionOptionSpec
. Para cifrar todo el PDF, incluidos los metadatos y los datos adjuntos, asignePasswordEncryptionOption.ALL
a este miembro de datos. - Especifique la opción de compatibilidad de Acrobat asignando un valor de enumeración
PasswordEncryptionCompatability
al miembro de datoscompatability
del objetoPasswordEncryptionOptionSpec
. Por ejemplo, asignePasswordEncryptionCompatability.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 objetoPasswordEncryptionOptionSpec
. - 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 objetoPasswordEncryptionOptionSpec
.
- Crear un objeto
-
Añada la contraseña.
Cifre el documento del PDF invocando el método
encryptPDFUsingPassword
del objetoEncryptionServiceClient
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 objetoBLOB
que contiene un documento de PDF cifrado con contraseña. - El objeto
-
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étodoencryptPDFUsingPassword
. Rellene la matriz de bytes obteniendo el valor del miembro de datosMTOM
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 un archivo PDF invocando el método
Write
del objetoSystem.IO.BinaryWriter
y pasando la matriz de bytes.
- Cree un objeto