Sie können ein PDF-Dokument mit einem Kennwort verschlüsseln, indem Sie den Assembler-Service verwenden. Nachdem ein PDF-Dokument mit einem Kennwort verschlüsselt wurde, muss ein Benutzer das Kennwort angeben, damit das Dokument in Adobe Reader oder Acrobat angezeigt werden kann. Zum Verschlüsseln eines PDF-Dokuments mit einem Kennwort muss das DDX-Dokument encryption-Elementwerte enthalten, die für die Verschlüsselung eines PDF-Dokuments erforderlich sind.
Nehmen Sie für dieses Thema bitte an, dass das folgende DDX-Dokument verwendet wird.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDF result="EncryptLoan.pdf" encryption="userProtect">
<PDF source="inDoc" />
</PDF>
<PasswordEncryptionProfile name="userProtect" compatibilityLevel="Acrobat7">
<OpenPassword>AdobeOpen</OpenPassword>
</PasswordEncryptionProfile>
</DDX>
Beachten Sie, dass in diesem DDX-Dokument dem Quellattribut der Wert inDoc
zugewiesen ist. In Fällen, in denen nur ein Eingabedokument an den Assembler-Dienst übergeben und ein PDF-Dokument zurückgegeben wird, und Sie den invokeOneDocument
-Vorgang aufrugen, weisen Sie dem PDF-Quellattribut den Wert inDoc
zu. Beim Aufrufen des invokeOneDocument
-Vorgangs, ist der inDoc
-Wert ein vordefinierter Schlüssel, der im DDX-Dokument angegeben werden muss.
Wenn Sie dagegen zwei oder mehr PDF-Eingabedokumente an den Assembler-Dienst übergeben, können Sie den invokeDDX
-Vorgang aufrufen. Weisen Sie in diesem Fall den Dateinamen des PDF-Eingabedokuments dem source
-Attribut zu.
Der Verschlüsselungs-Service muss nicht Teil Ihrer AEM Forms-Installation sein, um ein PDF-Dokument mit einem Kennwort verschlüsseln zu können. Siehe Verschlüsseln und Entschlüsseln von PDF-Dokumenten.
Weitere Informationen zum Assembler-Service finden Sie in der Service-Referenz für AEM Forms.
Weitere Informationen zu einem DDX-Dokument finden Sie in der Referenz für Assembler-Service und DDX.
Um ein verschlüsseltes PDF-Dokument zusammenzustellen, führen Sie die folgenden Schritte aus:
Einschließen von Projektdateien
Schließen Sie die erforderlichen Dateien in Ihr Entwicklungsprojekt ein. Wenn Sie ein Client-Programm mit Java erstellen, schließen Sie die erforderlichen JAR-Dateien ein. Wenn Sie Webdienste verwenden, stellen Sie sicher, dass Sie die Proxy-Dateien einschließen.
Die folgenden JAR-Dateien müssen zum Klassenpfad Ihres Projekts hinzugefügt werden:
Wenn AEM Forms auf einem unterstützten J2EE-Anwendungsserver implementiert ist, der von JBoss verschieden ist, müssen Sie die Dateien „adobe-utilities.jar“ und „jbossall-client.jar“ durch JAR-Dateien ersetzen, die für den J2EE-Anwendungsserver spezifisch sind, auf dem AEM Forms implementiert ist. Weitere Informationen über den Speicherort aller JAR-Dateien von AEM Forms finden Sie unter Einbeziehung von AEM Forms Java-Bibliotheksdateien.
Erstellen eines Assembler-Clients
Bevor Sie einen Assembler-Vorgang programmgesteuert ausführen können, müssen Sie einen Assembler-Dienst-Client erstellen.
Referenzieren eines bestehenden DDX-Dokuments
Zum Zusammenführen eines PDF-Dokuments muss auf ein DDX-Dokument verwiesen werden. Betrachten Sie beispielsweise das DDX-Dokument, das in diesem Abschnitt eingeführt wurde. Um ein PDF-Dokument zu verschlüsseln, muss das DDX-Dokument das Element PasswordEncryptionProfile
enthalten.
Referenzieren eines ungesicherten PDF-Dokuments
Ein ungesichertes PDF-Dokument muss referenziert und an den Assembler-Service übergeben werden, um es zu verschlüsseln. Wenn Sie auf ein bereits verschlüsseltes PDF-Dokument verweisen, wird eine Ausnahme ausgelöst.
Festlegen von Laufzeitoptionen
Sie können Laufzeitoptionen festlegen, die das Verhalten des Assembler-Services während der Ausführung eines Auftrags steuern. Sie können beispielsweise eine Option festlegen, mit der der Assembler-Service angewiesen wird, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt. Informationen zu den Laufzeitoptionen, die Sie festlegen können, finden Sie in der AssemblerOptionSpec
-Klassenreferenz in der AEM Forms-API-Referenz.
Verschlüsseln des Dokuments
Nachdem Sie den Assembler-Service-Client erstellt haben, das DDX-Dokument referenziert haben, das Verschlüsselungsinformationen enthält, ein ungesichertes PDF-Dokument referenziert haben und Laufzeitoptionen festgelegt haben, können Sie den Vorgang invokeOneDocument
aufrufen. Da nur ein Eingabedokument an den Assembler-Service übergeben wird (und ein PDF zurückgegeben wird), können Sie den Vorgang invokeOneDocument
anstelle des Vorgangs invokeDDX
verwenden.
Speichern des verschlüsselten PDF-Dokuments
Wenn nur ein einzelnes PDF-Dokument an den Assembler-Service übergeben wird, gibt der Assembler-Service ein einzelnes Dokument anstelle eines Sammlungsobjekts zurück. Das heißt, beim Aufrufen des Vorgangs invokeOneDocument
wird ein einzelnes Dokument zurückgegeben. Da das in diesem Abschnitt referenzierte DDX-Dokument Verschlüsselungsinformationen enthält, gibt der Assembler-Service ein PDF-Dokument zurück, das mit einem Kennwort verschlüsselt ist.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmatisches Zusammenstellen von PDF-Dokumenten
Schließen Sie Projektdateien ein.
Fügen Sie Client-JAR-Dateien wie „adobe-assembler-client.jar“ in den Klassenpfad Ihres Java-Projekts ein.
Erstellen Sie einen Assembler-Client.
ServiceClientFactory
-Objekt, das Verbindungseigenschaften enthält.AssemblerServiceClient
-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory
-Objekt übergeben.Referenzieren Sie ein vorhandenes DDX-Dokument.
java.io.FileInputStream
-Objekt, das das DDX-Dokument darstellt, indem Sie seinen Konstruktor verwenden und einen Zeichenfolgenwert übergeben, der den Speicherort der DDX-Datei angibt.com.adobe.idp.Document
-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream
-Objekt übergeben.Referenzieren Sie ein unsicheres PDF-Dokument.
java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort eines ungesicherten PDF-Dokuments übergeben.com.adobe.idp.Document
-Objekt und übergeben Sie das java.io.FileInputStream
-Objekt, das das PDF-Dokument enthält. Dieses com.adobe.idp.Document
-Objekt wird der invokeOneDocument
-Methode übergeben.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen speichert, indem Sie seinen Konstruktor verwenden.AssemblerOptionSpec
-Objekt gehört. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, rufen Sie die Methode setFailOnError
des AssemblerOptionSpec
-Objekts auf und übergeben false
.Verschlüsseln Sie das Dokument.
Rufen Sie die Methode invokeOneDocument
des AssemblerServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:
com.adobe.idp.Document
-Objekt, das das DDX-Dokument darstellt. Stellen Sie sicher, dass dieses DDX-Dokument den Wert inDoc
für das PDF-Quellelement enthält.com.adobe.idp.Document
-Objekt, das das ungesicherte PDF-Dokument enthält.com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich der standardmäßigen Schriftart und Auftragsprotokollebene.Die Methode invokeOneDocument
gibt ein com.adobe.idp.Document
-Objekt zurück, das ein kennwortverschlüsseltes PDF-Dokument enthält.
Speichern Sie das verschlüsselte PDF-Dokument.
java.io.File
-Objekt und stellen Sie sicher, dass die Dateinamenerweiterung .pdf lautet.copyToFile
des Document
-Objekts auf, um den Inhalt des Document
-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie das Document
-Objekt verwenden, das von der Methode invokeOneDocument
zurückgegeben wurde.Siehe auch
Schnellstart (SOAP-Modus): Zusammenstellen eines verschlüsselten PDF-Dokuments mithilfe der Java-API
Schließen Sie Projektdateien ein.
Erstellen Sie ein Microsoft .NET-Projekt, das MTOM verwendet. Stellen Sie sicher, dass Sie beim Festlegen einer Service-Referenz die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Ersetzen Sie localhost
durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
Erstellen Sie einen Assembler-Client.
Erstellen Sie ein AssemblerServiceClient
-Objekt unter Verwendung seines Standardkonstruktors.
Erstellen Sie ein AssemblerServiceClient.Endpoint.Address
-Objekt mithilfe des System.ServiceModel.EndpointAddress
-Konstruktors. Übergeben Sie einen Zeichenfolgenwert mit der WSDL an den AEM Forms-Service (z. B. http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Sie müssen das lc_version
-Attribut nicht verwenden. Dieses Attribut wird verwendet, wenn Sie einen Service-Verweis erstellen.
Erstellen Sie ein System.ServiceModel.BasicHttpBinding
-Objekr, indem Sie den Wert des Felds AssemblerServiceClient.Endpoint.Binding
abrufen. Wandeln Sie den Rückgabewert in BasicHttpBinding
um.
Legen Sie das MessageEncoding
-Feld des System.ServiceModel.BasicHttpBinding
-Objekts auf WSMessageEncoding.Mtom
fest. Dieser Wert stellt sicher, dass MTOM verwendet wird.
Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Schritte ausführen:
AssemblerServiceClient.ClientCredentials.UserName.UserName
den AEM Forms-Benutzernamen zu.AssemblerServiceClient.ClientCredentials.UserName.Password
den entsprechenden Passwortwert zu.BasicHttpBindingSecurity.Transport.ClientCredentialType
den konstanten Wert HttpClientCredentialType.Basic
zu.BasicHttpBindingSecurity.Security.Mode
den Konstantenwert BasicHttpSecurityMode.TransportCredentialOnly
zu.Referenzieren Sie ein vorhandenes DDX-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Das BLOB
-Objekt wird zum Speichern des DDX-Dokuments verwendet.System.IO.FileStream
, indem Sie den Konstruktor aufrufen und einen String-Wert übergeben, der den Dateispeicherort des DDX-Dokuments und den Modus, in dem die Datei geöffnet werden soll, repräsentiert.System.IO.FileStream
-Objekts speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die Length
-Eigenschaft des System.IO.FileStream
-Objekts abrufen.Read
-Methode des System.IO.FileStream
-Objekts aufrufen und ihr das Byte-Array, die Startposition und die zu lesende Datenstromlänge übergeben.BLOB
-Objekt, indem Sie seinem Feld MTOM
den Inhalt des Byte-Arrays zuweisen.Referenzieren Sie ein unsicheres PDF-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Das BLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. Dieses BLOB
-Objekt wird dem invokeOneDocument
als Argument übergeben.System.IO.FileStream
-Objekt, indem sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des PDF-Eingabedokuments und den Modus zum Öffnen der Datei angibt.System.IO.FileStream
-Objekts gespeichert wird. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die Length
-Eigenschaft des System.IO.FileStream
-Objekts abrufen.Read
-Methode des System.IO.FileStream
-Objekts aufrufen und ihr das Byte-Array, die Startposition und die zu lesende Datenstromlänge übergeben.BLOB
-Objekt, indem Sie seinem Feld MTOM
den Inhalt des Byte-Arrays zuweisen.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen speichert, indem Sie seinen Konstruktor verwenden.AssemblerOptionSpec
-Objekt gehört, einen Wert zuweisen. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Sie false
dem Datenelement failOnError
des AssemblerOptionSpec
-Objekts zu.Verschlüsseln Sie das Dokument.
Rufen Sie die Methode invokeOneDocument
des AssemblerServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:
BLOB
-Objekt, das das DDX-Dokument darstelltBLOB
-Objekt, das das ungesicherte PDF-Dokument darstelltAssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibtDie Methode invokeOneDocument
gibt ein BLOB
-Objekt zurück, das ein verschlüsseltes PDF-Dokument enthält.
Speichern Sie das verschlüsselte PDF-Dokument.
System.IO.FileStream
-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des verschlüsselten PDF-Dokuments und den Modus darstellt, in dem die Datei geöffnet werden soll.BLOB
-Objekts speichert, das die Methode invokeOneDocument
zurückgegeben hat. Füllen Sie das Byte-Array, indem Sie den Wert des Datenelements BLOB
des MTOM
-Objekts abrufen.System.IO.BinaryWriter
-Objekt, indem Sie seinen Konstruktor aufrufen und das System.IO.FileStream
-Objekt übergeben.Write
des System.IO.BinaryWriter
-Objekts aufrufen und das Byte-Array übergeben.Siehe auch
AEM Forms mithilfe von MTOM aufrufen