Verschlüsseln eines PDF mit einem Berechtigungskennwort
Zum Kopieren, Bearbeiten oder Drucken eines PDF-Dokuments ist ein Berechtigungskennwort erforderlich, das auch als Inhaber- oder Master-Kennwort bezeichnet wird. Erfahren Sie, wie Sie mit der API DocAssuranceService programmgesteuert ein Berechtigungskennwort auf ein PDF anwenden können.
Der folgende JSP-Code verschlüsselt ein PDF mit einem Berechtigungskennwort:
<%--
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);
%>
So testen Sie das Beispielpaket auf Ihrem System:
Laden Sie das Paket herunter und installieren Sie es mit Package Manager.
Nachdem Sie das Paket installiert haben,fügen Sie die folgenden URLs zur Zulassungsliste der OSGi-Konfiguration von Adobe Granite CSRF Filter hinzu.
- Melden Sie sich bei configMgr an.
- Suchen Sie nach „Adobe Granite CSRF Filter“.
- Fügen Sie den folgenden Pfad in den ausgeschlossenen Abschnitten hinzu und speichern Sie
- /content/AemFormsSamples/encrypt
Testen des Beispiels
Es gibt verschiedene Möglichkeiten, den Beispiel-Code zu testen. Am schnellsten und einfachsten lässt sich hier die Postman-App verwenden. Postman ermöglicht es Ihnen, POST-Anfragen an Ihren Server zu stellen. Der folgende Screenshot zeigt Ihnen die Anfrageparameter, die erforderlich sind, damit die POST-Anfrage funktioniert. Geben Sie den entsprechenden Autorisierungstyp an, bevor Sie die Anfrage senden.