Cifrar el PDF con una contraseña de permiso
Se requiere una contraseña de permisos, también conocida como contraseña de propietario o maestra, para copiar, editar o imprimir un documento de PDF. Aprenda a utilizar la API DocAssuranceService para aplicar una contraseña de permiso a un PDF mediante programación.
El siguiente código JSP cifra un PDF con una contraseña de permisos:
<%--
Encrypt PDF with permissions password
--%>
<%@include file="/libs/foundation/global.jsp"%>
<%@ page import="com.adobe.fd.docassurance.client.api.EncryptionOptions,java.util.*,java.io.*,com.adobe.fd.encryption.client.*" %>
<%@page session="false" %>
<%
String filePath = request.getParameter("saveLocation");
InputStream pdfIS = null;
com.adobe.aemfd.docmanager.Document generatedDocument = null;
// get the pdf file
javax.servlet.http.Part pdfPart = request.getPart("pdfFile");
pdfIS = pdfPart.getInputStream();
com.adobe.aemfd.docmanager.Document pdfDocument = new com.adobe.aemfd.docmanager.Document(pdfIS);
// encrypt the document with permssions password. You can only print this document
PasswordEncryptionOptionSpec poSpec = new PasswordEncryptionOptionSpec();
poSpec.setCompatability(PasswordEncryptionCompatability.ACRO_X);
poSpec.setEncryptOption(PasswordEncryptionOption.ALL);
List<PasswordEncryptionPermission> permissionList = new ArrayList<PasswordEncryptionPermission>();
permissionList.add(PasswordEncryptionPermission.PASSWORD_PRINT_LOW);
//hardcoding passwords into code is for demonstration purposes only.In real life scenarios the password is sourced from a secure location
poSpec.setPermissionPassword("adobe");
poSpec.setPermissionsRequested(permissionList);
EncryptionOptions encryptionOptions = EncryptionOptions.getInstance();
encryptionOptions.setEncryptionType(com.adobe.fd.docassurance.client.api.DocAssuranceServiceOperationTypes.ENCRYPT_WITH_PASSWORD);
encryptionOptions.setPasswordEncryptionOptionSpec(poSpec);
com.adobe.fd.docassurance.client.api.DocAssuranceService docAssuranceService = sling.getService(com.adobe.fd.docassurance.client.api.DocAssuranceService.class);
com.adobe.aemfd.docmanager.Document securedDocument = docAssuranceService.secureDocument(pdfDocument,encryptionOptions,null,null,null);
securedDocument.copyToFile(new java.io.File(filePath));
out.println("Document encrypted and saved to " +filePath);
%>
Para probar el paquete de muestra en el sistema
AEM Descargue e instale el paquete mediante el administrador de paquetes de la
Después de instalar el paquete, agregue las siguientes direcciones URL a la lista de permitidos de configuración OSGi del filtro CSRF de Granite de Adobe:
- Iniciar sesión en configMgr
- Búsqueda de Adobe Granite CSRF Filter
- Añada la siguiente ruta en las secciones excluidas y guarde
- /content/AemFormsSamples/encrypt
Prueba de la muestra
Existen varias formas de probar el código de ejemplo. La forma más rápida y sencilla de usar una aplicación de Postman es. Postman permite realizar solicitudes de POST al servidor. La siguiente captura de pantalla muestra los parámetros de solicitud necesarios para que funcione la solicitud de publicación. Asegúrese de especificar el tipo de autorización adecuado antes de enviar la solicitud.