Sammanställa PDF-dokument med bokmärken assembling-pdf-documents-with-bookmarks
Exempel och exempel i det här dokumentet är bara 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 i det här DDX-dokumentet Loan.pdf
. 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 Bookmarks
-elementet anges i ditt DDX-dokument.
I det här exemplet är DDX-dokumentet Bookmarks
element specificeras doc2
som värdet. Det här värdet anger att indatamappningen som skickas till Assembler-tjänsten innehåller en nyckel med namnet doc2
. Värdet för doc2
nyckel är en com.adobe.idp.Document
det värde som representerar XML-dokumentet för bokmärket. (Se"Bokmärkesspråk" i dialogrutan 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
element" 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å Öppna låninformation är LoanDetails.pdf öppet. När användaren klickar på Starta NotePad bokmärke, NotePad har startats.
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å. 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 Bookmarks
-element, 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
är ett underordnat element till källelementet i PDF och bokmärkena kommer att ersätta dem som redan finns i källan i PDF. Om du vill behålla de befintliga bokmärkena måste du dock se till att Bookmarks
är en jämställd nivå i källelementet PDF. Ta till exempel följande exempel:
<PDF result="foo">
<PDF source="inDoc"/>
<Bookmarks source="doc2"/>
</PDF>
Referera till XML-dokument för bokmärken
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 alternativ för körning som du kan ange finns i AssemblerOptionSpec
klassreferens i AEM Forms API-referens.
Sammanställa dokumentet PDF
Om du vill montera ett PDF-dokument som innehåller nya bokmärken använder du Assembler-tjänstens invokeDDX
operation. Orsaken till att du måste använda invokeDDX
till skillnad från andra Assembler-tjänster som invokeOneDocument
Detta beror på att Assembler-tjänsten kräver ett XML-bokmärkesdokument som skickas inom Map-samlingsobjektet. Det här objektet är en parameter i invokeDDX
operation.
Spara PDF-dokumentet som innehåller bokmärken
Extrahera resultaten från det returnerade mappningsobjektet och spara motsvarande PDF-dokument. (Se"Extrahera resultat" i Programmisk sammanställning av PDF-dokument.)
Se även
Inkludera AEM Forms Java-biblioteksfiler
Programmisk sammanställning av PDF-dokument
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 en
ServiceClientFactory
objekt som innehåller anslutningsegenskaper. (Se Ange anslutningsegenskaper.) - Skapa en
AssemblerServiceClient
genom att använda konstruktorn och skickaServiceClientFactory
-objekt.
- Skapa en
-
Referera till ett befintligt DDX-dokument.
- Skapa en
java.io.FileInputStream
-objekt som representerar DDX-dokumentet genom att använda dess konstruktor och skicka ett strängvärde som anger platsen för DDX-filen. - Skapa en
com.adobe.idp.Document
genom att använda konstruktorn och skickajava.io.FileInputStream
-objekt.
- Skapa en
-
Referera till ett PDF-dokument som bokmärken läggs till i.
- Skapa en
java.io.FileInputStream
genom att använda dess konstruktor och skicka PDF-dokumentets plats. - Skapa en
com.adobe.idp.Document
genom att använda konstruktorn och skickajava.io.FileInputStream
-objekt som innehåller dokumentet PDF.
- Skapa en
-
Referera till XML-dokumentet för bokmärket.
- Skapa en
java.io.FileInputStream
genom att använda dess konstruktor och skicka platsen för XML-filen som representerar bokmärkets XML-dokument. - Skapa en
com.adobe.idp.Document
-objektet och skickajava.io.FileInputStream
-objekt som innehåller dokumentet PDF.
- Skapa en
-
Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling.
-
Skapa en
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
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.
- A
com.adobe.idp.Document
som innehåller indatadokumentet PDF.
-
Lägg till XML-bokmärkesdokumentet genom att anropa
java.util.Map
objektetsput
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.
- A
com.adobe.idp.Document
-objekt som innehåller bokmärkets XML-dokument.
-
-
Ange körningsalternativ.
- Skapa en
AssemblerOptionSpec
objekt som lagrar körningsalternativ med hjälp av dess konstruktor. - Ange körningsalternativ som uppfyller dina affärsbehov genom att anropa en metod som tillhör
AssemblerOptionSpec
-objekt. Om du till exempel vill instruera tjänsten Assembler att fortsätta bearbeta ett jobb när ett fel inträffar, ska du anropaAssemblerOptionSpec
objektetssetFailOnError
metod och skickafalse
.
- Skapa en
-
Sammanställ dokumentet PDF.
Anropa
AssemblerServiceClient
objektetsinvokeDDX
och skicka följande obligatoriska värden:- A
com.adobe.idp.Document
objekt som representerar det DDX-dokument som ska användas - A
java.util.Map
-objekt som innehåller både indatadokumentet och XML-dokumentet för bokmärket. - A
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
objekt som anger körningsalternativ, inklusive standardteckensnitt och jobbloggsnivå
The
invokeDDX
returnerar encom.adobe.livecycle.assembler.client.AssemblerResult
som innehåller resultatet av jobbet och eventuella undantag som inträffade. - A
-
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
AssemblerResult
objektetsgetDocuments
-metod. Detta returnerar enjava.util.Map
-objekt. - Iterera genom
java.util.Map
tills du hittar resultatetcom.adobe.idp.Document
-objekt. (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
Se även
Snabbstart (SOAP-läge): Samla ihop PDF-dokument med bokmärken med Java API
Inkludera AEM Forms Java-biblioteksfiler
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 till den server där AEM Forms finns. -
Skapa en PDF Assembler-klient.
-
Skapa en
AssemblerServiceClient
genom att använda dess standardkonstruktor. -
Skapa en
AssemblerServiceClient.Endpoint.Address
genom att användaSystem.ServiceModel.EndpointAddress
konstruktor. 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ändalc_version
-attribut. Det här attributet används när du skapar en tjänstreferens. -
Skapa en
System.ServiceModel.BasicHttpBinding
genom att hämta värdet förAssemblerServiceClient.Endpoint.Binding
fält. Skicka returvärdet tillBasicHttpBinding
. -
Ange
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 AEM formuläranvändarnamn 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 AEM formuläranvändarnamn till fältet
-
-
Referera till ett befintligt DDX-dokument.
- Skapa en
BLOB
genom att använda dess konstruktor. TheBLOB
-objektet används för att lagra DDX-dokumentet. - Skapa en
System.IO.FileStream
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
System.IO.FileStream
-objekt. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
objektetsLength
-egenskap. - Fylla i bytearrayen med strömdata genom att anropa
System.IO.FileStream
objektetsRead
och skickar bytearrayen, startpositionen och den flödeslängd som ska läsas. - Fyll i
BLOB
genom att tilldelaMTOM
fält med bytearrayens innehåll.
- Skapa en
-
Referera till ett PDF-dokument som bokmärken läggs till i.
- Skapa en
BLOB
genom att använda dess konstruktor. TheBLOB
-objektet används för att lagra indata PDF. - Skapa en
System.IO.FileStream
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
System.IO.FileStream
-objekt. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
objektetsLength
-egenskap. - Fylla i bytearrayen med strömdata genom att anropa
System.IO.FileStream
objektetsRead
och skickar bytearrayen, startpositionen och den flödeslängd som ska läsas. - Fyll i
BLOB
genom att tilldelaMTOM
fält med bytearrayens innehåll.
- Skapa en
-
Referera till XML-dokumentet för bokmärket.
- Skapa en
BLOB
genom att använda dess konstruktor. TheBLOB
-objektet används för att lagra XML-dokumentet för bokmärket. - Skapa en
System.IO.FileStream
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
System.IO.FileStream
-objekt. Du kan bestämma storleken på bytearrayen genom att hämtaSystem.IO.FileStream
objektetsLength
-egenskap. - Fylla i bytearrayen med strömdata genom att anropa
System.IO.FileStream
objektetsRead
och skickar bytearrayen, startpositionen och den flödeslängd som ska läsas. - Fyll i
BLOB
genom att tilldelaMTOM
fält med bytearrayens innehåll.
- Skapa en
-
Lägg till PDF-dokumentet och bokmärkets XML-dokument i en kartsamling.
- Skapa en
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. - För varje inmatningsdokument i PDF och bokmärkes-XML-dokument skapar du ett
MyMapOf_xsd_string_To_xsd_anyType_Item
-objekt. - 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
BLOB
det objekt som lagrar PDF-dokumentet tillMyMapOf_xsd_string_To_xsd_anyType_Item
objektetsvalue
fält. - Lägg till
MyMapOf_xsd_string_To_xsd_anyType_Item
objekt tillMyMapOf_xsd_string_To_xsd_anyType
-objekt. AnropaMyMapOf_xsd_string_To_xsd_anyType
objektetsAdd
och skickaMyMapOf_xsd_string_To_xsd_anyType
-objekt. (Utför den här åtgärden för varje inmatningsdokument i PDF och för bokmärkets XML-dokument.)
- Skapa en
-
Ange körningsalternativ.
- Skapa en
AssemblerOptionSpec
objekt som lagrar körningsalternativ med hjälp av dess konstruktor. - Ange körningsalternativ som uppfyller dina affärskrav genom att tilldela ett värde till en datamedlem som tillhör
AssemblerOptionSpec
-objekt. 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 en
-
Sammanställ dokumentet PDF.
Anropa
AssemblerServiceClient
objektetsinvokeDDX
och skicka följande värden:- A
BLOB
objekt som representerar DDX-dokumentet - The
MyMapOf_xsd_string_To_xsd_anyType
array som innehåller indatadokumenten - An
AssemblerOptionSpec
objekt som anger körningsalternativ
The
invokeDDX
returnerar enAssemblerResult
som innehåller resultatet av jobbet och eventuella undantag som kan ha inträffat. - A
-
Spara det PDF-dokument som innehåller bokmärken.
Utför följande åtgärder för att hämta det nya PDF-dokumentet:
- Öppna
AssemblerResult
objektetsdocuments
fält, vilket är ettMap
-objekt som innehåller de resulterande PDF-dokumenten. - Iterera genom
Map
tills du hittar nyckeln som matchar namnet på det resulterande dokumentet. Byt sedan ut arraymedlemmensvalue
tillBLOB
. - Extrahera de binära data som representerar PDF-dokumentet genom att öppna dess
BLOB
objektetsMTOM
fält. Detta returnerar en array med byte som du kan skriva ut till en PDF-fil.
- Öppna
Se även