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.
Angenommen, für diese Diskussion wird das folgende DDX-Dokument verwendet.
<?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 in diesem DDX-Dokument, dass dem Quellattribut der Wert zugewiesen ist. inDoc
. In Fällen, in denen nur ein Eingabedokument an den Assembler-Dienst übergeben und ein PDF-PDF-Dokument zurückgegeben wird, rufen Sie die invokeOneDocument
-Vorgang, Wert zuweisen inDoc
zum PDF-Quellattribut. Beim Aufrufen der invokeOneDocument
den inDoc
value ist ein vordefinierter Schlüssel, der im DDX-Dokument angegeben werden muss.
Wenn Sie dagegen zwei oder mehr Eingabedokumente an den Assembler-PDF-Dienst übergeben, können Sie die invokeDDX
Vorgang. Weisen Sie in diesem Fall den Dateinamen des PDF-Eingabedokuments dem source
-Attribut.
Dieses DDX-Dokument enthält die 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 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.
Bevor Sie diesen Abschnitt lesen, sollten Sie sich mit dem Zusammenstellen von PDF-Dokumenten mit dem Assembler-Dienst vertraut machen. In diesem Abschnitt werden keine Konzepte besprochen, wie das Erstellen eines Kollektionsobjekts mit Eingabedokumenten oder das Extrahieren der Ergebnisse aus dem zurückgegebenen Kollektionsobjekt. (Siehe Programmgesteuertes Zusammenstellen von PDF-Dokumenten.
Weitere Informationen zum Assembler-Dienst finden Sie unter Dienstreferenz für AEM Forms.
Weitere Informationen zu einem DDX-Dokument finden Sie unter Assembler-Dienst und DDX-Referenz.
Führen Sie zum Zusammenführen eines nicht interaktiven PDF-Dokuments die folgenden Schritte aus:
Projektdateien einschließen
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:
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"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.
Vorhandenes DDX-Dokument referenzieren
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 die invokeOneDocument
Vorgang. Da nur ein Eingabedokument an den Assembler-Dienst übergeben und ein einziges PDF zurückgegeben wird, können Sie die invokeOneDocument
im Gegensatz zum invokeDDX
Vorgang.
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 Collection-Objekts ein einzelnes Dokument zurück. Das heißt, beim Aufrufen der invokeOneDocument
-Vorgang, 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
Programmgesteuertes Zusammenstellen von PDF-Dokumenten
Assemblieren eines nicht interaktiven PDF-Dokuments mithilfe der Assembler-Dienst-API (Java):
Projektdateien einschließen.
Schließen 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 durch Verwendung seines Konstruktors und Übergabe des ServiceClientFactory
-Objekt.Referenzieren Sie ein vorhandenes DDX-Dokument.
java.io.FileInputStream
-Objekt, das das DDX-Dokument darstellt, indem es seinen Konstruktor verwendet und einen string -Wert übergibt, 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 interaktives PDF-Dokument.
java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort eines interaktiven PDF-Dokuments übergeben.com.adobe.idp.Document
-Objekt und übergeben Sie die java.io.FileInputStream
-Objekt, das das PDF-Dokument enthält. Diese com.adobe.idp.Document
-Objekt wird an die invokeOneDocument
-Methode.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe seines Konstruktors speichert.AssemblerOptionSpec
-Objekt. Um beispielsweise den Assembler-Dienst anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, rufen Sie die AssemblerOptionSpec
-Objekt setFailOnError
-Methode und -übergabe false
.Stellen Sie das PDF-Dokument zusammen.
Rufen Sie die AssemblerServiceClient
-Objekt invokeOneDocument
-Methode verwenden und die folgenden Werte übergeben:
com.adobe.idp.Document
-Objekt, das das DDX-Dokument darstellt. Stellen Sie sicher, dass dieses DDX-Dokument den Wert enthält. inDoc
für das PDF-Quellelement.com.adobe.idp.Document
-Objekt, das das interaktive PDF-Dokument enthält.com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich der standardmäßigen Schrift- und Auftragsprotokollebene.Die invokeOneDocument
-Methode gibt eine com.adobe.idp.Document
-Objekt, das ein nicht interaktives PDF-Dokument enthält.
Speichern Sie das nicht interaktive PDF-Dokument.
java.io.File
-Objekt ein und stellen Sie sicher, dass die Dateinamenerweiterung .pdf lautet.Document
-Objekt copyToFile
-Methode zum Kopieren des Inhalts der Document
-Objekt in die Datei ein. Stellen Sie sicher, dass Sie die Document
-Objekt, das invokeOneDocument
-Methode zurückgegeben.Assemblieren eines nicht interaktiven PDF-Dokuments mithilfe der Assembler-Dienst-API (Webdienst):
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/AssemblerService?WSDL&lc_version=9.0.1
.
Ersetzen localhost
mit der IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
Erstellen Sie einen Assembler-Client.
Erstellen Sie eine AssemblerServiceClient
-Objekt mithilfe des Standardkonstruktors.
Erstellen Sie eine AssemblerServiceClient.Endpoint.Address
-Objekt mithilfe der System.ServiceModel.EndpointAddress
-Konstruktor. Übergeben Sie einen string -Wert, der die WSDL an den AEM Forms-Dienst angibt (z. B. http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Sie müssen die lc_version
-Attribut. Dieses Attribut wird verwendet, wenn Sie eine Dienstreferenz erstellen.
Erstellen Sie eine System.ServiceModel.BasicHttpBinding
-Objekt durch Abrufen des Werts der AssemblerServiceClient.Endpoint.Binding
-Feld. Wandeln Sie den Rückgabewert in BasicHttpBinding
um.
Legen Sie die System.ServiceModel.BasicHttpBinding
-Objekt MessageEncoding
-Feld zu WSMessageEncoding.Mtom
. Dieser Wert stellt sicher, dass MTOM verwendet wird.
Aktivieren Sie die einfache HTTP-Authentifizierung, indem Sie die folgenden Aufgaben ausführen:
AssemblerServiceClient.ClientCredentials.UserName.UserName
.AssemblerServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
zum Feld BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
zum Feld BasicHttpBindingSecurity.Security.Mode
.Referenzieren Sie ein vorhandenes DDX-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Die BLOB
-Objekt wird zum Speichern des DDX-Dokuments verwendet.System.IO.FileStream
-Objekt, indem Sie seinen Konstruktor aufrufen und einen string -Wert übergeben, der den Dateispeicherort des DDX-Dokuments und den Modus zum Öffnen der Datei darstellt.System.IO.FileStream
-Objekt. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die System.IO.FileStream
-Objekt Length
-Eigenschaft.System.IO.FileStream
-Objekt Read
-Methode. Übergeben Sie das Byte-Array, die Startposition und die zu lesende Stream-Länge.BLOB
Objekt durch Zuweisen seiner MTOM
-Feld mit dem Inhalt des Byte-Arrays.Referenzieren Sie ein interaktives PDF-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Die BLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. Diese BLOB
-Objekt wird an die invokeOneDocument
als Argument.System.IO.FileStream
-Objekt durch Aufrufen des Konstruktors und Übergeben eines Zeichenfolgenwerts, der den Dateispeicherort des Eingabedokuments und den PDF-Modus zum Öffnen der Datei darstellt.System.IO.FileStream
-Objekt. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die System.IO.FileStream
-Objekt Length
-Eigenschaft.System.IO.FileStream
-Objekt Read
-Methode. Übergeben Sie das Byte-Array, die Startposition und die zu lesende Stream-Länge.BLOB
Objekt durch Zuweisen seiner MTOM
-Feld mit dem Inhalt des Byte-Arrays.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe seines Konstruktors speichert.AssemblerOptionSpec
-Objekt. Um beispielsweise den Assembler-Dienst anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Sie false
der AssemblerOptionSpec
-Objekt failOnError
Datenelement.Stellen Sie das PDF-Dokument zusammen.
Rufen Sie die AssemblerServiceClient
-Objekt invokeOneDocument
-Methode verwenden und die folgenden Werte übergeben:
BLOB
-Objekt, das das DDX-Dokument darstelltBLOB
-Objekt, das das interaktive PDF-Dokument darstelltAssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibtDie invokeOneDocument
-Methode gibt eine BLOB
-Objekt, das ein nicht interaktives PDF-Dokument enthält.
Speichern Sie das nicht interaktive PDF-Dokument.
System.IO.FileStream
-Objekt durch Aufrufen des Konstruktors und Übergeben eines Zeichenfolgenwerts, der den Dateispeicherort des nicht interaktiven PDF-Dokuments und den zu öffnenden Dateimodus darstellt.BLOB
-Objekt, das invokeOneDocument
-Methode zurückgegeben. Füllen Sie das Byte-Array, indem Sie den Wert der BLOB
-Objekt MTOM
-Feld.System.IO.BinaryWriter
-Objekt durch Aufrufen des Konstruktors und Übergeben des System.IO.FileStream
-Objekt.System.IO.BinaryWriter
-Objekt Write
-Methode verwenden und das Byte-Array übergeben.Siehe auch
AEM Forms mithilfe von MTOM aufrufen