Programmgesteuerte Aufteilung von PDF-Dokumenten programmatically-disassembling-pdf-documents
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>
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.Zusammenfassung der Schritte summary-of-steps
Führen Sie zum Aufteilen eines 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 zu zerlegendes PDF-Dokument.
- Legen Sie Laufzeitoptionen fest.
- Zerlegen Sie das PDF-Dokument.
- Speichern Sie die zerlegten PDF-Dokumente.
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:
- 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-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
Aufteilen eines PDF-Dokuments mithilfe der Java-API disassemble-a-pdf-document-using-the-java-api
So teilen Sie ein PDF-Dokument mithilfe der Assembler Service-API (Java) auf:
-
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 PDF 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 zu zerlegendes PDF-Dokument.
-
Erstellen Sie ein
java.util.Map-Objekt, das zum Speichern von PDF-Eingabedokumenten verwendet wird, indem Sie einenHashMap-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 dasjava.io.FileInputStream-Objekt, das das aufzuteilende PDF-Dokument enthält. -
Fügen Sie einen Eintrag zum
java.util.Map-Objekt hinzu, indem Sie seine Methodeputaufrufen und die folgenden Argumente übergeben:- Eine Zeichenfolge, die den Speichernamen repräsentiert. Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen PDF-Quellelements übereinstimmen.
- Ein
com.adobe.idp.Document-Objekt, das das aufzuteilende PDF-Dokument enthält.
-
-
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 MethodesetFailOnErrordesAssemblerOptionSpec-Objekts auf und übergebenfalse.
- Erstellen Sie ein
-
Zerlegen Sie das PDF-Dokument.
Rufen Sie die Methode
invokeDDXdesAssemblerServiceClient-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 das aufzuteilende PDF-Dokument enthält - Ein
com.adobe.livecycle.assembler.client.AssemblerOptionSpec-Objekt, das die Laufzeitoptionen angibt, einschließlich der Standardschrift und der Auftragsprotokollebene
Die
invokeDDX-Methode gibt eincom.adobe.livecycle.assembler.client.AssemblerResult-Objekt zurück, das die zerlegten PDF-Dokumente und alle aufgetretenen Ausnahmen enthält. - Ein
-
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die zerlegten PDF-Dokumente abzurufen:
- Rufen Sie die Methode
getDocumentsdesAssemblerResult-Objekts auf. Dadurch wird einjava.util.Map-Objekt zurückgegeben. - Iterieren Sie durch das
java.util.Map-Objekt, bis Sie das resultierendecom.adobe.idp.Document-Objekt finden. - Rufen Sie die
copyToFile-Methode descom.adobe.idp.Document-Objekts auf, um das PDF-Dokument zu extrahieren.
- Rufen Sie die Methode
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 Webdienst-API disassemble-a-pdf-document-using-the-web-service-api
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.note note NOTE Ersetzen localhostdurch 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 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.Bindingabrufen. Wandeln Sie den Rückgabewert inBasicHttpBindingum. -
Legen Sie das
MessageEncoding-Feld desSystem.ServiceModel.BasicHttpBinding-Objekts aufWSMessageEncoding.Mtomfest. 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.UserNameden AEM Forms-Benutzernamen zu. - Weisen Sie dem Feld
AssemblerServiceClient.ClientCredentials.UserName.Passwordden entsprechenden Passwortwert zu. - Weisen Sie dem Feld
BasicHttpBindingSecurity.Transport.ClientCredentialTypeden konstanten WertHttpClientCredentialType.Basiczu. - Weisen Sie dem Feld
BasicHttpBindingSecurity.Security.Modeden KonstantenwertBasicHttpSecurityMode.TransportCredentialOnlyzu.
- 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
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. - 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 dieLength-Eigenschaft desSystem.IO.FileStream-Objekts abrufen. - Füllen Sie das Byte-Array mit Stream-Daten, indem Sie die
Read-Methode desSystem.IO.FileStream-Objekts aufrufen und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben. - Füllen Sie das
BLOB-Objekt, indem Sie seinerMTOM-Eigenschaft den Inhalt des Byte-Arrays zuweisen.
- Erstellen Sie ein Objekt
-
Referenzieren Sie ein zu zerlegendes PDF-Dokument.
- Erstellen Sie ein Objekt
BLOB, indem Sie den Konstruktor verwenden. DasBLOB-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet. DiesesBLOB-Objekt wird aninvokeOneDocumentals Argument weitergegeben. - Erstellen Sie ein
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. - 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 dieLength-Eigenschaft desSystem.IO.FileStream-Objekts abrufen. - Füllen Sie das Byte-Array mit Stream-Daten, indem Sie die
Read-Methode desSystem.IO.FileStream-Objekts verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben. - Füllen Sie das
BLOB-Objekt, indem Sie seinemMTOM-Feld die Inhalte des Byte-Arrays zuweisen. - Erstellen eines
MyMapOf_xsd_string_To_xsd_anyType-Objekts. Dieses Sammlungsobjekt wird verwendet, um das aufzuteilende PDF-Dokument zu speichern. - Erstellen eines
MyMapOf_xsd_string_To_xsd_anyType_Item-Objekts. - Weisen Sie dem
key-Feld desMyMapOf_xsd_string_To_xsd_anyType_Item-Objekts einen Zeichenfolgewert zu, der den Schlüsselnamen darstellt. Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen PDF-Quellelements übereinstimmen. - Weisen Sie das
BLOB-Objekt, welches das PDF-Dokument speichert, demvalue-Feld desMyMapOf_xsd_string_To_xsd_anyType_Item-Objekts zu. - Fügen Sie das
MyMapOf_xsd_string_To_xsd_anyType_Item-Objekt demMyMapOf_xsd_string_To_xsd_anyType-Objekt hinzu. Rufen Sie dieMyMapOf_xsd_string_To_xsd_anyTypeObjektAdd-Methode auf und übergeben Sie dasMyMapOf_xsd_string_To_xsd_anyType-Objekt.
- 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 einen Wert zuweisen, der zum
AssemblerOptionSpec-Objekt gehört. Um beispielsweise den Assembler-Service anzuweisen, die Verarbeitung eines Auftrags fortzusetzen, wenn ein Fehler auftritt, weisen SiefalsedemfailOnError-Feld desAssemblerOptionSpec-Objekts zu.
- Erstellen Sie ein
-
Zerlegen Sie das PDF-Dokument.
Rufen Sie die
invokeDDX-Methode desAssemblerServiceClient-Objekts auf und übergeben Sie die folgenden Werte:- Ein
BLOB-Objekt, welches das DDX-Dokument darstellt, das das PDF-Dokument zerlegt - Das
MyMapOf_xsd_string_To_xsd_anyType-Objekt, welches das zu zerlegende PDF-Dokument enthält - Ein
AssemblerOptionSpec-Objekt, das Laufzeitoptionen angibt
Die
invokeDDX-Methode gibt einAssemblerResult-Objekt zurück, das die Auftragsergebnisse und alle aufgetretenen Ausnahmen enthält. - Ein
-
Speichern Sie die zerlegten PDF-Dokumente.
Führen Sie die folgenden Schritte aus, um die neu erstellten PDF-Dokumente abzurufen:
- Greifen Sie auf das
documents-Feld desAssemblerResult-Objekts zu. Dies ist einMap-Objekt, das die zerlegten PDF-Dokumente enthält. - Iterieren Sie durch das
Map-Objekt, um alle Zieldokumente abzurufen. Wandeln Sie dannvalueder Array-Elemente inBLOBum. - Extrahieren Sie die Binärdaten, die das PDF-Dokument darstellen, indem Sie auf die
MTOM-Eigenschaft von dessenBLOB-Objekt zugreifen. Dadurch wird ein Array von Bytes zurückgegeben, die Sie in eine PDF-Datei schreiben können.
- Greifen Sie auf das
Siehe auch
Programmgesteuerte Aufteilung von PDF-Dokumenten
AEM Forms mithilfe von MTOM aufrufen