Die Beispiele in diesem Dokument gelten nur für eine AEM Forms on JEE-Umgebung.
Sie können ein PDF-Dokument aufteilen, indem Sie es an den Assembler-Service übergeben. Diese Aufgabe ist in der Regel hilfreich, wenn das PDF-Dokument ursprünglich aus vielen Einzeldokumenten erstellt wurde, wie z. B. einer Sammlung von Aussagen. In der folgenden Abbildung ist DocA in mehrere Zieldokumente unterteilt, wobei das Lesezeichen der Stufe 1 auf einer Seite den Beginn eines neuen resultierenden Dokuments angibt.
Um ein PDF-Dokument aufzuteilen, stellen Sie sicher, dass sich das Element PDFsFromBookmarks
in dem DDX-Dokument befindet. Das Element PDFsFromBookmarks
ist ein resultierendes Element und kann nur ein untergeordnetes Element des Elements DDX
sein. Es hat kein result
-Attribut, da es zur Erzeugung mehrerer Dokumente führen kann.
Das PDFsFromBookmarks
-Element bewirkt, dass für jedes Lesezeichen der Stufe 1 im Quelldokument ein einzelnes Dokument generiert wird.
Für die Zwecke dieser Erörterung nehmen wir an, dass das folgende DDX-Dokument verwendet wird.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDFsFromBookmarks prefix="stmt">
<PDF source="AssemblerResultPDF.pdf"/>
</PDFsFromBookmarks>
</DDX>
Bevor Sie diesen Abschnitt lesen, sollten Sie mit dem Zusammenstellen von PDF-Dokumenten mithilfe des Assembler-Dienstes vertraut sein. (Siehe Programmgesteuertes Zusammenstellen von PDF-Dokumenten.)
Wenn Sie ein einzelnes PDF-Dokument an den Assembler-Service übergeben und ein einzelnes Dokument zurückerhalten, können Sie den Vorgang invokeOneDocument
aufrufen. Verwenden Sie jedoch zum Aufteilen eines PDF-Dokuments den Vorgang invokeDDX
, da zwar ein Eingabedokument an den Assembler-Service übergeben wird, der Assembler-Service jedoch ein Sammlungsobjekt zurückgibt, das ein oder mehrere PDF-Dokumente enthält.
Weitere Informationen über den 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.
Führen Sie zum Aufteilen eines 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 unterstützten J2EE-Programm-Server bereitgestellt wird, der nicht JBoss ist, müssen Sie „adobe-utilities.jar“ und „jbossall-client.jar“ durch JAR-Dateien ersetzen, die spezifisch für den J2EE-Programm-Server sind, auf dem AEM Forms bereitgestellt wird.
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
Um ein PDF-Dokument aufzuteilen, muss auf ein DDX-Dokument verwiesen werden. Dieses DDX-Dokument muss das Element PDFsFromBookmarks
enthalten.
Referenzieren eines aufzuteilenden PDF-Dokuments
Um ein PDF-Dokument zu zerlegen, verweisen Sie auf eine PDF-Datei, die das zu zerlegende PDF-Dokument darstellt. Wenn es an den Assembler-Service übergeben wird, wird für jedes Lesezeichen der Stufe 1 im Dokument ein separates PDF-Dokument zurückgegeben.
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-Dienst angewiesen wird, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt.
Aufteilen des PDF-Dokuments
Nachdem Sie den Assembler-Service-Client erstellt, das DDX-Dokument referenziert, ein aufzuteilendes PDF-Dokument referenziert und Laufzeitoptionen festgelegt haben, können Sie ein PDF-Dokument aufteilen, indem Sie die Methode invokeDDX
aufrufen. Sofern das DDX-Dokument Anweisungen zum Aufteilen des PDF-Dokuments enthält, gibt der Assembler-Service aufgeteilte PDF-Dokumente innerhalb eines Sammlungsobjekts zurück.
Speichern der aufgeteilten PDF-Dokumente
Alle zerlegten PDF-Dokumente werden in einem Sammlungsobjekt zurückgegeben. Durchlaufen Sie das Sammlungsobjekt und speichern Sie jedes PDF-Dokument als PDF-Datei.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmatisches Zusammenstellen von PDF-Dokumenten
So teilen Sie ein PDF-Dokument mithilfe der Assembler Service-API (Java) auf:
Schließen Sie Projektdateien ein.
Schließen Sie Client-JAR-Dateien wie adobe-assembler-client.jar in den Klassenpfad Ihres Java-Projekts ein.
Erstellen Sie einen PDF 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 zu zerlegendes PDF-Dokument.
Erstellen Sie ein java.util.Map
-Objekt, das zum Speichern von PDF-Eingabedokumenten verwendet wird, indem Sie einen HashMap
-Konstruktor verwenden.
Erstellen Sie ein java.io.FileInputStream
-Objekt, indem Sie dessen Konstruktor verwenden und den Speicherort des aufzuteilenden PDF-Dokuments übergeben.
Erstellen Sie ein com.adobe.idp.Document
-Objekt und übergeben Sie das java.io.FileInputStream
-Objekt, das das aufzuteilende PDF-Dokument enthält.
Fügen Sie einen Eintrag zum java.util.Map
-Objekt hinzu, indem Sie seine Methode put
aufrufen und die folgenden Argumente übergeben:
com.adobe.idp.Document
-Objekt, das das aufzuteilende PDF-Dokument enthält.Legen Sie Laufzeitoptionen fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen speichert, indem Sie seinen Konstruktor verwenden.AssemblerOptionSpec
-Objekt gehört. 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
.Zerlegen Sie das PDF-Dokument.
Rufen Sie die AssemblerServiceClient
-Objekt invokeDDX
-Methode verwenden und die folgenden erforderlichen Werte übergeben:
com.adobe.idp.Document
-Objekt, das das zu verwendende DDX-Dokument darstelltjava.util.Map
-Objekt, das das aufzuteilende PDF-Dokument enthältcom.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich der Standardschrift und der AuftragsprotokollebeneDie invokeDDX
-Methode gibt ein com.adobe.livecycle.assembler.client.AssemblerResult
-Objekt zurück, das die zerlegten PDF-Dokumente und alle aufgetretenen Ausnahmen enthält.
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die zerlegten PDF-Dokumente abzurufen:
AssemblerResult
-Objekt getDocuments
-Methode. Dadurch wird ein java.util.Map
-Objekt zurückgegeben.java.util.Map
-Objekt, bis Sie das resultierende com.adobe.idp.Document
-Objekt finden.com.adobe.idp.Document
-Objekt copyToFile
-Methode, um das PDF-Dokument zu extrahieren.Siehe auch
Programmgesteuerte Aufteilung von PDF-Dokumenten
Schnellstart (SOAP-Modus): Aufteilen eines PDF-Dokuments mithilfe der Java-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Aufteilen eines 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 beim Festlegen einer Service-Referenz die folgende WSDL-Definition verwenden: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.
Ersetzen localhost
durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
Erstellen Sie einen PDF Assembler-Client.
Erstellen Sie ein AssemblerServiceClient
-Objekt, indem Sie seinen standardmäßigen Konstruktor verwenden.
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 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 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
-Objekt, indem Sie seinen Konstruktor verwenden. Übergeben Sie einen Zeichenfolgenwert für den Dateispeicherort des DDX-Dokuments und den Modus, in dem die Datei geöffnet werden soll.System.IO.FileStream
-Objekts speichert. 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 verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
-Objekt, indem Sie seiner MTOM
-Eigenschaft den Inhalt des Byte-Arrays zuweisen.Referenzieren Sie ein zu zerlegendes PDF-Dokument.
BLOB
, indem Sie den Konstruktor verwenden. Das BLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. Dieses BLOB
-Objekt wird an invokeOneDocument
als Argument weitergegeben.System.IO.FileStream
-Objekt, indem Sie seinen Konstruktor aufrufen und einen Zeichenfolgewert übergeben, der den Dateispeicherort des PDF-Eingabedokuments und den Modus, in dem die Datei geöffnet werden soll, darstellt.System.IO.FileStream
-Objekts gespeichert wird. 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 verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
-Objekt, indem Sie seinem MTOM
-Feld die Inhalte des Byte-Arrays zuweisen.MyMapOf_xsd_string_To_xsd_anyType
-Objekts. Dieses Sammlungsobjekt wird verwendet, um das aufzuteilende PDF-Dokument zu speichern.MyMapOf_xsd_string_To_xsd_anyType_Item
.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.BLOB
-Objekt, in dem das PDF-Dokument gespeichert wird, dem value
-Feld des MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekts zu.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
.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-Dienst anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen Sie false
der AssemblerOptionSpec
-Objekt failOnError
-Feld.Zerlegen Sie das PDF-Dokument.
Rufen Sie die AssemblerServiceClient
-Objekt invokeDDX
-Methode verwenden und die folgenden Werte übergeben:
BLOB
-Objekt, welches das DDX-Dokument darstellt, das das PDF-Dokument zerlegtMyMapOf_xsd_string_To_xsd_anyType
-Objekt, welches das zu zerlegende PDF-Dokument enthältAssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibtDie invokeDDX
-Methode gibt ein AssemblerResult
-Objekt zurück, das die Auftragsergebnisse und alle aufgetretenen Ausnahmen enthält.
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die neu erstellten PDF-Dokumente abzurufen:
AssemblerResult
-Objekt documents
-Feld, das ein Map
-Objekt, das die zerlegten PDF-Dokumente enthält.Map
-Objekt, um alle Zieldokumente abzurufen. Dann das Array-Element value
zu BLOB
.BLOB
-Objekt MTOM
-Eigenschaft. Dadurch wird ein Array von Bytes zurückgegeben, die Sie in eine PDF-Datei schreiben können.Siehe auch
Programmgesteuerte Aufteilung von PDF-Dokumenten
AEM Forms mithilfe von MTOM aufrufen