Mithilfe der Bates-Nummerierung können Sie PDF-Dokumente mit eindeutigen Seitenkennungen zusammenstellen. Die Bates- Nummerierung ist eine Methode, um eindeutige Identifikatoren auf einen Stapel verwandter Dokumente anzuwenden. Jeder Seite im Dokument (oder einer Reihe von Dokumenten) wird eine Bates-Nummer zugewiesen, die die Seite eindeutig identifiziert. Beispielsweise Produktionsdokumente, die Materialaufstellungsinformationen enthalten und der Herstellung einer Baugruppe zugeordnet sind, können einen Bezeichner enthalten. Eine Bates-Nummer enthält einen sequenziell erhöhten numerischen Wert sowie ein optionales Präfix und Suffix. Das Suffix "Präfix + numerisch +"wird als Bates-Muster bezeichnet.
Die folgende Illustration zeigt ein PDF-Dokument, das einen eindeutigen Bezeichner enthält, der sich in der Kopfzeile des Dokuments befindet.
Im Rahmen dieser Diskussion wird die eindeutige Seitenkennung in der Kopfzeile eines Dokuments platziert. Angenommen, das folgende DDX-Dokument wird verwendet.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDF result="out.pdf">
<Header>
<Center>
<StyledText>
<p font-size="20pt"><BatesNumber/></p>
</StyledText>
</Center>
</Header>
<PDF source="map.pdf" />
<PDF source="directions.pdf" />
</PDF>
</DDX>
Dieses DDX-Dokument führt zwei PDF-Dokumente mit den Namen map.pdf und directions.pdf in einem PDF-Dokument zusammen. Das resultierende PDF-Dokument enthält eine Kopfzeile, die aus einer eindeutigen Seitenkennung besteht. Das Dokument in der obigen Abbildung zeigt beispielsweise 000016.
Bevor Sie diesen Abschnitt lesen, sollten Sie sich mit dem Zusammenstellen von PDF-Dokumenten mit dem Assembler-Dienst vertraut machen. In diesem Abschnitt werden die Konzepte nicht erläutert, z. B. das Erstellen eines Sammlungsobjekts, das Eingabeergebnisse enthält, oder das Extrahieren der Dokumente aus dem zurückgegebenen Sammlungsobjekt. (Siehe Programmgesteuertes Zusammenstellen von PDF-Dokumenten.)
Weitere Informationen zum Assembler-Dienst finden Sie unter Dienste-Referenz für AEM Forms.
Weitere Informationen zu einem DDX-Dokument finden Sie unter Assembler-Dienst und DDX-Referenz.
So assemblieren Sie ein PDF-Dokument mit einer eindeutigen Seitenkennung (Bates-Nummerierung):
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 Proxydateien einschließen.
Die folgenden JAR-Dateien müssen dem 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 durchführen können, müssen Sie einen Assembler-Dienstclient erstellen.
Ein vorhandenes DDX-Dokument referenzieren
Zum Zusammenführen eines PDF-Dokuments muss auf ein DDX-Dokument verwiesen werden. Betrachten Sie beispielsweise das DDX-Dokument, das in diesem Abschnitt eingeführt wurde. Um ein PDF-Dokument mit eindeutigen Seitenkennungen zusammenzustellen, muss das DDX-Dokument das Element BatesNumber
enthalten.
PDF-Dokumente zur Referenzeingabe
PDF-Eingabedokumente müssen referenziert werden, um ein PDF-Dokument zusammenzustellen. Beispielsweise müssen auf die Dokumente "map.pdf"und "richtungen.pdf"verwiesen werden, um diese PDF-Dokumente in einem einzigen PDF-Dokument zusammenzuführen.
Wert für die Anfangszahl der Bates festlegen
Sie können den Wert für die Bates-Anfangszahl so einstellen, dass er Ihren Geschäftsanforderungen entspricht. Angenommen, es ist eine Anforderung, den Ausgangswert auf 000100 festzulegen. Wenn Sie den Ausgangswert nicht festlegen, ist der Wert der ersten Seite 000000.
PDF-Eingabedateien zusammenstellen
Nachdem Sie den Assembler-Dienstclient erstellt haben, verweisen Sie auf das DDX-Dokument, das die Elementinformationen BatesNumber
enthält, verweisen auf ein PDF-Eingabedokument und legen Laufzeitoptionen fest. Sie können den Vorgang invokeDDX
aufrufen, der dazu führt, dass der Assembler-Dienst ein PDF-Dokument zusammenstellt, das eindeutige Seitenkennungen enthält.
Ergebnisse extrahieren
Der Assembler-Dienst gibt ein Collection-Objekt zurück, das die Auftragsergebnisse enthält. Sie können das resultierende PDF-Dokument und alle ausgelösten Ausnahmen extrahieren. In diesem Fall befindet sich ein verschlüsseltes PDF-Dokument im Collection-Objekt.
Ein Collection-Objekt wird zurückgegeben, wenn Sie den Vorgang invokeDDX
aufrufen. Dieser Vorgang wird verwendet, wenn zwei oder mehr PDF-Eingabedateien an den Assembler-Dienst übergeben werden. Wenn Sie jedoch nur ein PDF-Eingabedokument an den Assembler-Dienst übergeben, sollten Sie den Vorgang invokeOneDocument
aufrufen. Informationen zur Verwendung dieses Vorgangs finden Sie unter Zusammenstellen verschlüsselter PDF-Dokumente.
Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Programmgesteuertes Zusammenstellen von PDF-Dokumenten
Stellen Sie mithilfe der Assembler Service API (Java) ein PDF-Dokument zusammen, das eindeutige Seitenkennungen (Bates-Nummerierung) verwendet:
Schließen Sie Projektdateien ein.
Schließen Sie Client-JAR-Dateien wie "adobe-assembler-client.jar"im Klassenpfad Ihres Java-Projekts ein.
Erstellen Sie einen PDF Assembler-Client.
ServiceClientFactory
-" -Objekt, das Verbindungseigenschaften enthält.AssemblerServiceClient
-Objekt, indem Sie den Konstruktor verwenden und das ServiceClientFactory
-Objekt übergeben.Verweisen Sie auf ein vorhandenes DDX-Dokument.
java.io.FileInputStream
-Objekt, das das DDX-Dokument darstellt, indem Sie den 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 von PDF-Dokumenten zur Eingabe.
Erstellen Sie ein java.util.Map
-Objekt, das zum Speichern von PDF-Eingabedokumenten mit einem HashMap
-Konstruktor verwendet wird.
Erstellen Sie für jedes PDF-Eingabedokument ein java.io.FileInputStream
-Dokument, indem Sie den Konstruktor verwenden und die Position des PDF-Eingabedokuments übergeben. Übergeben Sie in diesem Fall den Speicherort eines ungesicherten PDF-Dokuments.
Erstellen Sie für jedes PDF-Eingabedokument ein com.adobe.idp.Document
-Objekt und übergeben Sie das java.io.FileInputStream
-Objekt, das das PDF-Dokument enthält.
hinzufügen Sie einen Eintrag für das java.util.Map
-Objekt, indem Sie die put
-Methode aufrufen und die folgenden Argumente übergeben:
com.adobe.idp.Document
-Objekt, das das ungeschützte PDF-Dokument enthält.Legen Sie den Wert für die Anfangszahl der Bates fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe des Konstruktors speichert.AssemblerOptionSpec
-Objekt setFirstBatesNumber
aufrufen und einen numerischen Wert übergeben, der den Ausgangswert angibt.Stellen Sie die PDF-Eingabedateien zusammen.
Rufen Sie die invokeDDX
-Methode des Objekts auf und übergeben Sie die folgenden erforderlichen Werte:AssemblerServiceClient
com.adobe.idp.Document
-Objekt, das das DDX-Dokument darstellt.java.util.Map
-Objekt, das die nicht gesicherte PDF-Eingabedatei enthält.com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-Objekt, das die Laufzeitoptionen einschließlich der standardmäßigen Schriftart- und Auftragsprotokollebene angibt.Die invokeDDX
-Methode gibt ein com.adobe.livecycle.assembler.client.AssemblerResult
-Objekt zurück, das ein kennwortverschlüsseltes PDF-Dokument enthält.
Extrahieren Sie die Ergebnisse.
So rufen Sie das neu erstellte PDF-Dokument ab:
AssemblerResult
-Methode des Objekts getDocuments
auf. Diese Aktion gibt ein java.util.Map
-Objekt zurück.java.util.Map
-Objekt, bis Sie das com.adobe.idp.Document
-Objekt gefunden haben.com.adobe.idp.Document
-Objektmethode copyToFile
auf, um das PDF-Dokument zu extrahieren.Siehe auch
Einbeziehung von AEM Forms Java-Bibliotheksdateien
Verbindungseigenschaften festlegen
Stellen Sie mithilfe der Assembler Service API (Webdienst) ein PDF-Dokument zusammen, das eindeutige Seitenkennungen (Bates-Nummerierung) verwendet:
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
.
Ersetzen Sie localhost
durch die IP-Adresse des Servers, auf dem AEM Forms gehostet wird.
Erstellen Sie einen PDF Assembler-Client.
Erstellen Sie ein AssemblerServiceClient
-Objekt mit dem Standardkonstruktor.
Erstellen Sie ein AssemblerServiceClient.Endpoint.Address
-Objekt mit dem Konstruktor System.ServiceModel.EndpointAddress
. Übergeben Sie einen Zeichenfolgenwert, der den WSDL-Wert an den AEM Forms-Dienst angibt (z. B. http://localhost:8080/soap/services/AssemblerService?blob=mtom
). Sie müssen das Attribut lc_version
nicht verwenden. Dieses Attribut wird verwendet, wenn Sie eine Dienstreferenz erstellen.
Erstellen Sie ein System.ServiceModel.BasicHttpBinding
-Objekt, indem Sie den Wert des Felds AssemblerServiceClient.Endpoint.Binding
abrufen. Wandeln Sie den Rückgabewert in BasicHttpBinding
um.
Setzen Sie das Feld System.ServiceModel.BasicHttpBinding
des Objekts auf MessageEncoding
. 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
den AEM Forms-Benutzernamen zu.AssemblerServiceClient.ClientCredentials.UserName.Password
den entsprechenden Kennwortwert zu.BasicHttpBindingSecurity.Transport.ClientCredentialType
den Konstantenwert HttpClientCredentialType.Basic
zu.BasicHttpBindingSecurity.Security.Mode
den Konstantenwert BasicHttpSecurityMode.TransportCredentialOnly
zu.Verweisen Sie auf 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 den Konstruktor aufrufen und einen Zeichenfolgenwert übergeben, der den Dateispeicherort des DDX-Dokuments und den Modus zum Öffnen der Datei darstellt.System.IO.FileStream
speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die System.IO.FileStream
-Eigenschaft des Objekts Length
abrufen.System.IO.FileStream
-Methode des Objekts Read
aufrufen. Übergeben Sie das Bytearray, die Startposition und die zu lesende Stream-Länge.BLOB
-Objekt, indem Sie dessen MTOM
-Feld mit dem Inhalt des Byte-Arrays zuweisen.Referenzieren von PDF-Dokumenten zur Eingabe.
BLOB
-Dokument mit dessen Konstruktor. Das BLOB
-Objekt wird zum Speichern des PDF-Eingabedokuments verwendet.System.IO.FileStream
-Objekt, indem Sie den Konstruktor aufrufen. Übergeben Sie einen Zeichenfolgenwert, der den Dateispeicherort des PDF-Eingabedokuments und den Dateimodus darstellt, in dem die Datei geöffnet werden soll.System.IO.FileStream
speichert. Sie können die Größe des Byte-Arrays bestimmen, indem Sie die System.IO.FileStream
-Eigenschaft des Objekts Length
abrufen.System.IO.FileStream
-Methode des Objekts Read
aufrufen. Übergeben Sie das Bytearray, die Startposition und die zu lesende Stream-Länge.BLOB
-Objekt, indem Sie seine MTOM
-Eigenschaft mit dem Inhalt des Byte-Arrays zuweisen.MyMapOf_xsd_string_To_xsd_anyType
-Objekt. Dieses Collection-Objekt wird zum Speichern der PDF-Eingabedokumente verwendet.MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt. Wenn beispielsweise zwei PDF-Eingabedokumente verwendet werden, erstellen Sie zwei MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekte.MyMapOf_xsd_string_To_xsd_anyType_Item
des Objekts einen Zeichenfolgenwert zu, der den Schlüsselnamen darstellt. key
Dieser Wert muss mit dem Wert des im DDX-Dokument angegebenen PDF-Quellelements übereinstimmen. (Führen Sie diese Aufgabe für jedes PDF-Eingabedokument aus.)BLOB
-Objekt, in dem das PDF-Dokument gespeichert wird, dem MyMapOf_xsd_string_To_xsd_anyType_Item
-Objektfeld value
zu. (Führen Sie diese Aufgabe für jedes PDF-Eingabedokument aus.)MyMapOf_xsd_string_To_xsd_anyType_Item
-Objekt mit dem MyMapOf_xsd_string_To_xsd_anyType
-Objekt. Rufen Sie die MyMapOf_xsd_string_To_xsd_anyType
-Methode des Objekts Add
auf und übergeben Sie das MyMapOf_xsd_string_To_xsd_anyType
-Objekt. (Führen Sie diese Aufgabe für jedes PDF-Eingabedokument aus.)Legen Sie den Wert für die Anfangszahl der Bates fest.
AssemblerOptionSpec
-Objekt, das Laufzeitoptionen mithilfe des Konstruktors speichert.firstBatesNumber
-Datenelement, das zum AssemblerOptionSpec
-Objekt gehört, einen numerischen Wert zuweisen.Stellen Sie die PDF-Eingabedateien zusammen.
Rufen Sie die invoke
-Methode des Objekts auf und übergeben Sie die folgenden Werte:AssemblerServiceClient
BLOB
-Objekt, das das DDX-Dokument darstellt.MyMapOf_xsd_string_To_xsd_anyType
-Objekt, das die PDF-Eingabedateien enthält. Seine Schlüssel müssen mit den Namen der PDF-Quelldateien übereinstimmen, und seine Werte müssen die BLOB
-Objekte sein, die diesen Dateien entsprechen.AssemblerOptionSpec
-Objekt, das Laufzeitoptionen angibt.Die invoke
-Methode gibt ein AssemblerResult
-Objekt zurück, das die Ergebnisse des Auftrags und alle aufgetretenen Ausnahmen enthält.
Extrahieren Sie die Ergebnisse.
So rufen Sie das neu erstellte PDF-Dokument ab:
AssemblerResult
des Objekts zu, bei dem es sich um ein Map
-Objekt handelt, das die PDF-Dokumente des Ergebnisses enthält.documents
Map
-Objekt, bis Sie den Schlüssel finden, der dem Namen des resultierenden Dokuments entspricht. Dann wird value
des Array-Mitglieds in ein BLOB
umgewandelt.BLOB
-Eigenschaft des Objekts MTOM
zugreifen. Dadurch wird ein Bytearray zurückgegeben, das Sie in eine PDF-Datei schreiben können.Siehe auch
Aufrufen von AEM Forms mit MTOM