Sie können ein PDF-Dokument zusammenstellen, das Lesezeichen enthält. Angenommen, Sie verfügen über ein PDF-Dokument, das keine Lesezeichen enthält, und Sie möchten es ändern, indem Sie Lesezeichen angeben. Mithilfe des Assembler-Dienstes können Sie ein PDF-Dokument übergeben, das keine Lesezeichen enthält, und ein PDF-Dokument mit Lesezeichen zurückerhalten.
Lesezeichen enthalten die folgenden Eigenschaften:
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="FinalDoc.pdf">
<PDF source="Loan.pdf">
<Bookmarks source="doc2" />
</PDF>
</PDF>
</DDX>
Beachten Sie in diesem DDX-Dokument, dass dem Quellattribut der Wert zugewiesen ist. Loan.pdf
. Dieses DDX-Dokument gibt an, dass ein einzelnes PDF-Dokument an den Assembler-Dienst übergeben wird. Beim Zusammenstellen eines PDF-Dokuments mit Lesezeichen müssen Sie ein XML-Lesezeichen-Dokument angeben, das die Lesezeichen im Ergebnisdokument beschreibt. Um ein XML-Dokument mit Lesezeichen anzugeben, stellen Sie sicher, dass die Bookmarks
-Element wird in Ihrem DDX-Dokument angegeben.
In diesem DDX-Beispieldokument wird die Bookmarks
Element gibt an doc2
als Wert. Dieser Wert gibt an, dass die an den Assembler-Dienst übergebene Eingabezuordnung einen Schlüssel mit dem Namen doc2
. Der Wert der doc2
Schlüssel: com.adobe.idp.Document
-Wert, der das XML-Lesezeichen-Dokument darstellt. (Siehe "Lesezeichensprache"im Assembler-Dienst und DDX-Referenz.
Hier wird die folgende XML-Lesezeichensprache verwendet, um ein PDF-Dokument mit Lesezeichen zusammenzustellen.
<?xml version="1.0" encoding="UTF-8"?>
<Bookmarks xmlns="https://ns.adobe.com/pdf/bookmarks" version="1.0">
<Bookmark>
<Action>
<Launch NewWindow="true">
<File Name="C:\Adobe\LoanDetails.pdf" />
</Launch>
</Action>
<Title>Open the Loan document</Title>
</Bookmark>
<Bookmark>
<Action>
<Launch>
<Win Name="C:\WINDOWS\notepad.exe" />
</Launch>
</Action>
<Title>Launch NotePad</Title>
</Bookmark>
</Bookmarks>
Beachten Sie in diesem XML-Lesezeichen-Dokument das Aktionselement , das die Aktion definiert, die ausgeführt wird, wenn ein Benutzer auf das Lesezeichen klickt. Unter dem Element Aktion befindet sich das Launch-Element, das Anwendungen wie NotePad startet und Dateien wie PDF-Dateien öffnet. Um eine PDF-Datei zu öffnen, müssen Sie das Dateielement verwenden, das die zu öffnende Datei angibt. In der in diesem Abschnitt angegebenen XML-Datei für Lesezeichen lautet der Name der geöffneten Datei beispielsweise LoanDetails.pdf.
Umfassende Informationen zu unterstützten Aktionen finden Sie unter Action
Element"im Assembler-Dienst und DDX-Referenz.
Wenn das in diesem Abschnitt angegebene DDX-Dokument und die XML-Lesezeichen-Datei als Eingabe angegeben werden, stellt der Assembler-Dienst ein PDF-Dokument zusammen, das die folgenden Lesezeichen enthält.
Wenn ein Benutzer auf die Öffnen Sie die Darlehensdetails Lesezeichen, wird die Datei LoanDetails.pdf geöffnet. Wenn der Benutzer auf die Launch-HinweisPad Lesezeichen, HinweisPad wird gestartet.
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 die folgenden Schritte aus, um ein PDF-Dokument mit Lesezeichen zusammenzuführen:
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. Informationen zum Speicherort aller AEM Forms-JAR-Dateien finden Sie unter Einschließen von AEM Forms-Java-Bibliotheksdateien.
PDF Assembler-Client erstellen
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: Bookmarks
-Element, das den Assembler-Dienst anweist, eine PDF mit Lesezeichen zusammenzustellen. (Ein Beispiel finden Sie im zuvor in diesem Abschnitt gezeigten DDX-Dokument.)
Referenzieren eines PDF-Dokuments, dem Lesezeichen hinzugefügt werden
Referenzieren Sie ein PDF-Dokument, dem Lesezeichen hinzugefügt werden. Es spielt keine Rolle, ob das referenzierte PDF-Dokument bereits Lesezeichen enthält. Wenn die Variable Bookmarks
-Element ein untergeordnetes Element des PDF-Quellelements ist, ersetzen die Lesezeichen die bereits in der PDF-Quelle vorhandenen. Wenn Sie jedoch die vorhandenen Lesezeichen beibehalten möchten, stellen Sie sicher, dass Bookmarks
ist ein gleichrangiges Element des PDF-Quellelements. Betrachten Sie beispielsweise das folgende Beispiel:
<PDF result="foo">
<PDF source="inDoc"/>
<Bookmarks source="doc2"/>
</PDF>
Referenzieren des XML-Lesezeichen-Dokuments
Um eine PDF mit neuen Lesezeichen zusammenzustellen, müssen Sie auf ein XML-Lesezeichen verweisen. Das XML-Lesezeichen-Dokument wird an den Assembler-Dienst innerhalb des Map-Sammlungsobjekts übergeben. (Ein Beispiel finden Sie im zuvor in diesem Abschnitt gezeigten XML-Dokument für Lesezeichen .)
Siehe "Lesezeichensprache"im Assembler-Dienst und DDX-Referenz.
Hinzufügen des PDF-Dokuments und des Lesezeichen-XML-Dokuments zu einer Zuordnungssammlung
Sie müssen sowohl das PDF-Dokument, dem Lesezeichen hinzugefügt werden, als auch das Lesezeichen-XML-Dokument zur Map-Sammlung hinzufügen. Daher enthält das Collection-Objekt Zuordnung zwei Elemente: ein PDF-Dokument und das XML-Lesezeichen-Dokument.
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. Informationen zu den Laufzeitoptionen, die Sie festlegen können, finden Sie unter AssemblerOptionSpec
Klassenreferenz in AEM Forms API-Referenz.
Zusammenführen des PDF-Dokuments
Verwenden Sie zum Zusammenführen eines PDF-Dokuments mit neuen Lesezeichen den Assembler-Dienst invokeDDX
Vorgang. Der Grund, warum Sie die invokeDDX
im Gegensatz zu anderen Assembler-Dienstvorgängen wie invokeOneDocument
ist, weil der Assembler-Dienst ein XML-Lesezeichen-Dokument benötigt, das innerhalb des Map-Sammlungsobjekts übergeben wird. Dieses Objekt ist ein Parameter der invokeDDX
Vorgang.
PDF-Dokument mit Lesezeichen speichern
Sie müssen die Ergebnisse aus dem zurückgegebenen map -Objekt extrahieren und das entsprechende PDF-Dokument speichern. (Siehe "Ergebnisse extrahieren"in Programmgesteuertes Zusammenstellen von PDF-Dokumenten.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmgesteuertes Zusammenstellen von PDF-Dokumenten
Assemblieren eines PDF-Dokuments mit Lesezeichen 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 PDF Assembler-Client.
ServiceClientFactory
-" -Objekt, das Verbindungseigenschaften enthält. (Siehe Einstellung von Verbindungseigenschaften.)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 PDF-Dokument, dem Lesezeichen hinzugefügt werden.
java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort des PDF-Dokuments übergeben.com.adobe.idp.Document
-Objekt mithilfe des -Konstruktors und Übergeben der java.io.FileInputStream
-Objekt, das das PDF-Dokument enthält.Referenzieren Sie das XML-Dokument für Lesezeichen.
java.io.FileInputStream
-Objekt, indem Sie seinen Konstruktor verwenden und den Speicherort der XML-Datei übergeben, die das XML-Lesezeichen-Dokument darstellt.com.adobe.idp.Document
-Objekt und übergeben Sie die java.io.FileInputStream
-Objekt, das das PDF-Dokument enthält.Fügen Sie das PDF-Dokument und das Lesezeichen-XML-Dokument zu einer Map-Sammlung hinzu.
Erstellen Sie eine java.util.Map
-Objekt, das zum Speichern sowohl des PDF-Eingabedokuments als auch des XML-Lesezeichensatzdokuments verwendet wird.
Fügen Sie das PDF-Eingabedokument hinzu, indem Sie die java.util.Map
-Objekt put
-Methode verwenden und die folgenden Argumente übergeben:
com.adobe.idp.Document
-Objekt, das das PDF-Eingabedokument enthält.Fügen Sie das XML-Lesezeichen-Dokument hinzu, indem Sie die java.util.Map
-Objekt put
-Methode verwenden und die folgenden Argumente übergeben:
com.adobe.idp.Document
-Objekt, das das XML-Lesezeichen-Dokument enthält.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 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 sowohl das Eingabedokument als auch das XML-PDF-Lesezeichen enthält.com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen angibt, einschließlich standardmäßiger Schrift- und AuftragsprotokollebeneDie invokeDDX
-Methode gibt eine com.adobe.livecycle.assembler.client.AssemblerResult
-Objekt, das die Ergebnisse des Auftrags sowie alle aufgetretenen Ausnahmen enthält.
Speichern Sie das PDF-Dokument mit Lesezeichen.
Führen Sie die folgenden Schritte aus, um das neu erstellte PDF-Dokument abzurufen:
AssemblerResult
-Objekt getDocuments
-Methode. Dadurch wird eine java.util.Map
-Objekt.java.util.Map
-Objekt, bis Sie das Ergebnis finden com.adobe.idp.Document
-Objekt. (Sie können das im DDX-Dokument angegebene PDF-Ergebniselement verwenden, um das Dokument abzurufen.)com.adobe.idp.Document
-Objekt copyToFile
-Methode, um das PDF-Dokument zu extrahieren.Siehe auch
Schnellstart (SOAP-Modus): Assemblieren von PDF-Dokumenten mit Lesezeichen mithilfe der Java-API
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Assemblieren eines PDF-Dokuments mit Lesezeichen 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 PDF 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 darstellt, in dem die Datei geöffnet werden soll.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 verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
Objekt durch Zuweisen seiner MTOM
-Feld mit dem Inhalt des Byte-Arrays.Referenzieren Sie ein PDF-Dokument, dem Lesezeichen hinzugefügt werden.
BLOB
, indem Sie den Konstruktor verwenden. Die BLOB
-Objekt wird zum Speichern der Eingabe-PDF verwendet.System.IO.FileStream
-Objekt durch Aufrufen des Konstruktors und Übergeben eines Zeichenfolgenwerts, der den Dateispeicherort des Eingabedokuments und den PDF-Modus darstellt, in dem die Datei geöffnet werden soll.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 verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
Objekt durch Zuweisen seiner MTOM
-Feld mit dem Inhalt des Byte-Arrays.Referenzieren Sie das XML-Dokument für Lesezeichen.
BLOB
, indem Sie den Konstruktor verwenden. Die BLOB
-Objekt wird zum Speichern des XML-Lesezeichen-Dokuments verwendet.System.IO.FileStream
-Objekt durch Aufrufen des Konstruktors und Übergeben eines Zeichenfolgenwerts, der den Dateispeicherort des Eingabedokuments und den PDF-Modus darstellt, in dem die Datei geöffnet werden soll.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 verwenden und das Byte-Array, die Startposition und die zu lesende Stream-Länge übergeben.BLOB
Objekt durch Zuweisen seiner MTOM
-Feld mit dem Inhalt des Byte-Arrays.Fügen Sie das PDF-Dokument und das Lesezeichen-XML-Dokument zu einer Map-Sammlung hinzu.
MyMapOf_xsd_string_To_xsd_anyType
-Objekt. Dieses Kollektionsobjekt wird zum Speichern der PDF-Eingabedokumente und des XML-Lesezeichensatzdokuments verwendet.MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt.MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt key
-Feld. Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen PDF-Quellelements übereinstimmen.BLOB
-Objekt, das das PDF-Dokument im MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt value
-Feld.MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt MyMapOf_xsd_string_To_xsd_anyType
-Objekt. Rufen Sie die MyMapOf_xsd_string_To_xsd_anyType
-Objekt Add
-Methode und übergeben Sie die MyMapOf_xsd_string_To_xsd_anyType
-Objekt. (Führen Sie diese Aufgabe für jedes Eingabedokument und das XML-Lesezeichen-PDF-Dokument aus.)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 invokeDDX
-Methode verwenden und die folgenden Werte übergeben:
BLOB
-Objekt, das das DDX-Dokument darstelltMyMapOf_xsd_string_To_xsd_anyType
Array, das die Eingabedokumente enthältAssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibtDie invokeDDX
-Methode gibt eine AssemblerResult
-Objekt, das die Ergebnisse des Auftrags und eventuell aufgetretene Ausnahmen enthält.
Speichern Sie das PDF-Dokument mit Lesezeichen.
Führen Sie die folgenden Schritte aus, um das neu erstellte PDF-Dokument abzurufen:
AssemblerResult
-Objekt documents
-Feld, das ein Map
-Objekt, das die PDF-Ergebnisdokumente enthält.Map
-Objekt ein, bis Sie den Schlüssel finden, der dem Namen des Zieldokuments entspricht. Dann die value
zu BLOB
.BLOB
-Objekt MTOM
-Feld. Dadurch wird ein Array von Bytes zurückgegeben, die Sie in eine PDF-Datei schreiben können.Siehe auch
AEM Forms mithilfe von MTOM aufrufen