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.
documentNamecom.adobe.idp.DocumentdocumentNameExceptionOutputMapConstants.LOG_NAMEcom.adobe.idp.DocumenSe ä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.Mapfö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
invokeDDXreturnerar 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
getDocumentsför objektetAssemblerResult. Detta returnerar ettjava.util.Map-objekt. - Upprepa genom objektet
java.util.Maptills 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_LEVELvar 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 localhostmed 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.Basictill fältetBasicHttpBindingSecurity.Transport.ClientCredentialType. - Tilldela konstantvärdet
BasicHttpSecurityMode.TransportCredentialOnlytill 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. ObjektetBLOBanvä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
BLOBgenom 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. ObjektetBLOBanvä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_Itemi 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 dufalsetillAssemblerOptionSpec-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
mapItemsom 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
invokereturnerar 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
Maptills du hittar nyckeln som matchar namnet på det resulterande dokumentet. Byt sedanvaluefö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_LEVELvar 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