Hinzufügen von Signaturfeldern

Digitale Signaturen werden in Signaturfeldern angezeigt, bei denen es sich um Formularfelder handelt, die eine grafische Darstellung der Signatur enthalten. Signaturfelder können sichtbar oder unsichtbar sein. Unterzeichnende können ein bereits vorhandenes Signaturfeld verwenden, oder ein Signaturfeld kann programmgesteuert hinzugefügt werden. In beiden Fällen muss das Signaturfeld vorhanden sein, bevor ein PDF-Dokument signiert werden kann.

Sie können ein Signaturfeld programmgesteuert hinzufügen, indem Sie die Signature-Dienst-Java-API oder die Signature-Webdienst-API verwenden. Sie können mehr als ein Signaturfeld zu einem PDF-Dokument hinzufügen. Jeder Signaturfeldname muss jedoch eindeutig sein.

HINWEIS
Bei einigen PDF-Dokumenttypen können Sie kein Signaturfeld programmgesteuert hinzufügen. Weitere Informationen zum Signature-Service und zum Hinzufügen von Signaturfeldern finden Sie in der Service-Referenz für AEM Forms.

Zusammenfassung der Schritte

Um ein Signaturfeld zu einem PDF-Dokument hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie einen Signatur-Client.
  3. Rufen Sie ein PDF-Dokument ab, dem ein Signaturfeld hinzugefügt wird.
  4. Fügen Sie ein Signaturfeld hinzu.
  5. Speichern Sie das Formular als PDF-Datei.

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:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)
  • jbossall-client.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)

Erstellen eines Signatur-Clients

Bevor Sie einen Signature-Service-Vorgang programmgesteuert ausführen können, müssen Sie einen Signature-Service-Client erstellen.

Abrufen eines PDF-Dokuments, dem ein Signaturfeld hinzugefügt wird

Abrufen eines PDF-Dokuments, dem ein Signaturfeld hinzugefügt wurde.

Hinzufügen eines Signaturfelds

Um einem PDF-Dokument erfolgreich ein Signaturfeld hinzuzufügen, geben Sie Koordinatenwerte an, die die Position des Signaturfelds angeben. (Wenn Sie ein unsichtbares Signaturfeld hinzufügen, sind diese Werte nicht erforderlich.) Außerdem können Sie angeben, welche Felder im PDF-Dokument gesperrt werden, nachdem eine Signatur auf das Signaturfeld angewendet wurde.

Speichern des PDF-Dokuments als PDF-Datei

Nachdem der Signatur-Service ein Signaturfeld zum PDF-Dokument hinzugefügt hat, können Sie das Dokument als PDF-Datei speichern, damit Benutzer es in Acrobat oder Adobe Reader öffnen können.

Siehe auch

Einbeziehung von AEM Forms Java-Bibliotheksdateien

Verbindungseigenschaften festlegen

Digitales Signieren von PDF-Dokumenten

Hinzufügen von Signaturfeldern mithilfe der Java-API

Fügen Sie mithilfe der Signature-API (Java) ein Signaturfeld hinzu:

  1. Projektdateien einschließen

    Schließen Sie Client-JAR-Dateien, beispielsweise „adobe-signatures-client.jar“, in den Klassenpfad Ihres Java-Projekts ein.

  2. Erstellen eines Signatur-Clients

    • Erstellen Sie ein ServiceClientFactory-Objekt, das Verbindungseigenschaften enthält.
    • Erstellen Sie ein SignatureServiceClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben.
  3. Abrufen eines PDF-Dokuments, dem ein Signaturfeld hinzugefügt wurde

    • Erstellen Sie ein java.io.FileInputStream-Objekt, das das PDF-Dokument darstellt, dem ein Signaturfeld hinzugefügt wird. Verwenden Sie dazu seinen Konstruktor und übergeben Sie einen Zeichenfolgenwert, der den Speicherort des PDF-Dokuments angibt.
    • Erstellen Sie ein com.adobe.idp.Document-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream-Objekt übergeben.
  4. Hinzufügen eines Signaturfeldes

    • Erstellen Sie ein PositionRectangle-Objekt, das die Position des Signaturfelds angibt, indem Sie seinen Konstruktor verwenden. Geben Sie im Konstruktor Koordinatenwerte an.

    • Erstellen Sie bei Bedarf ein FieldMDPOptions-Objekt, das die Felder angibt, die gesperrt werden, wenn eine digitale Signatur auf das Signaturfeld angewendet wird.

    • Fügen Sie ein Signaturfeld zu einem PDF-Dokument hinzu, indem Sie die Methode addSignatureField des SignatureServiceClient-Objekts verwenden und die folgenden Werte übergeben:

      • A com.adobe.idp. Document-Objekt, das das PDF-Dokument darstellt, dem ein Signaturfeld hinzugefügt wird.
      • Ein Zeichenfolgenwert, der den Namen des Signaturfelds angibt.
      • Ein java.lang.Integer-Wert, der die Seitenzahl der Seite darstellt, zu der ein Signaturfeld hinzugefügt wird.
      • Ein PositionRectangle-Objekt, das die Position des Signaturfelds angibt.
      • Ein FieldMDPOptions-Objekt, das Felder im PDF-Dokument angibt, die gesperrt werden, nachdem eine digitale Signatur auf das Signaturfeld angewendet wurde. Dieser Parameterwert ist optional und Sie können null übergeben.
    • Ein PDFSeedValueOptions-Objekt, das verschiedene Laufzeitwerte angibt. Dieser Parameterwert ist optional und Sie können null übergeben.

      Die Methode addSignatureField gibt ein com.adobe.idp zurück. Ein Document-Objekt, das ein PDF-Dokument mit einem Signaturfeld darstellt.

    HINWEIS
    Sie können die Methode addInvisibleSignatureField des SignatureServiceClient-Objekts zum Hinzufügen eines unsichtbaren Signaturfelds aufrufen.
  5. Das PDF-Dokument als PDF-Datei speichern

    • Erstellen Sie ein java.io.File-Objekt und stellen Sie sicher, dass die Dateierweiterung .pdf ist.
    • Rufen Sie die com.adobe.idp Rufen Sie die Methode copyToFile des Document-Objekts auf, um den Inhalt des Document-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie das com.adobe.idp Document-Objekt verwenden, das von der addSignatureField-Methode zurückgegeben wurde.

Hinzufügen von Signaturfeldern mit der Webdienst-API

So fügen Sie mithilfe der Signature-API (Webdienst) ein Signaturfeld hinzu:

  1. Projektdateien einschließen

    Erstellen Sie ein Microsoft .NET-Projekt, das MTOM verwendet. Stellen Sie sicher, dass Sie die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    HINWEIS
    Ersetzen Sie localhost durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
  2. Erstellen eines Signatur-Clients

    • Erstellen Sie mithilfe des betreffenden Standardkonstruktors ein SignatureServiceClient-Objekt.

    • Erstellen Sie mithilfe des System.ServiceModel.EndpointAddress-Konstruktors ein SignatureServiceClient.Endpoint.Address-Objekt. Übergeben Sie einen Zeichenfolgenwert, der die WSDL für den AEM Forms-Service angibt (z. B. http://localhost:8080/soap/services/SignatureService?WSDL). Das Attribut lc_version muss nicht verwendet werden. Dieses Attribut wird verwendet, wenn Sie einen Service-Verweis erstellen.)

    • Erstellen Sie ein System.ServiceModel.BasicHttpBinding-Objekt durch Abrufen des Werts des Felds SignatureServiceClient.Endpoint.Binding. Wandeln Sie den Rückgabewert in BasicHttpBinding um.

    • Stellen Sie das Feld MessageEncoding des Objekts System.ServiceModel.BasicHttpBinding auf WSMessageEncoding.Mtom ein. Dieser Wert stellt sicher, dass MTOM verwendet wird.

    • Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Schritte ausführen:

      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.UserName den AEM Forms-Benutzernamen zu.
      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.Password den entsprechenden Passwortwert zu.
      • Weisen Sie dem Feld BasicHttpBindingSecurity.Transport.ClientCredentialType den konstanten Wert HttpClientCredentialType.Basic zu.
      • Weisen Sie dem Feld BasicHttpBindingSecurity.Security.Mode den konstanten Wert BasicHttpSecurityMode.TransportCredentialOnly zu.
  3. Abrufen eines PDF-Dokuments, dem ein Signaturfeld hinzugefügt wurde

    • Erstellen Sie ein Objekt BLOB, indem Sie den Konstruktor verwenden. Das BLOB -Objekt wird zum Speichern des PDF-Dokuments verwendet, das ein Signaturfeld enthalten wird.
    • Erstellen Sie ein System.IO.FileStream-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgewert übergeben, der den Dateispeicherort des PDF-Dokuments und den Modus, in dem die Datei geöffnet werden soll, darstellt.
    • Erstellen Sie ein Byte-Array, das den Inhalt des System.IO.FileStream-Objekts speichert. Sie können die Größe des Byte-Arrays ermitteln, indem Sie die Eigenschaft Length des Objekts System.IO.FileStream abrufen.
    • Füllen Sie das Byte-Array mit Stream-Daten auf, indem Sie die Methode Read des Objekts System.IO.FileStream verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge weitergeben.
    • Füllen Sie das BLOB-Objekt, indem Sie seiner MTOM-Eigenschaft den Inhalt des Byte-Arrays zuweisen.
  4. Hinzufügen eines Signaturfeldes

    Fügen Sie ein Signaturfeld zum PDF-Dokument hinzu, indem Sie die Methode addSignatureField des SignatureServiceClient-Objekts aufrufen und die folgenden Werte übergeben:

    • Ein BLOB-Objekt, welches das PDF-Dokument darstellt, dem ein Signaturfeld hinzugefügt werden soll.
    • Ein Zeichenkettenwert, der den Namen des Signaturfeldes angibt.
    • Ein Integer-Wert, der die Seitenzahl angibt, zu der ein Signaturfeld hinzugefügt wird.
    • Ein PositionRect-Objekt, das den Speicherort des Signaturfelds angibt.
    • Ein FieldMDPOptions-Objekt, das Felder im PDF-Dokument angibt, die gesperrt werden, nachdem eine digitale Signatur auf das Signaturfeld angewendet wurde. Dieser Parameterwert ist optional und Sie können null übergeben.
    • Ein PDFSeedValueOptions-Objekt, das verschiedene Laufzeitwerte angibt. Dieser Parameterwert ist optional und Sie können null übergeben.

    Die addSignatureField-Methode gibt ein BLOB-Objekt zurück, das ein mit einem Signaturfeld versehenes PDF-Dokument darstellt.

  5. Das PDF-Dokument als PDF-Datei speichern

    • Erstellen Sie ein System.IO.FileStream-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgewert übergeben, der den Dateispeicherort des PDF-Dokuments, welches das Signaturfeld enthalten soll, und den Modus, in dem die Datei geöffnet werden soll, darstellt.
    • Erstellen Sie ein Byte-Array, das den Inhalt des BLOB-Objekts speichert, das von der addSignatureField-Methode zurückgegeben wurde. Füllen Sie das Byte-Array, indem Sie den Wert des Datenelements binaryData des BLOB-Objekts abrufen.
    • Erstellen Sie ein System.IO.BinaryWriter-Objekt, indem Sie seinen Konstruktor aufrufen und das System.IO.FileStream-Objekt übergeben.
    • Schreiben Sie den Inhalt des Byte-Arrays in eine PDF-Datei, indem Sie die Methode Write des System.IO.BinaryWriter-Objekts aufrufen und das Byte-Array übergeben.

Abrufen von Signaturfeldnamen

Sie können die Namen aller Signaturfelder abrufen, die sich in einem PDF-Dokument befinden, das Sie signieren oder zertifizieren möchten. Wenn Sie sich nicht sicher sind, welche Signaturfeldnamen sich in einem PDF-Dokument befinden, oder die Namen überprüfen möchten, können Sie sie programmgesteuert abrufen. Der Signature-Dienst gibt den vollqualifizierten Namen des Signaturfelds zurück, z. B. form1[0].grantApplication[0].page1[0].SignatureField1[0].

HINWEIS
Weitere Informationen über den Signature-Dienst finden Sie unter Dienstverweise für AEM Forms

Zusammenfassung der Schritte

Um Signaturfeldnamen abzurufen, führen Sie die folgenden Aufgaben aus:

  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie einen Signatur-Client.
  3. Rufen Sie das PDF-Dokument ab, das Signaturfelder enthält.
  4. Rufen Sie die Namen der Signaturfelder ab.

Binden Sie Projektdateien ein

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:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)
  • jbossall-client.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)

Informationen zum Speicherort dieser JAR-Dateien finden Sie unter Einbeziehen von AEM Forms-Java-Bibliotheksdateien.

Erstellen eines Signature-Clients

Bevor Sie einen Signature-Service-Vorgang programmgesteuert ausführen können, müssen Sie einen Signature-Service-Client erstellen.

Abrufen des PDF-Dokuments, das Signaturfelder enthält

Rufen Sie ein PDF-Dokument ab, das Signaturfelder enthält.

Abrufen von Signaturfeldnamen

Sie können die Namen von Signaturfeldern abrufen, nachdem Sie ein PDF-Dokument abgerufen haben, das ein oder mehrere Signaturfelder enthält.

Siehe auch

Abrufen von Signaturfeldnamen mit der Java-API

Abrufen von Signaturfeldern mit der Webdienst-API

Einbeziehung von AEM Forms Java-Bibliotheksdateien

Verbindungseigenschaften festlegen

Hinzufügen von Signaturfeldern

Abrufen von Signaturfeldnamen mit der Java-API

Abrufen von Signaturfeldnamen mithilfe der Signature-API (Java):

  1. Projektdateien einschließen

    Fügen Sie Client-JAR-Dateien, beispielsweise „adobe-livecycle-client.jar“, in den Klassenpfad Ihres Java-Projekts ein.

  2. Erstellen eines Signatur-Clients

    • Erstellen Sie ein ServiceClientFactory-Objekt, das Verbindungseigenschaften enthält.
    • Erstellen Sie ein SignatureServiceClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben.
  3. Abrufen des PDF-Dokuments, das Signaturfelder enthält

    • Erstellen Sie ein java.io.FileInputStream-Objekt, welches das PDF-Dokument darstellt, das Signaturfelder enthält, indem Sie seinen Konstruktor verwenden und einen Zeichenfolgenwert übergeben, der den Speicherort des PDF-Dokuments angibt.
    • Erstellen Sie ein com.adobe.idp.Document-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream-Objekt übergeben.
  4. Abrufen der Signaturfeldnamen

    • Rufen Sie die Namen der Signaturfelder ab, indem Sie die Methode getSignatureFieldList des SignatureServiceClient-Objekts aufrufen und das com.adobe.idp.Document-Objekt übergeben, das das PDF-Dokument mit den Signaturfeldern enthält. Diese Methode gibt eine java.util.List -Objekt zurück, in dem jedes Element eine PDFSignatureField -Objekt enthält. Mit diesem Objekt können Sie zusätzliche Informationen zu einem Signaturfeld abrufen, beispielsweise ob es sichtbar ist.
    • Iterieren Sie durch das java.util.List-Objekt, um festzustellen, ob es Signaturfeldnamen gibt. Für jedes Signaturfeld im PDF-Dokument können Sie ein separates PDFSignatureField-Objekt erhalten. Um den Namen des Signaturfelds zu erhalten, rufen Sie die Methode getName des PDFSignatureField-Objekts auf. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Signaturfeldnamen angibt.

Abrufen von Signaturfeldern mit der Webdienst-API

Rufen Sie Signaturfeldnamen mit der Signature-API (Webdienst) ab:

  1. Projektdateien einschließen

    Erstellen Sie ein Microsoft .NET-Projekt, das MTOM verwendet. Stellen Sie sicher, dass Sie die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    HINWEIS
    Ersetzen Sie localhost durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
  2. Erstellen eines Signatur-Clients

    • Erstellen Sie mithilfe des betreffenden Standardkonstruktors ein SignatureServiceClient-Objekt.

    • Erstellen Sie mithilfe des System.ServiceModel.EndpointAddress-Konstruktors ein SignatureServiceClient.Endpoint.Address-Objekt. Übergeben Sie einen Zeichenfolgenwert, der die WSDL für den AEM Forms-Service angibt (z. B. http://localhost:8080/soap/services/SignatureService?WSDL). Das Attribut lc_version muss nicht verwendet werden. Dieses Attribut wird verwendet, wenn Sie einen Service-Verweis erstellen.)

    • Erstellen Sie ein System.ServiceModel.BasicHttpBinding-Objekt durch Abrufen des Werts des Felds SignatureServiceClient.Endpoint.Binding. Wandeln Sie den Rückgabewert in BasicHttpBinding um.

    • Stellen Sie das Feld MessageEncoding des Objekts System.ServiceModel.BasicHttpBinding auf WSMessageEncoding.Mtom ein. Dieser Wert stellt sicher, dass MTOM verwendet wird.

    • Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Schritte ausführen:

      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.UserName den AEM Forms-Benutzernamen zu.
      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.Password den entsprechenden Passwortwert zu.
      • Weisen Sie dem Feld BasicHttpBindingSecurity.Transport.ClientCredentialType den konstanten Wert HttpClientCredentialType.Basic zu.
      • Weisen Sie den konstanten Wert BasicHttpSecurityMode.TransportCredentialOnly dem Feld BasicHttpBindingSecurity.Security.Mode zu.
  3. Abrufen des PDF-Dokuments, das Signaturfelder enthält

    • Erstellen Sie ein Objekt BLOB, indem Sie den Konstruktor verwenden. Das BLOB-Objekt wird zum Speichern des PDF-Dokuments verwendet, das Signaturfelder enthält.
    • Erstellen Sie ein System.IO.FileStream-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des PDF-Dokuments und den Modus, in dem die Datei geöffnet werden soll, darstellt.
    • Erstellen Sie ein Byte-Array, das den Inhalt des System.IO.FileStream-Objekts speichert. Sie können die Größe des Byte-Arrays ermitteln, indem Sie die Eigenschaft Length des Objekts System.IO.FileStream abrufen.
    • Füllen Sie das Byte-Array mit Stream-Daten auf, indem Sie die Methode Read des Objekts System.IO.FileStream verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge weitergeben.
    • Füllen Sie das BLOB-Objekt durch Zuweisen des Inhalts des Byte-Arrays zu seinem Feld MTOM.
  4. Abrufen der Signaturfeldnamen

    • Rufen Sie die Namen der Signaturfelder ab, indem Sie die Methode getSignatureFieldList des SignatureServiceClient-Objekts abrufen und das BLOB-Objekt übergeben, das das PDF-Dokument mit Signaturfehldern enthält. Diese Methode gibt ein MyArrayOfPDFSignatureField-Sammlungsobjekt zurück, in dem jedes Element ein PDFSignatureField-Objekt enthält.
    • Gehen Sie schrittweise durch das MyArrayOfPDFSignatureField-Objekt, um festzustellen, ob Signaturfeldnamen vorhanden sind. Für jedes Signaturfeld im PDF-Dokument können Sie ein PDFSignatureField-Objekt erhalten. Um den Namen des Signaturfelds abzurufen, rufen Sie die Methode getName des PDFSignatureField-Objekts auf. Diese Methode gibt einen Zeichenfolgenwert zurück, der den Signaturfeldnamen angibt.

Ändern von Signaturfeldern

Sie können Signaturfelder in einem PDF-Dokument ändern, indem Sie die Java-API und die Web-Service-API verwenden. Das Ändern eines Signaturfelds umfasst das Manipulieren seiner Signaturfeldsperre- oder Seed-Wert-Lexikonwerte.

Ein Feldsperre-Wörterbuch gibt eine Liste von Feldern an, die gesperrt werden, wenn das Signaturfeld signiert wird. Ein gesperrtes Feld verhindert, dass Benutzer Änderungen an dem Feld vornehmen. Ein Seed-Wert-Wörterbuch enthält Einschränkungsinformationen, die zum Zeitpunkt der Anwendung der Signatur verwendet werden. Beispiel: Sie können die Berechtigungen ändern, die Aktionen steuern, die auftreten können, ohne dass eine Signatur ungültig wird.

Durch Ändern eines vorhandenen Signaturfelds können Sie das PDF-Dokument so bearbeiten, dass es die sich ändernden Geschäftsanforderungen widerspiegelt. Beispiel: Eine neue Geschäftsanforderung erfordert das Sperren aller Felder eines Dokuments, nachdem es signiert wurde.

In diesem Abschnitt wird beschrieben, wie Sie ein Signaturfeld ändern, indem Sie sowohl die Werte des Feldsperre-Wörterbuchs als auch des Seed-Wert-Wörterbuchs ändern. Änderungen am Signaturfeldsperre-Wörterbuch führen dazu, dass alle Felder im PDF-Dokument gesperrt werden, wenn ein Signaturfeld signiert wird. Änderungen am Seed-Wert-Wörterbuch verbieten bestimmte Arten von Änderungen am Dokument.

HINWEIS
Weitere Informationen zum Signature-Service und zum Ändern von Signaturfeldern finden Sie unter Service-Referenz für AEM Forms.

Zusammenfassung der Schritte

Um Signaturfelder in einem PDF-Dokument zu ändern, führen Sie die folgenden Schritte aus:

  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie einen Signatur-Client.
  3. Rufen Sie das PDF-Dokument ab, das das zu ändernde Signaturfeld enthält.
  4. Legen Sie Wörterbuchwerte fest.
  5. Klicken Sie auf das Signaturfeld.
  6. Speichern Sie das Formular als PDF-Datei.

Einschließen von Projektdateien

Schließen Sie die erforderlichen Dateien in Ihr Entwicklungsprojekt ein. Wenn Sie eine Clientanwendung 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:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)
  • jbossall-client.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)

Weitere Informationen über den Speicherort dieser JAR-Dateien finden Sie unter Einbeziehung von LiveCycle Java-Bibliotheksdateien.

Erstellen eines Signatur-Clients

Bevor Sie einen Signature-Service-Vorgang programmgesteuert ausführen können, müssen Sie einen Signature-Service-Client erstellen.

Abrufen des PDF-Dokuments, das das zu ändernde Signaturfeld enthält

Rufen Sie ein PDF-Dokument ab, das das zu ändernde Signaturfeld enthält.

Festlegen von Wörterbuchwerten

Um ein Signaturfeld zu ändern, weisen Sie seinem Feldsperre- oder Seed-Wert-Wörterbuch Werte zu. Das Festlegen von Signaturfeldsperre-Wörterbuchwerten umfasst das Angeben von PDF-Dokumentfeldern, die beim Signieren des Signaturfelds gesperrt werden. (In diesem Abschnitt wird beschrieben, wie Sie alle Felder sperren.)

Die folgenden Seed-Wert-Wörterbuchwerte können festgelegt werden:

  • Sperrprüfung: Gibt an, ob eine Sperrprüfung durchgeführt wird, wenn eine Signatur auf das Signaturfeld angewendet wird.

  • Zertifikatoptionen: Weist dem Seed-Wert-Wörterbuch des Zertifikats Werte zu. Bevor Sie Zertifikatoptionen angeben, sollten Sie sich mit einem Seed-Wert-Wörterbuch des Zertifikats vertraut machen. (Siehe PDF-Verweis.)

  • Digest-Optionen: Weist Digest-Algorithmen zu, die zum Signieren verwendet werden. Gültige Werte sind SHA1, SHA256, SHA384, SHA512 und RIPEMD160.

  • Filter: Gibt den Filter an, der mit dem Signaturfeld verwendet wird. Sie können beispielsweise den Adobe.PPKLite-Filter verwenden. (Siehe PDF-Verweis.)

  • Flag-Optionen: Gibt die Markierungswerte an, die mit diesem Signaturfeld verbunden sind. Ein Wert von 1 bedeutet, dass ein Unterzeichner nur die angegebenen Werte für den Eintrag verwenden darf. Ein Wert von 0 bedeutet, dass andere Werte zulässig sind. Hier sind die Bit-Positionen:

    • 1 (Filter): Der Signatur-Handler, der zum Signieren des Signaturfeldes verwendet werden soll
    • 2 (SubFilter): Ein Array von Namen, die für das Signieren gültige Kodierungen angeben
    • 3 (V): Die minimal erforderliche Versionsnummer des Signaturhandlers, der zum Signieren des Signaturfeldes verwendet werden soll
    • 4 (Gründe): Ein Array von Zeichenfolgen, die mögliche Gründe für das Signieren eines Dokuments angeben
    • 5 (PDFLegalWarnings): Ein Array von Zeichenfolgen, die mögliche rechtliche Bescheinigungen angeben
  • Rechtliche Bescheinigungen: Wenn ein Dokument zertifiziert wird, wird es automatisch auf bestimmte Arten von Inhalten gescannt, die den sichtbaren Inhalt eines Dokuments mehrdeutig oder irreführend machen können. Beispielsweise kann eine Anmerkung einen Text verdecken, der für das Verständnis dessen, was zertifiziert werden soll, wichtig ist. Der Scanvorgang erzeugt Warnungen, die auf das Vorhandensein dieser Art von Inhalten hinweisen. Außerdem wird eine ergänzende Erklärung zu den Inhalten gegeben, die möglicherweise Warnungen ausgelöst haben.

  • Berechtigungen: Gibt die Berechtigungen an, die für ein PDF-Dokument verwendet werden können, ohne dass die Signatur ungültig wird.

  • Gründe: Gibt Gründe an, warum dieses Dokument signiert werden muss.

  • Zeitstempel: Legt Optionen für den Zeitstempel fest. Sie können beispielsweise die URL des verwendeten Zeitstempelservers festlegen.

  • Version: Gibt die Mindestversionsnummer des Signaturhandlers an, der zum Signieren des Signaturfelds verwendet werden soll.

Ändern des Signaturfelds

Nachdem Sie einen Signature-Dienst-Client erstellt, ddas PDF-Dokument mit dem zu ändernden Signaturfeld abgerufen und Wörterbuchwerte festgelegt haben, können Sie den Signature-Dienst anweisen, das Signaturfeld zu ändern. Der Signature-Dienst gibt dann ein PDF-Dokument zurück, das das geänderte Signaturfeld enthält. Das ursprüngliche PDF-Dokument ist nicht betroffen.

Das PDF-Dokument als PDF-Datei speichern

Speichern Sie das PDF-Dokument mit dem geänderten Signaturfeld als PDF-Datei, damit die Benutzer es in Acrobat oder Adobe Reader öffnen können.

Siehe auch

Einbeziehung von AEM Forms Java-Bibliotheksdateien

Verbindungseigenschaften festlegen

Signature-Dienst-API Schnellstarts

Digitales Signieren von PDF-Dokumenten

Ändern von Signaturfeldern mit der Java-API

Ändern eines Signaturfeld mithilfe der Signature-API (Java):

  1. Projektdateien einschließen

    Schließen Sie JAR-Dateien, beispielsweise „adobe-signatures-client.jar“, in den Klassenpfad Ihres Java-Projekts ein.

  2. Erstellen eines Signatur-Clients

    • Erstellen Sie ein ServiceClientFactory-Objekt, das Verbindungseigenschaften enthält.
    • Erstellen Sie ein SignatureServiceClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben.
  3. Abrufen des PDF-Dokuments, welches das zu ändernde Signaturfeld enthält

    • Erstellen Sie ein java.io.FileInputStream-Objekt, welches das PDF-Dokument mit dem zu ändernden Signaturfeld darstellt, indem Sie seinen Konstruktor verwenden und einen Zeichenfolgewert übergeben, der den Speicherort des PDF-Dokuments angibt.
    • Erstellen Sie ein com.adobe.idp.Document-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream-Objekt übergeben.
  4. Festlegen von Wörterbuchwerten

    • Erstellen Sie ein Objekt PDFSignatureFieldProperties, indem Sie den Konstruktor verwenden. Ein PDFSignatureFieldProperties-Objekt speichert Informationen zum Sperrwörterbuch für Signaturfelder und zum Seed-Wert-Wörterbuch.
    • Erstellen Sie ein Objekt PDFSeedValueOptionSpec, indem Sie den Konstruktor verwenden. Mit diesem Objekt können Sie Werte im Seed-Wert-Wörterbuch festlegen.
    • Verhindern Sie Änderungen am PDF-Dokument, indem Sie die Methode setMdpValue des PDFSeedValueOptionSpec-Objekts aufrufen und den MDPPermissions.NoChanges-Auflistungswert übergeben.
    • Erstellen Sie ein Objekt FieldMDPOptionSpec, indem Sie den Konstruktor verwenden. Mit diesem Objekt können Sie Werte im Signaturfeldsperre-Wörterbuch festlegen.
    • Sperren Sie alle Felder im PDF-Dokument, indem Sie die Methode setMdpValue des FieldMDPOptionSpec-Objekts aufrufen und den FieldMDPAction.ALL-Auflistungswert übergeben.
    • Legen Sie Informationen zum Seed-Wert-Wörterbuch fest, indem Sie die Methode setSeedValue des PDFSignatureFieldProperties-Objekts aufrufen und das PDFSeedValueOptionSpec-Objekt übergeben.
    • Legen Sie Informationen für das Wörterbuch für die Signaturfeldsperre fest, indem Sie die Methode setFieldMDP des PDFSignatureFieldProperties-Objekts aufrufen und das FieldMDPOptionSpec-Objekt übergeben.
    HINWEIS
    Alle Seed-Wert-Wörterbuchwerte, die Sie festlegen können, finden Sie in dem Klassenverweis PDFSeedValueOptionSpec. (Siehe AEM Forms-API-Verweis.)
  5. Ändern des Signaturfelds

    Ändern Sie das Signaturfeld, indem Sie die Methode modifySignatureField des SignatureServiceClient-Objekts aufrufen und die folgenden Werte übergeben:

    • Das com.adobe.idp.Document-Objekt, in dem das PDF-Dokument mit dem zu ändernden Signaturfeld gespeichert ist
    • Ein Zeichenfolgenwert, der den Namen des Signaturfelds angibt
    • Das PDFSignatureFieldProperties-Objekt, das Informationen zum Signaturfeldsperre-Wörterbuch und zum Seed-Wert-Wörterbuch speichert

    Die Methode modifySignatureField gibt ein com.adobe.idp.Document-Objekt zurück, das ein PDF-Dokument speichert, welches das geänderte Signaturfeld enthält.

  6. Das PDF-Dokument als PDF-Datei speichern

    • Erstellen Sie ein java.io.File-Objekt und stellen Sie sicher, dass die Dateierweiterung .pdf ist.
    • Rufen Sie die Methode copyToFile des com.adobe.idp.Document-Objekts auf, um den Inhalt des com.adobe.idp.Document-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie das com.adobe.idp.Document-Objekt verwenden, das die Methode modifySignatureField zurückgegeben hat.

Ändern von Signaturfeldern mithilfe der Webservice-API

So ändern Sie ein Signaturfeld mithilfe der Signature-API (Webservice):

  1. Projektdateien einschließen

    Erstellen Sie ein Microsoft .NET-Projekt, das MTOM verwendet. Stellen Sie sicher, dass Sie die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    HINWEIS
    Ersetzen Sie localhost durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
  2. Erstellen eines Signatur-Clients

    • Erstellen Sie mithilfe des betreffenden Standardkonstruktors ein SignatureServiceClient-Objekt.

    • Erstellen Sie mithilfe des System.ServiceModel.EndpointAddress-Konstruktors ein SignatureServiceClient.Endpoint.Address-Objekt. Übergeben Sie einen Zeichenfolgenwert, der die WSDL für den AEM Forms-Service angibt (z. B. http://localhost:8080/soap/services/SignatureService?WSDL). Das Attribut lc_version muss nicht verwendet werden. Dieses Attribut wird verwendet, wenn Sie einen Service-Verweis erstellen.)

    • Erstellen Sie ein System.ServiceModel.BasicHttpBinding-Objekt durch Abrufen des Werts des Felds SignatureServiceClient.Endpoint.Binding. Wandeln Sie den Rückgabewert in BasicHttpBinding um.

    • Stellen Sie das Feld MessageEncoding des Objekts System.ServiceModel.BasicHttpBinding auf WSMessageEncoding.Mtom ein. Dieser Wert stellt sicher, dass MTOM verwendet wird.

    • Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Schritte ausführen:

      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.UserName den AEM Forms-Benutzernamen zu.
      • Weisen Sie dem Feld SignatureServiceClient.ClientCredentials.UserName.Password den entsprechenden Passwortwert zu.
      • Weisen Sie dem Feld BasicHttpBindingSecurity.Transport.ClientCredentialType den konstanten Wert HttpClientCredentialType.Basic zu.
      • Weisen Sie dem Feld BasicHttpBindingSecurity.Security.Mode den konstanten Wert BasicHttpSecurityMode.TransportCredentialOnly zu.
  3. Abrufen des PDF-Dokuments, welches das zu ändernde Signaturfeld enthält

    • Erstellen Sie ein Objekt BLOB, indem Sie den Konstruktor verwenden. Die BLOB -Objekt wird verwendet, um das PDF-Dokument zu speichern, das das zu ändernde Signaturfeld enthält.
    • Erstellen Sie ein System.IO.FileStream-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des PDF-Dokuments und den Modus darstellt, in dem die Datei geöffnet werden soll.
    • Erstellen Sie ein Byte-Array, das den Inhalt des System.IO.FileStream-Objekts speichert. Sie können die Größe des Byte-Arrays ermitteln, indem Sie die Eigenschaft Length des Objekts System.IO.FileStream abrufen.
    • Füllen Sie das Byte-Array mit Stream-Daten auf, indem Sie die Methode Read des Objekts System.IO.FileStream verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge weitergeben.
    • Füllen Sie das BLOB-Objekt, indem Sie seiner Eigenschaft MTOM den Inhalt des Byte-Arrays zuweisen.
  4. Festlegen von Wörterbuchwerten

    • Erstellen Sie ein Objekt PDFSignatureFieldProperties, indem Sie den Konstruktor verwenden. Dieses Objekt speichert Informationen zum Signaturfeldsperre-Wörterbuch und zum Seed-Wert-Wörterbuch.
    • Erstellen Sie ein Objekt PDFSeedValueOptionSpec, indem Sie den Konstruktor verwenden. Mit diesem Objekt können Sie Werte im Seed-Wert-Wörterbuch festlegen.
    • Sie können Änderungen am PDF-Dokument verbieten, indem Sie dem Datenelement mdpValue des PDFSeedValueOptionSpec-Objekts den MDPPermissions.NoChanges-Auflistungswert zuweisen.
    • Erstellen Sie ein Objekt FieldMDPOptionSpec, indem Sie den Konstruktor verwenden. Mit diesem Objekt können Sie Werte im Signaturfeldsperre-Wörterbuch festlegen.
    • Sperren Sie alle Felder im PDF-Dokument, indem Sie den FieldMDPAction.ALL-Auflistungswert dem Datenelement mdpValue des FieldMDPOptionSpec-Objekts zuweisen.
    • Legen Sie Informationen für das Seed-Wert-Wörterbuch fest, indem Sie das PDFSeedValueOptionSpec-Objekt dem Datenelement seedValue des PDFSignatureFieldProperties-Objekts zuweisen.
    • Legen Sie Informationen für das Wörterbuch für die Signaturfeldsperre fest, indem Sie das FieldMDPOptionSpec-Objekt dem Datenelement fieldMDP des PDFSignatureFieldProperties-Objekts zuweisen.
    HINWEIS
    Informationen zu allen Seed-Wert-Wörterbuchwerten, die Sie festlegen können, finden Sie in der PDFSeedValueOptionSpec-Klassenreferenz. (Siehe AEM Forms-API-Referenz).
  5. Ändern des Signaturfelds

    Ändern Sie das Signaturfeld, indem Sie die Methode modifySignatureField des SignatureServiceClient-Objekts aufrufen und die folgenden Werte übergeben:

    • Das BLOB-Objekt, in dem das PDF-Dokument mit dem zu ändernden Signaturfeld gespeichert ist
    • Ein Zeichenfolgenwert, der den Namen des Signaturfelds angibt
    • Das PDFSignatureFieldProperties-Objekt, das Informationen zum Signaturfeldsperre-Wörterbuch und zum Seed-Wert-Wörterbuch speichert

    Die Methode modifySignatureField gibt ein BLOB-Objekt zurück, das ein PDF-Dokument speichert, welches das geänderte Signaturfeld enthält.

  6. Das PDF-Dokument als PDF-Datei speichern

    • Erstellen Sie ein System.IO.FileStream-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des PDF-Dokuments, das das Signaturfeld enthalten soll, und den Modus darstellt, in dem die Datei geöffnet werden soll.
    • Erstellen Sie ein Byte-Array, das den Inhalt des BLOB-Objekts speichert, das die Methode addSignatureField zurückgibt. Füllen Sie das Byte-Array, indem Sie den Wert des Datenelements MTOM des BLOB-Objekts abrufen.
    • Erstellen Sie ein System.IO.BinaryWriter-Objekt, indem Sie seinen Konstruktor aufrufen und das System.IO.FileStream-Objekt übergeben.
    • Schreiben Sie den Inhalt des Byte-Arrays in eine PDF-Datei, indem Sie die Methode Write des System.IO.BinaryWriter-Objekts aufrufen und das Byte-Array übergeben.