Zusammenstellen von nicht interaktiven PDF-Dokumenten assembling-non-interactive-pdf-documents
Sie können ein nicht interaktives PDF-Dokument zusammenstellen, wenn Sie ein interaktives PDF-Formular als Eingabe verwenden. Angenommen, Sie verfügen über ein Formular, mit dem Benutzer Daten in die Felder eingeben können. Sie können dieses Formular an den Assembler-Dienst übergeben, was dazu führt, dass der Assembler-Dienst ein PDF-Dokument zurückgibt, das die Eingabe von Daten durch Benutzer verhindert. Dieses Dokument ist ein nicht interaktives PDF-Formular. Die folgende Abbildung zeigt beispielsweise einen Hypothekenantrag, der ein interaktives Formular darstellt.
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="out.pdf">
<PDF source="inDoc"/>
<NoXFA/>
</PDF>
</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.
Dieses DDX-Dokument enthält das NoXFA
-Element, das den Assembler-Dienst anweist, ein nicht interaktives PDF-Dokument zurückzugeben.
Der Assembler-Dienst kann nicht interaktive PDF-Dokumente zusammenstellen, ohne dass der Output-Dienst Teil Ihrer AEM Forms-Installation ist, wenn das Eingabedokument auf einem Acrobat-Formular oder einem statischen XFA-Formular basiert. Wenn das PDF-Eingabedokument jedoch ein dynamisches XFA-PDF-Formular ist, muss der Output-Dienst Teil Ihrer AEM Forms-Installation sein. Wenn der Output-Dienst nicht Teil Ihrer AEM Forms-Installation ist, wenn ein dynamisches XFA-Formular assembliert wird, wird eine Ausnahme ausgelöst. Siehe Erstellen von Document Output Streams.
Zusammenfassung der Schritte summary-of-steps
Führen Sie zum Zusammenführen eines nicht interaktiven PDF-Dokuments die folgenden Schritte aus:
- Schließen Sie Projektdateien ein.
- Erstellen Sie einen PDF Assembler-Client.
- Referenzieren Sie ein vorhandenes DDX-Dokument.
- Referenzieren Sie ein interaktives PDF-Dokument.
- Legen Sie Laufzeitoptionen fest.
- Stellen Sie das PDF-Dokument zusammen.
- Speichern Sie das nicht interaktive PDF-Dokument.
Schließen Sie Projektdateien ein
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 anderen unterstützten J2EE-Anwendungsserver als JBoss bereitgestellt wird, müssen Sie die Dateien adobe-utilities.jar- und jbossall-client.jar-Dateien durch JAR-Dateien ersetzen, die für den J2EE-Anwendungsserver spezifisch sind, auf dem AEM Forms bereitgestellt wird.
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. Dieses DDX-Dokument muss Folgendes enthalten: NoXFA
-Element, das den Assembler-Dienst anweist, ein nicht interaktives PDF-Dokument zurückzugeben.
Referenzieren eines interaktiven PDF-Dokuments
Ein interaktives PDF-Dokument muss referenziert und an den Assembler-Dienst übergeben werden, um ein nicht interaktives PDF-Dokument wiederherzustellen.
Laufzeitoptionen festlegen
Sie können Laufzeitoptionen festlegen, die das Verhalten des Assembler-Dienstes während der Ausführung eines Auftrags steuern. Sie können beispielsweise eine Option festlegen, mit der der Assembler-Dienst angewiesen wird, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt.
Zusammenführen des PDF-Dokuments
Nachdem Sie den Assembler-Dienst-Client erstellt haben, auf das DDX-Dokument verweisen, auf ein interaktives PDF-Dokument verweisen und Laufzeitoptionen festlegen, können Sie den invokeOneDocument
-Vorgang auslösen. Da nur ein PDF-Eingabedokument an den Assembler-Dienst übergeben und ein einziges Dokument zurückgegeben wird, können Sie den invokeOneDocument
-Vorgang im Gegensatz zum invokeDDX
-Vorgang verwenden.
Speichern Sie das nicht interaktive PDF-Dokument
Wenn nur ein einzelnes PDF-Dokument an den Assembler-Dienst übergeben wird, gibt der Assembler-Dienst anstelle eines Sammlungsobjekts ein einzelnes Dokument zurück. Das heißt, beim Aufrufen des invokeOneDocument
-Vorgangs wird ein einzelnes Dokument zurückgegeben. Da das in diesem Abschnitt referenzierte DDX-Dokument Anweisungen zum Erstellen eines nicht interaktiven PDF-Dokuments enthält, gibt der Assembler-Dienst ein nicht interaktives PDF-Dokument zurück, das als PDF-Datei gespeichert werden kann.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmatisches Zusammenstellen von PDF-Dokumenten
Zusammenführen eines nicht interaktiven PDF-Dokuments mithilfe der Java-API assemble-a-non-interactive-pdf-document-using-the-java-api
Assemblieren eines nicht interaktiven PDF-Dokuments mithilfe der Assembler-Dienst-API (Java):
-
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.
- Erstellen Sie ein
ServiceClientFactory
-Objekt, das Verbindungseigenschaften enthält. - Erstellen Sie ein
AssemblerServiceClient
-Objekt, indem Sie seinen Konstruktor verwenden und dasServiceClientFactory
-Objekt übergeben.
- Erstellen Sie ein
-
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 übergeben, der den Speicherort der DDX-Datei angibt. - Erstellen Sie ein
com.adobe.idp.Document
-Objekt, indem Sie seinen Konstruktor verwenden und dasjava.io.FileInputStream
-Objekt übergeben.
- Erstellen Sie ein
-
Referenzieren Sie ein interaktives PDF-Dokument.
- Erstellen Sie ein
java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort eines interaktiven PDF-Dokuments übergeben. - Erstellen Sie ein
com.adobe.idp.Document
-Objekt und übergeben Sie dasjava.io.FileInputStream
-Objekt, das das PDF-Dokument enthält. Diesescom.adobe.idp.Document
-Objekt wird derinvokeOneDocument
-Methode übergeben.
- Erstellen Sie ein
-
Legen Sie Laufzeitoptionen fest.
- Erstellen Sie ein
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen speichert, indem Sie seinen Konstruktor verwenden. - 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 MethodesetFailOnError
desAssemblerOptionSpec
-Objekts auf und übergebenfalse
.
- Erstellen Sie ein
-
Stellen Sie das PDF-Dokument zusammen.
Rufen Sie die
invokeOneDocument
-Methode desAssemblerServiceClient
-Objekts auf und übergeben Sie ihr die folgenden Werte:- Ein
com.adobe.idp.Document
-Objekt, das das DDX-Dokument darstellt. Stellen Sie sicher, dass dieses DDX-Dokument den WertinDoc
für das PDF-Quellelement enthält. - Ein
com.adobe.idp.Document
-Objekt, das das interaktive PDF-Dokument enthält. - Ein
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich der standardmäßigen Schrift und Auftragsprotokollebene.
Die
invokeOneDocument
-Methode gibt eincom.adobe.idp.Document
-Objekt zurück, das ein nicht interaktives PDF-Dokument enthält. - Ein
-
Speichern Sie das nicht interaktive PDF-Dokument.
- Erstellen Sie ein
java.io.File
-Objekt und stellen Sie sicher, dass die Dateierweiterung .pdf lautet. - Rufen Sie die Methode
copyToFile
desDocument
-Objekts auf, um den Inhalt desDocument
-Objekts in die Datei zu kopieren. Stellen Sie sicher, dass Sie dasDocument
-Objekt verwenden, das von derinvokeOneDocument
-Methode zurückgegeben wurde.
- Erstellen Sie ein
- „Schnellstart (SOAP-Modus): Assemblieren eines nicht interaktiven PDF-Dokuments mit der Java-API“
Zusammenführen eines nicht interaktiven PDF-Dokuments mithilfe der Webservice-API assemble-a-non-interactive-pdf-document-using-the-web-service-api
Assemblieren eines nicht interaktiven PDF-Dokuments mithilfe der Assembler-Service-API (Webservice):
-
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
.note note NOTE 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 desSystem.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 daslc_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 FeldsAssemblerServiceClient.Endpoint.Binding
abrufen. Wandeln Sie den Rückgabewert inBasicHttpBinding
um. -
Legen Sie das
MessageEncoding
-Feld desSystem.ServiceModel.BasicHttpBinding
-Objekts aufWSMessageEncoding.Mtom
fest. 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 Passwortwert zu. - Weisen Sie dem Feld
BasicHttpBindingSecurity.Transport.ClientCredentialType
den konstanten WertHttpClientCredentialType.Basic
zu. - Weisen Sie dem Feld
BasicHttpBindingSecurity.Security.Mode
den KonstantenwertBasicHttpSecurityMode.TransportCredentialOnly
zu.
- Weisen Sie dem Feld
-
-
Referenzieren Sie ein vorhandenes DDX-Dokument.
- Erstellen Sie ein Objekt
BLOB
, indem Sie den Konstruktor verwenden. DasBLOB
-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 EigenschaftLength
desSystem.IO.FileStream
-Objekts abrufen. - Füllen Sie das Byte-Array mit Stream-Daten, indem Sie die Methode
Read
desSystem.IO.FileStream
-Objekts aufrufen. Übergeben Sie das Byte-Array, die Startposition und die zu lesende Datenstromlänge. - Füllen Sie das
BLOB
-Objekt, indem Sie den Inhalt des Byte-Arrays seinemMTOM
-Feld zuweisen.
- Erstellen Sie ein Objekt
-
Referenzieren Sie ein interaktives PDF-Dokument.
- Erstellen Sie ein Objekt
BLOB
, indem Sie den Konstruktor verwenden. DasBLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. DiesesBLOB
-Objekt wird deminvokeOneDocument
als Argument übergeben. - Erstellen Sie ein
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. - Erstellen Sie ein Byte-Array, in dem der Inhalt des
System.IO.FileStream
-Objekts gespeichert wird. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die EigenschaftLength
desSystem.IO.FileStream
-Objekts abrufen. - Füllen Sie das Byte-Array mit Stream-Daten, indem Sie die Methode
Read
desSystem.IO.FileStream
-Objekts aufrufen. Übergeben Sie das Byte-Array, die Startposition und die zu lesende Datenstromlänge. - Füllen Sie das
BLOB
-Objekt, indem Sie dessen FeldMTOM
mit dem Inhalt des Byte-Arrays belegen.
- Erstellen Sie ein Objekt
-
Legen Sie Laufzeitoptionen fest.
- Erstellen Sie ein
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen speichert, indem Sie seinen Konstruktor verwenden. - Legen Sie Laufzeitoptionen fest, um Ihre Geschäftsanforderungen zu erfüllen, indem Sie einem Datenelement, das zum
AssemblerOptionSpec
-Objekt gehört, einen Wert zuweisen. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Siefalse
dem DatenelementfailOnError
desAssemblerOptionSpec
-Objekts zu.
- Erstellen Sie ein
-
Stellen Sie das PDF-Dokument zusammen.
Rufen Sie die Methode
invokeOneDocument
desAssemblerServiceClient
-Objekts auf und übergeben Sie die folgenden Werte:- Ein
BLOB
-Objekt, das das DDX-Dokument darstellt - Ein
BLOB
-Objekt, das das interaktive PDF-Dokument darstellt - Ein
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibt
Die
invokeOneDocument
-Methode gibt eineBLOB
-Objekt zurück, das ein nicht interaktives PDF-Dokument enthält. - Ein
-
Speichern Sie das nicht interaktive PDF-Dokument.
- Erstellen Sie ein
System.IO.FileStream
-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des nicht interaktiven PDF-Dokuments und den Modus zum Öffnen der Datei darstellt. - Erstellen Sie ein Byte-Array, in dem der Inhalt des von der
invokeOneDocument
-Methode zurückgegebenenBLOB
-Objekts gespeichert wird. Füllen Sie das Byte-Array, indem Sie den Wert aus demMTOM
-Feld desBLOB
-Objekts abrufen. - Erstellen Sie ein
System.IO.BinaryWriter
-Objekt, indem Sie seinen Konstruktor verwenden und dasSystem.IO.FileStream
-Objekt übergeben. - Schreiben Sie den Inhalt des Byte-Arrays in eine PDF-Datei, indem Sie die
Write
-Methode desSystem.IO.BinaryWriter
-Objekts aufrufen und ihr das Byte-Array übergeben.
- Erstellen Sie ein
- „Schnellstart (MTOM): Assemblieren eines nicht interaktiven PDF-Dokuments mithilfe der Web-Service-API“.
Siehe auch
AEM Forms mithilfe von MTOM aufrufen