Ermitteln der PDF/A-Kompatibilität von Dokumenten

Mithilfe des Assembler-Services können Sie feststellen, ob ein PDF-Dokument PDF/A-kompatibel ist. Ein PDF/A-Dokument liegt als ein Archivierungsformat vor, das für die langfristige Speicherung von Dokumentinhalten vorgesehen ist. Die Schriftarten werden im Dokument eingebettet und die Datei bleibt unkomprimiert. PDF/A-Dokumente sind daher in der Regel größer als normale PDF-Dokumente. Außerdem enthalten PDF/A-Dokumente keine Audio- und Videoinhalte.

Die PDF/A-1-Spezifikation umfasst zwei Konformitätsstufen (Level), nämlich A und B. Der Hauptunterschied zwischen den beiden Stufen ist die Unterstützung der logischen Struktur (Barrierefreiheit), die für die Konformitätsstufe B nicht erforderlich ist. Unabhängig von der Konformitätsstufe schreibt PDF/A-1 vor, dass alle Schriftarten in das generierte PDF/A-Dokument eingebettet sind. Derzeit wird bei der Gültigkeitsprüfung (und Konvertierung) nur PDF/A-1b unterstützt.

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/">
         <DocumentInformation source="Loan.pdf" result="Loan_result.xml">
         <PDFAValidation compliance="PDF/A-1b" resultLevel="Detailed"                       ignoreUnusedResources="true" allowCertificationSignatures="true" />
     </DocumentInformation>
 </DDX>

In diesem DDX-Dokument weist das Element DocumentInformation den Assembler-Dienst an, Informationen über das PDF-Eingabedokument zurückzugeben. Innerhalb des Elements DocumentInformation weist das Element PDFAValidation den Assembler-Service an anzugeben, ob das PDF-Eingabedokument PDF/A-kompatibel ist.

Der Assembler-Service gibt Informationen zurück, die detailliert angeben, ob das PDF-Eingabedokument in einem XML-Dokument, das ein PDFAConformance-Element enthält, PDF/A-kompatibel ist. Wenn das PDF-Eingabedokument PDF/A-kompatibel ist, hat das Attribut isCompliant des PDFAConformance-Elements den Wert true. Wenn das PDF-Dokument nicht PDF/A-kompatibel ist, hat das Attribut isCompliant des PDFAConformance-Elements den Wert false.

HINWEIS

Da das in diesem Abschnitt näher beschriebene DDX-Dokument ein DocumentInformation-Element enthält, gibt der Assembler-Service anstelle eines PDF-Dokuments XML-Daten zurück. Das heißt, durch den Assembler-Service erfolgt weder ein Zusammenfügen noch ein Aufteilen von PDF-Dokumenten. Es werden lediglich Informationen zu dem PDF-Eingabedokument in einem XML-Dokument zurückgegeben.

HINWEIS

Weitere Informationen zum Assembler-Service finden Sie in der Service-Referenz für AEM Forms.

HINWEIS

Weitere Informationen zu DDX-Dokumenten finden Sie unter Assembler-Service und DDX-Referenz.

Zusammenfassung der Schritte

Gehen Sie wie folgt vor, um festzustellen, ob ein PDF-Dokument PDF/A-kompatibel ist:

  1. Schließen Sie Projektdateien ein.
  2. Erstellen Sie einen PDF Assembler-Client.
  3. Referenzieren Sie ein vorhandenes DDX-Dokument.
  4. Referenzieren Sie ein PDF-Dokument, das zum Bestimmen der PDF/A-Kompatibilität verwendet wird.
  5. Legen Sie Laufzeitoptionen fest.
  6. Rufen Sie Informationen zum PDF-Dokument ab.
  7. Speichern Sie das zurückgegebene XML-Dokument.

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-assembler-client.jar
  • adobe-utilities.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)
  • jbossall-client.jar (erforderlich, wenn AEM Forms auf JBoss bereitgestellt wird)

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 PDF-Assembler-Clients

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

Referenzieren eines vorhandenen DDX-Dokuments

Es muss auf ein DDX-Dokument verwiesen werden, um einen Assembler-Service-Vorgang auszuführen. Um festzustellen, ob ein PDF-Eingabedokument PDF/A-kompatibel ist, stellen Sie sicher, dass das DDX-Dokument das PDFAValidation-Element in einem DocumentInformation-Element enthält. Das PDFAValidation-Element weist den Assembler-Service an, ein XML-Dokument zurückzugeben, das angibt, ob das PDF-Eingabedokument PDF/A-kompatibel ist.

Referenzieren eines PDF-Dokuments zur Ermittlung der PDF/A-Kompatibilität

Ein PDF-Dokument muss referenziert und an den Assembler-Service übergeben werden, um festzustellen, ob das PDF-Dokument PDF/A-kompatibel ist.

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 über die Laufzeitoptionen, die Sie festlegen können, finden Sie unter AssemblerOptionSpec-Klassenverweis in AEM Forms API-Referenz.

Abrufen von Informationen über das PDF-Dokument

Nachdem Sie den Assembler-Service-Client erstellt haben, auf das DDX-Dokument verwiesen haben, auf ein interaktives PDF-Dokument verwiesen haben und Laufzeitoptionen festgelegt haben, können Sie den invokeDDX-Vorgang aufrufen. Da das DDX-Dokument das DocumentInformation-Element enthält, gibt der Assembler-Service XML-Daten anstelle eines PDF-Dokuments zurück.

Speichern des zurückgegebenen XML-Dokuments

Das vom Assembler-Service zurückgegebene XML-Dokument gibt an, ob das PDF-Eingabedokument PDF/A-kompatibel ist. Wenn das PDF-Eingabedokument beispielsweise nicht PDF/A-kompatibel ist, gibt der Assembler-Service ein XML-Dokument zurück, das das folgende Element enthält:

 <PDFAConformance isCompliant="false" compliance="PDF/A-1b" resultLevel="Detailed" ignoreUnusedResources="true" allowCertificationSignatures="true">

Speichern Sie das XML-Dokument als XML-Datei, damit Sie die Datei öffnen und die Ergebnisse anzeigen können.

Siehe auch

Ermitteln Sie mithilfe der Java-API, ob ein Dokument PDF/A-kompatibel ist.

Ermitteln Sie mithilfe der Web-Service-API, ob ein Dokument PDF/A-kompatibel ist.

Einbeziehung von AEM Forms Java-Bibliotheksdateien

Verbindungseigenschaften festlegen

Programmatisches Zusammenstellen von PDF-Dokumenten

Ermitteln Sie mithilfe der Java-API, ob ein Dokument PDF/A-kompatibel ist.

So ermitteln Sie mithilfe der Assembler-Service-API (Java), ob ein PDF-Dokument PDF/A-kompatibel ist:

  1. Schließen Sie Projektdateien ein.

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

  2. Erstellen Sie einen PDF Assembler-Client.

    • Erstellen Sie ein ServiceClientFactory-Objekt, das Verbindungseigenschaften enthält.
    • Erstellen Sie ein AssemblerServiceClient-Objekt, indem Sie seinen Konstruktor verwenden und das ServiceClientFactory-Objekt übergeben.
  3. Referenzieren Sie ein vorhandenes DDX-Dokument.

    • Erstellen Sie ein java.io.FileInputStream-Objekt, das das DDX-Dokument darstellt, indem Sie seinen Konstruktor verwenden und einen Zeichenfolgenwert übergiben, der den Speicherort der DDX-Datei angibt. Um festzustellen, ob das PDF-Dokument PDF/A-kompatibel ist, stellen Sie sicher, dass das DDX-Dokument das PDFAValidation-Element enthält, das in einem DocumentInformation-Element enthalten ist.
    • Erstellen Sie ein com.adobe.idp.Document-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream-Objekt übergeben.
  4. Referenzieren Sie ein PDF-Dokument, das zum Bestimmen der PDF/A-Kompatibilität verwendet wird.

    • Erstellen Sie ein java.io.FileInputStream-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort eines PDF-Dokuments übergeben, das zum Bestimmen der PDF/A-Kompatibilität verwendet wird.

    • Erstellen Sie ein com.adobe.idp.Document-Objekt, indem Sie seinen Konstruktor verwenden und das java.io.FileInputStream-Objekt übergeben, das das PDF-Dokument enthält.

    • Erstellen Sie ein java.util.Map-Objekt, das mithilfe eines HashMap-Konstruktors zum Speichern des Eingabe-PDF-Dokuments verwendet wird.

    • Fügen Sie dem java.util.Map-Objekt durch Aufrufen seiner put-Methode und Übergeben der folgenden Argumente einen Eintrag hinzu:

      • Eine Zeichenfolge, die den Speichernamen repräsentiert. Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen Quellelements übereinstimmen. Beispielsweise lautet der Wert des Quellelements im DDX-Dokument, das in diesem Abschnitt eingeführt wird, Loan.pdf.
      • Ein com.adobe.idp.Document-Objekt, das das PDF-Eingabedokument enthält.
  5. Legen Sie Laufzeitoptionen fest.

    • Erstellen Sie ein AssemblerOptionSpec-Objekt, das Laufzeitoptionen mithilfe seines Konstruktors speichert.
    • Legen Sie Laufzeitoptionen fest, um Ihre Geschäftsanforderungen zu erfüllen, indem Sie eine Methode aufrufen, die zum AssemblerOptionSpec-Objekt gehört. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, rufen Sie die setFailOnError-Methode des AssemblerOptionSpec-Objekts auf und übergeben Sie false.
  6. Rufen Sie Informationen zum PDF-Dokument ab.

    Rufen Sie die invokeDDX-Methode des AssemblerServiceClient-Objekts auf und übergeben Sie die folgenden erforderlichen Werte:

    • Ein com.adobe.idp.Document-Objekt, das das zu verwendende DDX-Dokument darstellt
    • Ein java.util.Map-Objekt, das die PDF-Eingabedatei enthält, mit der die PDF/A-Kompatibilität ermittelt wird.
    • Ein com.adobe.livecycle.assembler.client.AssemblerOptionSpec-Objekt, das die Optionen für die Laufzeit angibt

    Die invokeDDX-Methode gibt ein com.adobe.livecycle.assembler.client.AssemblerResult-Objekt zurück, das XML-Daten enthält, die angeben, ob das PDF-Eingabedokument PDF/A-kompatibel ist.

  7. Speichern Sie das zurückgegebene XML-Dokument.

    So rufen Sie XML-Daten ab, die angeben, ob das PDF-Eingabedokument ein PDF/A-Dokument ist:

    • Rufen Sie die getDocuments-Methode des AssemblerResult-Objekts auf. Dadurch wird ein java.util.Map-Objekt zurückgegeben.
    • Gehen Sie schrittweise durch das java.util.Map-Objekt, bis Sie das resultierende com.adobe.idp.Document-Objekt finden.
    • Rufen Sie die copyToFile-Methode des com.adobe.idp.Document-Objekts auf, um das XML-Dokument zu extrahieren. Stellen Sie sicher, dass Sie die XML-Daten als XML-Datei speichern.

Siehe auch

Schnellstart (SOAP-Modus): Mithilfe der Java-API (SOAP-Modus) bestimmen, ob ein Dokument PDF/A-kompatibel ist

Einbeziehung von AEM Forms Java-Bibliotheksdateien

Verbindungseigenschaften festlegen

Ermitteln Sie mithilfe der Web-Service-API, ob ein Dokument PDF/A-kompatibel ist.

Stellen Sie mithilfe der Assembler-Service-API (Webservice) fest, ob ein PDF-Dokument PDF/A-kompatibel ist:

  1. Schließen Sie Projektdateien ein.

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

    HINWEIS

    Ersetzen Sie localhost durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.

  2. Erstellen Sie einen PDF Assembler-Client.

    • Erstellen Sie ein AssemblerServiceClient-Objekt, indem Sie seinen Standardkonstruktor verwenden.

    • Erstellen Sie ein AssemblerServiceClient.Endpoint.Address-Objekt, indem Sie den System.ServiceModel.EndpointAddress-Konstruktor verwenden. Übergeben Sie einen Zeichenfolgenwert, der dem AEM Forms-Service die WSDL angibt (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-Objekt, indem Sie den Wert des Felds AssemblerServiceClient.Endpoint.Binding abrufen. Wandeln Sie den Rückgabewert in BasicHttpBinding um.

    • Setzen Sie das Feld MessageEncoding des System.ServiceModel.BasicHttpBinding-Objekts auf WSMessageEncoding.Mtom. 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 AssemblerServiceClient.ClientCredentials.UserName.UserName den AEM Forms-Benutzernamen zu.
      • Weisen Sie dem Feld AssemblerServiceClient.ClientCredentials.UserName.Password den entsprechenden Kennwortwert 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. Referenzieren Sie ein vorhandenes DDX-Dokument.

    • Erstellen Sie ein Objekt BLOB, indem Sie den Konstruktor verwenden. Das BLOB-Objekt wird zum Speichern des DDX-Dokuments verwendet.
    • Erstellen Sie ein Objekt 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.
    • Erstellen Sie ein Byte-Array, das den Inhalt des System.IO.FileStream-Objekts speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die Eigenschaft Length des System.IO.FileStream-Objekts abrufen.
    • Befüllen Sie das Byte-Array mit Stream-Daten, indem Sie die Read-Methode des System.IO.FileStream-Objekts aufrufen und das Byte-Array, die Startposition und die zu lesende Datenstromlänge übergeben.
    • Befüllen Sie das BLOB-Objekt, indem Sie seinem Feld MTOM die Inhalte des Byte-Arrays zuweisen.
  4. Referenzieren Sie ein PDF-Dokument, das zum Bestimmen der PDF/A-Kompatibilität verwendet wird.

    • Erstellen Sie ein Objekt BLOB, indem Sie den Konstruktor verwenden. Das BLOB-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet.
    • Erstellen Sie ein Objekt System.IO.FileStream, indem Sie seinen Konstruktor aufrufen und einen String-Wert übergeben, der den Dateispeicherort des PDF-Eingabedokuments und den Modus, in dem die Datei geöffnet werden soll, repräsentiert.
    • Erstellen Sie ein Byte-Array, das den Inhalt des System.IO.FileStream-Objekts speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die Eigenschaft Length des System.IO.FileStream-Objekts abrufen.
    • Befüllen Sie das Byte-Array mit Stream-Daten, indem Sie die Read-Methode des System.IO.FileStream-Objekts aufrufen und das Byte-Array, die Startposition und die zu lesende Datenstromlänge übergeben.
    • Befüllen Sie das BLOB-Objekt, indem Sie seiner Eigenschaft MTOM die Inhalte des Byte-Arrays zuweisen.
    • Erstellen Sie ein Objekt MyMapOf_xsd_string_To_xsd_anyType. Dieses Collection-Objekt wird zum Speichern des PDF-Dokuments verwendet.
    • Erstellen Sie ein Objekt MyMapOf_xsd_string_To_xsd_anyType_Item.
    • Weisen Sie dem Feld key des MyMapOf_xsd_string_To_xsd_anyType_Item-Objekts einen String-Wert zu, der den Schlüsselnamen repräsentiert. Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen PDF-Quellelements übereinstimmen.
    • Weisen Sie das BLOB-Objekt, das das PDF-Dokument speichert, dem Feld value des MyMapOf_xsd_string_To_xsd_anyType_Item-Objekts zu.
    • Fügen Sie das MyMapOf_xsd_string_To_xsd_anyType_Item-Objekt dem MyMapOf_xsd_string_To_xsd_anyType-Objekt hinzu. Rufen Sie die Add-Methode des MyMapOf_xsd_string_To_xsd_anyType-Objekts auf und übergeben Sie das Objekt MyMapOf_xsd_string_To_xsd_anyType.
  5. Legen Sie Laufzeitoptionen fest.

    • Erstellen Sie ein Objekt AssemblerOptionSpec, das Laufzeitoptionen speichert, mithilfe des Konstruktors.
    • Legen Sie Laufzeitoptionen so fest, dass sie zu Ihren geschäftlichen Anforderungen passen, indem Sie einem Daten-Member, der zum AssemblerOptionSpec-Objekt gehört, einen Wert zuweisen. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Sie dem failOnError-Daten-Member des AssemblerOptionSpec-Objekts false zu.
  6. Rufen Sie Informationen zum PDF-Dokument ab.

    Rufen Sie die invoke-Methode des AssemblerServiceService-Objekts auf und übergeben Sie die folgenden Werte:

    • Ein BLOB-Objekt, das das DDX-Dokument darstellt.
    • Das MyMapOf_xsd_string_To_xsd_anyType-Objekt, das das PDF-Eingabedokument enthält. Die Schlüssel müssen mit den Namen der PDF-Quelldateien übereinstimmen, und ihre Werte müssen das BLOB-Objekt sein, das der PDF-Eingabedatei entspricht.
    • Ein AssemblerOptionSpec-Objekt, das Laufzeitoptionen angibt.

    Die invoke-Methode gibt ein AssemblerResult-Objekt zurück, das XML-Daten enthält, die angeben, ob das PDF-Eingabedokument ein PDF/A-Dokument ist.

  7. Speichern Sie das zurückgegebene XML-Dokument.

    So rufen Sie XML-Daten ab, die angeben, ob das PDF-Eingabedokument ein PDF/A-Dokument ist:

    • Greifen Sie auf das Feld documents des AssemblerResult-Objekts zu, wobei es sich um ein Map-Objekt handelt, das die XML-Daten enthält, die angeben, ob das PDF-Eingabedokument ein PDF/A-Dokument ist.
    • Führen Sie eine Iteration über das Map-Objekt aus, um jedes Zieldokument zu erhalten. Anschließend ändern Sie den Wert dieses Array-Elements in BLOB.
    • Extrahieren Sie die Binärdaten, die die XML-Daten darstellen, indem Sie auf das Feld MTOM des BLOB-Objekts zugreifen. Dieses Feld speichert ein Array von Bytes, das sich als XML-Datei ausgeben lässt.

Siehe auch

AEM Forms mithilfe von MTOM aufrufen

Auf dieser Seite