Sammanställa PDF-dokument med bokmärken assembling-pdf-documents-with-bookmarks
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Du kan montera ett PDF-dokument som innehåller bokmärken. Anta till exempel att du har ett PDF-dokument som inte innehåller bokmärken och du vill ändra det genom att ange bokmärken. Med Assembler-tjänsten kan du skicka ett PDF-dokument som inte innehåller bokmärken och få tillbaka ett PDF-dokument som innehåller bokmärken.
Bokmärken innehåller följande egenskaper:
- En titel som visas som text på skärmen.
- En åtgärd som anger vad som händer när en användare klickar på bokmärket. En vanlig åtgärd för ett bokmärke är att flytta till en annan plats i det aktuella dokumentet eller öppna ett annat PDF-dokument, men andra åtgärder kan anges.
Anta att följande DDX-dokument används för den här diskussionen.
<?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>
Observera att källattributet är tilldelat värdet Loan.pdf
i det här DDX-dokumentet. Det här DDX-dokumentet anger att ett enda PDF-dokument skickas till Assembler-tjänsten. När du sammanställer ett PDF-dokument med bokmärken måste du ange ett XML-dokument för bokmärken som beskriver bokmärkena i resultatdokumentet. Om du vill ange ett XML-dokument för bokmärken kontrollerar du att elementet Bookmarks
har angetts i ditt DDX-dokument.
I det här exemplet på DDX-dokument anger elementet Bookmarks
doc2
som värde. Det här värdet anger att indatamappningen som skickades till Assembler-tjänsten innehåller en nyckel med namnet doc2
. Värdet för nyckeln doc2
är ett com.adobe.idp.Document
-värde som representerar XML-bokmärkesdokumentet. (Se"Bokmärkesspråk" i Assembler Service och DDX Reference.)
I det här avsnittet används följande språk för XML-bokmärken för att sätta ihop ett PDF-dokument som innehåller bokmärken.
<?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>
Lägg märke till det Action-element som definierar åtgärden som utförs när en användare klickar på bokmärket i det här XML-bokmärkesdokumentet. Under elementet Action (Åtgärd) är det Launch-element som startar program, till exempel NotePad, och öppnar filer, till exempel PDF-filer. Om du vill öppna en PDF-fil måste du använda det File-element som anger vilken fil som ska öppnas. I t.ex. den XML-fil för bokmärke som anges i det här avsnittet heter filen som öppnas LoanDetails.pdf.
Action
-elementet i Assembler Service och DDX Reference.Med tanke på det DDX-dokument som anges i det här avsnittet och XML-filen för bokmärken som indata, sammanställer Assembler-tjänsten ett PDF-dokument som innehåller följande bokmärken.
När en användare klickar på bokmärket Öppna låneinformationen öppnas filen LoanDetails.pdf. På samma sätt startas NotePad när användaren klickar på bokmärket Launch NotePad.
Sammanfattning av steg summary-of-steps
Gör så här om du vill sätta ihop ett PDF-dokument som innehåller bokmärken:
- Inkludera projektfiler.
- Skapa en PDF Assembler-klient.
- Referera till ett befintligt DDX-dokument.
- Referera till ett PDF-dokument som bokmärken läggs till i.
- Referera till XML-dokumentet för bokmärket.
- Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling.
- Ange körningsalternativ.
- Sammanställ dokumentet PDF.
- Spara det PDF-dokument som innehåller bokmärken.
Inkludera projektfiler
Inkludera nödvändiga filer i utvecklingsprojektet. Om du skapar ett klientprogram med Java, inkluderar du de JAR-filer som behövs. Om du använder webbtjänster måste du inkludera proxyfilerna.
Följande JAR-filer måste läggas till i projektets klasssökväg:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utilities.jar (krävs om AEM Forms används i JBoss)
- jbossall-client.jar (krävs om AEM Forms används i JBoss)
Om AEM Forms körs på en annan J2EE-programserver än JBoss måste du ersätta filerna adobe-utilities.jar och jbossall-client.jar med JAR-filer som är specifika för J2EE-programservern som AEM Forms är distribuerad på. Mer information om platsen för alla AEM Forms JAR-filer finns i Inkludera AEM Forms Java-biblioteksfiler.
Skapa en PDF Assembler-klient
Innan du programmässigt kan utföra en Assembler-åtgärd måste du skapa en Assembler-tjänstklient.
Referera till ett befintligt DDX-dokument
Ett DDX-dokument måste refereras till för att du ska kunna montera ett PDF-dokument. Det här DDX-dokumentet måste innehålla elementet Bookmarks
, som instruerar Assembler-tjänsten att sätta ihop ett PDF som innehåller bokmärken. (Se DDX-dokumentet som visades tidigare i det här avsnittet för ett exempel.)
Referera till ett PDF-dokument som bokmärken läggs till i
Referera till ett PDF-dokument som bokmärken läggs till i. Det spelar ingen roll om det refererade PDF-dokumentet redan innehåller bokmärken. Om Bookmarks
-elementet är underordnat källelementet PDF ersätter bokmärkena dem som redan finns i PDF-källan. Om du vill behålla de befintliga bokmärkena måste du se till att Bookmarks
är en jämställd version av källelementet i PDF. Ta till exempel följande exempel:
<PDF result="foo">
<PDF source="inDoc"/>
<Bookmarks source="doc2"/>
</PDF>
Referera till XML-dokument för bokmärke
Om du vill montera ett PDF som innehåller nya bokmärken måste du referera till ett XML-bokmärkesdokument. Bokmärkets XML-dokument skickas till Assembler-tjänsten i samlingsobjektet för kartor. (Se ett exempel i det XML-dokument för bokmärken som visades tidigare i det här avsnittet.)
Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling
Lägg till både PDF-dokumentet som bokmärken läggs till i och bokmärkets XML-dokument i samlingen Karta. Samlingsobjektet Map innehåller därför två element: ett PDF-dokument och ett bokmärkes-XML-dokument.
Ange körningsalternativ
Du kan ställa in körningsalternativ som styr beteendet för Assembler-tjänsten när den utför ett jobb. Du kan till exempel ange ett alternativ som instruerar Assembler-tjänsten att fortsätta bearbeta ett jobb om ett fel uppstår. Mer information om de körningsalternativ du kan ange finns i klassreferensen AssemblerOptionSpec
i AEM Forms API Reference.
Sammanställ PDF-dokumentet
Om du vill montera ett PDF-dokument som innehåller nya bokmärken använder du Assembler-tjänstens invokeDDX
-åtgärd. Orsaken till att du måste använda åtgärden invokeDDX
i motsats till andra Assembler-åtgärder som invokeOneDocument
är att Assembler-tjänsten kräver ett XML-bokmärkesdokument som skickas inom samlingsobjektet för kartan. Det här objektet är en parameter för åtgärden invokeDDX
.
Spara PDF-dokumentet som innehåller bokmärken
Extrahera resultaten från det returnerade mappningsobjektet och spara motsvarande PDF-dokument. (Se "Extrahera resultaten" i Programmatiskt sammansättning av PDF-dokument.)
Se även
Sammanställa PDF-dokument med bokmärken med Java API assemble-pdf-documents-with-bookmarks-using-the-java-api
Sammanställa ett PDF-dokument med bokmärken med hjälp av Assembler Service API (Java):
-
Inkludera projektfiler.
Inkludera JAR-klientfiler, som adobe-assembler-client.jar, i Java-projektets klassökväg.
-
Skapa en PDF Assembler-klient.
- Skapa ett
ServiceClientFactory
-objekt som innehåller anslutningsegenskaper. (Se Ange anslutningsegenskaper.) - Skapa ett
AssemblerServiceClient
-objekt med hjälp av dess konstruktor och skickaServiceClientFactory
-objektet.
- Skapa ett
-
Referera till ett befintligt DDX-dokument.
- Skapa ett
java.io.FileInputStream
-objekt som representerar DDX-dokumentet med hjälp av dess konstruktor och skicka ett strängvärde som anger platsen för DDX-filen. - Skapa ett
com.adobe.idp.Document
-objekt med hjälp av dess konstruktor och skickajava.io.FileInputStream
-objektet.
- Skapa ett
-
Referera till ett PDF-dokument som bokmärken läggs till i.
- Skapa ett
java.io.FileInputStream
-objekt med hjälp av konstruktorn och skicka platsen för PDF-dokumentet. - Skapa ett
com.adobe.idp.Document
-objekt med hjälp av dess konstruktor och skicka detjava.io.FileInputStream
-objekt som innehåller PDF-dokumentet.
- Skapa ett
-
Referera till XML-dokumentet för bokmärket.
- Skapa ett
java.io.FileInputStream
-objekt med hjälp av dess konstruktor och skicka platsen för XML-filen som representerar bokmärkets XML-dokument. - Skapa ett
com.adobe.idp.Document
-objekt och skickajava.io.FileInputStream
-objektet som innehåller PDF-dokumentet.
- Skapa ett
-
Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling.
-
Skapa ett
java.util.Map
-objekt som används för att lagra både indata-PDF-dokumentet och bokmärkes-XML-dokumentet. -
Lägg till indatadokumentet i PDF genom att anropa
java.util.Map
-objektetsput
-metod och skicka följande argument:- Ett strängvärde som representerar nyckelnamnet. Detta värde måste matcha värdet för källelementet PDF som anges i DDX-dokumentet.
- Ett
com.adobe.idp.Document
-objekt som innehåller indatadokumentet i PDF.
-
Lägg till XML-bokmärkesdokumentet genom att anropa
java.util.Map
-objektetsput
-metod och skicka följande argument:- Ett strängvärde som representerar nyckelnamnet. Värdet måste matcha värdet för källelementet för bokmärken som anges i DDX-dokumentet.
- Ett
com.adobe.idp.Document
-objekt som innehåller XML-bokmärkesdokumentet.
-
-
Ange körningsalternativ.
- Skapa ett
AssemblerOptionSpec
-objekt som lagrar körningsalternativ med hjälp av dess konstruktor. - Ange körningsalternativ som uppfyller dina affärskrav genom att anropa en metod som tillhör objektet
AssemblerOptionSpec
. Om du till exempel vill instruera Assembler-tjänsten att fortsätta bearbeta ett jobb när ett fel inträffar, anropar duAssemblerOptionSpec
-objektetssetFailOnError
-metod och skickarfalse
.
- Skapa ett
-
Sammanställ dokumentet PDF.
Anropa
AssemblerServiceClient
-objektetsinvokeDDX
-metod och skicka följande obligatoriska värden:- Ett
com.adobe.idp.Document
-objekt som representerar det DDX-dokument som ska användas - Ett
java.util.Map
-objekt som innehåller både indata-PDF-dokumentet och bokmärkes-XML-dokumentet. - Ett
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-objekt som anger körningsalternativen, inklusive standardteckensnitt och jobbloggsnivå
Metoden
invokeDDX
returnerar ettcom.adobe.livecycle.assembler.client.AssemblerResult
-objekt som innehåller resultatet av jobbet och eventuella undantag som inträffade. - Ett
-
Spara det PDF-dokument som innehåller bokmärken.
Utför följande åtgärder för att hämta det nya PDF-dokumentet:
- Anropa metoden
getDocuments
för objektetAssemblerResult
. Detta returnerar ettjava.util.Map
-objekt. - Upprepa genom objektet
java.util.Map
tills du hittar det resulterandecom.adobe.idp.Document
-objektet. (Du kan använda resultatelementet PDF som anges i DDX-dokumentet för att hämta dokumentet.) - Anropa
com.adobe.idp.Document
-objektetscopyToFile
-metod för att extrahera PDF-dokumentet.
- Anropa metoden
Se även
Snabbstart (SOAP läge): Sammanfoga PDF-dokument med bokmärken med Java API
Sammanställa PDF-dokument med bokmärken med hjälp av webbtjänstens API assemble-pdf-documents-with-bookmarks-using-the-web-service-api
Sammanställa ett PDF-dokument med bokmärken med Assembler Service API (webbtjänsten):
-
Inkludera projektfiler.
Skapa ett Microsoft .NET-projekt som använder MTOM. Kontrollera att du använder följande WSDL-definition:
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
.note note NOTE Ersätt localhost
med IP-adressen för servern som är värd för AEM Forms. -
Skapa en PDF Assembler-klient.
-
Skapa ett
AssemblerServiceClient
-objekt med hjälp av dess standardkonstruktor. -
Skapa ett
AssemblerServiceClient.Endpoint.Address
-objekt med konstruktornSystem.ServiceModel.EndpointAddress
. Skicka ett strängvärde som anger WSDL till AEM Forms-tjänsten (till exempelhttp://localhost:8080/soap/services/AssemblerService?blob=mtom
). Du behöver inte använda attributetlc_version
. Det här attributet används när du skapar en tjänstreferens. -
Skapa ett
System.ServiceModel.BasicHttpBinding
-objekt genom att hämta värdet för fältetAssemblerServiceClient.Endpoint.Binding
. Skicka returvärdet tillBasicHttpBinding
. -
Ställ in
System.ServiceModel.BasicHttpBinding
-objektetsMessageEncoding
-fält tillWSMessageEncoding.Mtom
. Detta värde garanterar att MTOM används. -
Aktivera grundläggande HTTP-autentisering genom att utföra följande åtgärder:
- Tilldela användarnamnet för AEM formulär till fältet
AssemblerServiceClient.ClientCredentials.UserName.UserName
. - Tilldela motsvarande lösenordsvärde till fältet
AssemblerServiceClient.ClientCredentials.UserName.Password
. - Tilldela konstantvärdet
HttpClientCredentialType.Basic
till fältetBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Tilldela konstantvärdet
BasicHttpSecurityMode.TransportCredentialOnly
till fältetBasicHttpBindingSecurity.Security.Mode
.
- Tilldela användarnamnet för AEM formulär till fältet
-
-
Referera till ett befintligt DDX-dokument.
- Skapa ett
BLOB
-objekt med hjälp av dess konstruktor. ObjektetBLOB
används för att lagra DDX-dokumentet. - Skapa ett
System.IO.FileStream
-objekt genom att anropa dess konstruktor och skicka ett strängvärde som representerar filplatsen för DDX-dokumentet och läget som filen ska öppnas i. - Skapa en bytearray som lagrar innehållet i objektet
System.IO.FileStream
. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
-objektetsLength
-egenskap. - Fyll i bytearrayen med strömdata genom att anropa
System.IO.FileStream
-objektetsRead
-metod och skicka bytearrayen, startpositionen och strömlängden som ska läsas. - Fyll
BLOB
-objektet genom att tilldela dessMTOM
-fält med innehållet i bytearrayen.
- Skapa ett
-
Referera till ett PDF-dokument som bokmärken läggs till i.
- Skapa ett
BLOB
-objekt med hjälp av dess konstruktor. ObjektetBLOB
används för att lagra indata-PDF. - Skapa ett
System.IO.FileStream
-objekt genom att anropa dess konstruktor och skicka ett strängvärde som representerar filplatsen för indata-PDF-dokumentet och läget som filen ska öppnas i. - Skapa en bytearray som lagrar innehållet i objektet
System.IO.FileStream
. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
-objektetsLength
-egenskap. - Fyll i bytearrayen med strömdata genom att anropa
System.IO.FileStream
-objektetsRead
-metod och skicka bytearrayen, startpositionen och strömlängden som ska läsas. - Fyll
BLOB
-objektet genom att tilldela dessMTOM
-fält med innehållet i bytearrayen.
- Skapa ett
-
Referera till XML-dokumentet för bokmärket.
- Skapa ett
BLOB
-objekt med hjälp av dess konstruktor. ObjektetBLOB
används för att lagra XML-dokumentet för bokmärket. - Skapa ett
System.IO.FileStream
-objekt genom att anropa dess konstruktor och skicka ett strängvärde som representerar filplatsen för indata-PDF-dokumentet och läget som filen ska öppnas i. - Skapa en bytearray som lagrar innehållet i objektet
System.IO.FileStream
. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
-objektetsLength
-egenskap. - Fyll i bytearrayen med strömdata genom att anropa
System.IO.FileStream
-objektetsRead
-metod och skicka bytearrayen, startpositionen och strömlängden som ska läsas. - Fyll
BLOB
-objektet genom att tilldela dessMTOM
-fält med innehållet i bytearrayen.
- Skapa ett
-
Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling.
- Skapa ett
MyMapOf_xsd_string_To_xsd_anyType
-objekt. Det här samlingsobjektet används för att lagra indata-PDF-dokument och bokmärkes-XML-dokument. - Skapa ett
MyMapOf_xsd_string_To_xsd_anyType_Item
-objekt för varje indatadokument i PDF och ett XML-dokument för bokmärken. - Tilldela ett strängvärde som representerar nyckelnamnet till
MyMapOf_xsd_string_To_xsd_anyType_Item
-objektetskey
-fält. Detta värde måste matcha värdet för källelementet PDF som anges i DDX-dokumentet. - Tilldela det
BLOB
-objekt som lagrar PDF-dokumentet tillMyMapOf_xsd_string_To_xsd_anyType_Item
-objektetsvalue
-fält. - Lägg till objektet
MyMapOf_xsd_string_To_xsd_anyType_Item
i objektetMyMapOf_xsd_string_To_xsd_anyType
. AnropaMyMapOf_xsd_string_To_xsd_anyType
-objektetsAdd
-metod och skickaMyMapOf_xsd_string_To_xsd_anyType
-objektet. (Utför den här åtgärden för varje inmatningsdokument i PDF och för bokmärkets XML-dokument.)
- Skapa ett
-
Ange körningsalternativ.
- Skapa ett
AssemblerOptionSpec
-objekt som lagrar körningsalternativ med hjälp av dess konstruktor. - Ange körningsalternativ för att uppfylla dina affärskrav genom att tilldela ett värde till en datamedlem som tillhör objektet
AssemblerOptionSpec
. Om du till exempel vill instruera Assembler-tjänsten att fortsätta bearbeta ett jobb när ett fel inträffar tilldelar dufalse
tillAssemblerOptionSpec
-objektetsfailOnError
-datamedlem.
- Skapa ett
-
Sammanställ dokumentet PDF.
Anropa
AssemblerServiceClient
-objektetsinvokeDDX
-metod och skicka följande värden:- Ett
BLOB
-objekt som representerar DDX-dokumentet - Arrayen
MyMapOf_xsd_string_To_xsd_anyType
som innehåller indatadokumenten - Ett
AssemblerOptionSpec
-objekt som anger körningsalternativ
Metoden
invokeDDX
returnerar ettAssemblerResult
-objekt som innehåller resultatet av jobbet och eventuella undantag som kan ha inträffat. - Ett
-
Spara det PDF-dokument som innehåller bokmärken.
Utför följande åtgärder för att hämta det nya PDF-dokumentet:
- Åtkomst till
AssemblerResult
-objektetsdocuments
-fält, som är ettMap
-objekt som innehåller de resulterande PDF-dokumenten. - Upprepa genom objektet
Map
tills du hittar nyckeln som matchar namnet på det resulterande dokumentet. Byt sedanvalue
för den arraymedlemmen till enBLOB
. - Extrahera de binära data som representerar PDF-dokumentet genom att komma åt objektets
MTOM
-fält förBLOB
. Detta returnerar en array med byte som du kan skriva ut till en PDF-fil.
- Åtkomst till
Se även