Programmisk sammanställning av PDF-dokument programmatically-assembling-pdf-documents
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Du kan använda Assembler Service API för att samla ihop flera PDF-dokument till ett enda PDF-dokument. Följande bild visar tre PDF-dokument som sammanfogas till ett enda PDF-dokument.
Om du vill samla ihop två eller flera PDF-dokument till ett enda PDF-dokument behöver du ett DX-dokument. Ett DDX-dokument beskriver det PDF-dokument som Assembler-tjänsten skapar. DX-dokumentet instruerar alltså Assembler-tjänsten vilka åtgärder som ska utföras.
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="out.pdf">
<PDF source="map.pdf" />
<PDF source="directions.pdf" />
</PDF>
</DDX>
Det här DDX-dokumentet sammanfogar två PDF-dokument med namnen map.pdf och directs.pdf till ett enda PDF-dokument.
Att tänka på vid anrop av Assembler-tjänsten med webbtjänster considerations-when-invoking-assembler-service-using-web-services
När du lägger till sidhuvuden och sidfötter under sammanställningen av stora dokument kan ett OutOfMemory
-fel uppstå, och filerna kommer inte att sättas samman. Om du vill minska risken för att det här problemet uppstår lägger du till ett DDXProcessorSetting
-element i ditt DDX-dokument, vilket visas i följande exempel.
<DDXProcessorSetting name="checkpoint" value="2000" />
Du kan lägga till det här elementet som ett underordnat element till elementet DDX
eller som ett underordnat element till ett PDF result
-element. Standardvärdet för den här inställningen är 0 (noll), vilket inaktiverar kontrollpunkten och DDX fungerar som om elementet DDXProcessorSetting
inte finns. Om du har påträffat ett OutOfMemory
-fel kan du behöva ange värdet till ett heltal, vanligtvis mellan 500 och 5000. Ett litet kontrollpunktsvärde resulterar i mer frekventa kontrollpunkter.
Sammanfattning av steg summary-of-steps
Gör så här om du vill samla ihop ett dokument från flera PDF-dokument i ett PDF:
- Inkludera projektfiler.
- Skapa en PDF Assembler-klient.
- Referera till ett befintligt DDX-dokument.
- Referera PDF-dokument för indata.
- Ange körningsalternativ.
- Sammanställ PDF-indatadokumenten.
- Extrahera resultaten.
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 där AEM Forms är distribuerad.
Skapa en PDF Assembler-klient
Innan du programmässigt kan utföra en Assembler-åtgärd måste du skapa en Assembler-klient.
Referera till ett befintligt DDX-dokument
Ett DDX-dokument måste refereras till för att du ska kunna montera ett PDF-dokument. Ta till exempel det DX-dokument som introducerades i det här avsnittet. Det här DDX-dokumentet instruerar Assembler-tjänsten att sammanfoga två PDF-dokument till ett enda PDF-dokument.
Referensindata för PDF-dokument
Referera indatadokument i PDF som du vill skicka till Assembler-tjänsten. Om du till exempel vill skicka två indatadokument med namnet Karta och Riktningar för PDF måste du skicka motsvarande PDF-filer.
Både filen map.pdf och filen Directions.pdf måste placeras i ett samlingsobjekt. Nyckelns namn måste matcha PDF-källattributets värde i DDX-dokumentet. Det spelar ingen roll vad namnet på filen PDF är om nyckeln och källattributet i DDX-dokumentet matchar.
AssemblerResult
-objekt, som innehåller ett samlingsobjekt, returneras om du anropar åtgärden invokeDDX
. Den här åtgärden används när du skickar två eller flera PDF-indatadokument till Assembler-tjänsten. Om du bara skickar ett indatavärde PDF till Assembler-tjänsten och bara förväntar dig ett returdokument, ska du anropa åtgärden invokeOneDocument
. När den här åtgärden anropas returneras ett enda dokument. Mer information om hur du använder den här åtgärden finns i Sammanställa krypterade PDF-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-indatadokumenten
När du har skapat tjänstklienten, refererat till en DDX-fil, skapat ett samlingsobjekt som lagrar indatadokument i PDF och angett körningsalternativ, kan du starta DDX-åtgärden. När du använder det DDX-dokument som anges i det här avsnittet sammanfogas filerna map.pdf och direction.pdf till ett PDF-dokument.
Extrahera resultaten
Assembler-tjänsten returnerar ett java.util.Map
-objekt som kan hämtas från AssemblerResult
-objektet och som innehåller åtgärdsresultat. Det returnerade java.util.Map
-objektet innehåller de resulterande dokumenten och eventuella undantag.
I följande tabell sammanfattas några av de nyckelvärden och objekttyper som kan finnas i det returnerade java.util.Map
-objektet.
documentName
com.adobe.idp.Document
documentName
Exception
OutputMapConstants.LOG_NAME
com.adobe.idp.Documen
Se även
Sammanställa PDF-dokument med Java API assemble-pdf-documents-using-the-java-api
Sammanställa ett PDF-dokument 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. - 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 PDF-dokument för indata.
-
Skapa ett
java.util.Map
-objekt som används för att lagra PDF-indatadokument med hjälp av enHashMap
-konstruktor. -
För varje indatadokument i PDF skapar du ett
java.io.FileInputStream
-objekt med hjälp av dess konstruktor och skickar indatadokumentets plats i PDF. -
Skapa ett
com.adobe.idp.Document
-objekt för varje indatadokument och skickajava.io.FileInputStream
-objektet som innehåller PDF-dokumentet. -
Lägg till en post till objektet
java.util.Map
för varje indatadokument genom att anropa dessput
-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 (ellerjava.util.List
-objekt som anger flera dokument) som innehåller PDF-källdokumentet.
-
-
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 PDF-indatadokumenten.
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 indatafilerna för PDF som ska monteras - 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
-
Extrahera resultaten.
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.
note note NOTE Om LOG_LEVEL
var inställt på att generera en logg kan du extrahera loggen med hjälp avAssemblerResult
-objektetsgetJobLog
-metod. - Anropa metoden
Se även
Snabbstart (SOAP): Sammanställa ett PDF-dokument med Java API
Sammanställa PDF-dokument med hjälp av webbtjänstens API assemble-pdf-documents-using-the-web-service-api
Sammanställa PDF-dokument med Assembler Service API (webbtjänst):
-
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 objektet
BLOB
genom att tilldela dessMTOM
-egenskap med innehållet i bytearrayen.
- Skapa ett
-
Referera PDF-dokument för indata.
- Skapa ett
BLOB
-objekt med hjälp av dess konstruktor för varje indatadokument i PDF. ObjektetBLOB
används för att lagra indatadokumentet i 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. 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
MyMapOf_xsd_string_To_xsd_anyType
-objekt. Det här samlingsobjektet används för att lagra indatadokument i PDF. - Skapa ett
MyMapOf_xsd_string_To_xsd_anyType_Item
-objekt för varje indatadokument i PDF. Om du till exempel använder två indatadokument i PDF skapar du två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. (Utför den här åtgärden för varje dokument i PDF.) - Tilldela det
BLOB
-objekt som lagrar PDF-dokumentet tillMyMapOf_xsd_string_To_xsd_anyType_Item
-objektetsvalue
-fält. (Utför den här åtgärden för varje dokument i PDF.) - 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 dokument i PDF.)
- 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 PDF-indatadokumenten.
Anropa
AssemblerServiceClient
-objektetsinvoke
-metod och skicka följande värden:- Ett
BLOB
-objekt som representerar DDX-dokumentet. - Arrayen
mapItem
som innehåller PDF-indatadokumenten. Dess nycklar måste matcha namnen på källfilerna i PDF och dess värden måste vara deBLOB
-objekt som motsvarar dessa filer. - Ett
AssemblerOptionSpec
-objekt som anger körningsalternativ.
Metoden
invoke
returnerar ettAssemblerResult
-objekt som innehåller resultatet av jobbet och eventuella undantag som kan ha inträffat. - Ett
-
Extrahera resultaten.
Utför följande åtgärder för att hämta det nya PDF-dokumentet:
- Få å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
BLOB
-egenskapMTOM
. Detta returnerar en array med byte som du kan skriva ut till en PDF-fil.
note note NOTE Om LOG_LEVEL
var inställt på att skapa en logg kan du extrahera loggen genom att hämta värdet förAssemblerResult
-objektetsjobLog
-datamedlem. - Få åtkomst till
Se även