Skapa DDX-dokument dynamiskt dynamically-creating-ddx-documents
Exempel och exempel i det här dokumentet gäller endast för AEM Forms i JEE-miljö.
Du kan dynamiskt skapa ett DX-dokument som kan användas för att utföra en Assembler-åtgärd. När du dynamiskt skapar ett DX-dokument kan du använda värden i DDX-dokumentet som hämtas under körning. Om du vill skapa ett DDX-dokument dynamiskt använder du klasser som tillhör det programmeringsspråk som du använder. Om du till exempel utvecklar ditt klientprogram med Java ska du använda klasser som tillhör paketet org.w3c.dom.*. Om du använder Microsoft .NET ska du också använda klasser som tillhör namnutrymmet System.Xml.
Innan du kan skicka DDX-dokumentet till Assembler-tjänsten måste du konvertera XML-filen från en org.w3c.dom.Document-instans till en com.adobe.idp.Document-instans. Om du använder webbtjänster konverterar du XML från den datatyp som används för att skapa XML (till exempel XmlDocument) till en BLOB-instans.
Anta att följande DDX-dokument skapas dynamiskt för den här diskussionen.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDFsFromBookmarks prefix="stmt">
<PDF source="AssemblerResultPDF.pdf"/>
</PDFsFromBookmarks>
</DDX>
Det här DDX-dokumentet demonterar ett PDF-dokument. Vi rekommenderar att du är bekant med att dela upp dokument i PDF.
Sammanfattning av steg summary-of-steps
Gör så här om du vill dela upp ett PDF-dokument med ett dynamiskt skapat DDX-dokument:
- Inkludera projektfiler.
- Skapa en PDF Assembler-klient.
- Skapa DDX-dokumentet.
- Konvertera DDX-dokumentet.
- Ange körningsalternativ.
- Dela upp PDF-dokumentet.
- Spara de upplösta PDF-dokumenten.
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)
Skapa en PDF Assembler-klient
Skapa en Assembler-tjänstklient innan du programmässigt utför en Assembler-åtgärd.
Skapa DDX-dokumentet
Skapa ett DX-dokument med det programmeringsspråk som du använder. Om du vill skapa ett DDX-dokument som demonterar ett PDF-dokument måste du se till att det innehåller elementet PDFsFromBookmarks. Konvertera den datatyp som används för att skapa DDX-dokumentet till en com.adobe.idp.Document-instans om du använder Java API. Om du använder webbtjänster konverterar du datatypen till en BLOB-instans.
Konvertera DDX-dokumentet
Ett DDX-dokument som skapas med org.w3c.dom-klasser måste konverteras till ett com.adobe.idp.Document-objekt. Om du vill utföra den här åtgärden när du använder Java API ska du använda Java XML-omformningsklasser. Om du använder webbtjänster konverterar du DDX-dokumentet till ett BLOB-objekt.
Referera till ett PDF-dokument som ska demonteras
Om du vill dela upp ett PDF-dokument refererar du till en PDF-fil som representerar det PDF-dokument som ska demonteras. När det skickas till Assembler-tjänsten returneras ett separat PDF-dokument för varje nivå 1-bokmärke i dokumentet.
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. Om du vill ange körningsalternativ använder du ett AssemblerOptionSpec-objekt.
Disassemblera PDF-dokumentet
Disassemblera PDF-dokumentet genom att anropa åtgärden invokeDDX. Skicka DDX-dokumentet som skapades dynamiskt. Assembler-tjänsten returnerar uppdelade PDF-dokument i ett samlingsobjekt.
Spara de omonterade PDF-dokumenten
Alla uppdelade PDF-dokument returneras inom ett samlingsobjekt. Iterera genom samlingsobjektet och spara varje PDF-dokument som en PDF-fil.
Se även
Skapa ett DDX-dokument dynamiskt med Java API
Skapa ett DX-dokument dynamiskt med webbtjänstens API
Skapa ett DDX-dokument dynamiskt med Java API dynamically-create-a-ddx-document-using-the-java-api
Skapa ett DDX-dokument dynamiskt och demontera 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
-
Skapa DDX-dokumentet.
-
Skapa ett Java
DocumentBuilderFactory-objekt genom att anropa metodenDocumentBuilderFactoryclass'newInstance. -
Skapa ett Java
DocumentBuilder-objekt genom att anropaDocumentBuilderFactory-objektetsnewDocumentBuilder-metod. -
Anropa
DocumentBuilder-objektetsnewDocument-metod för att instansiera ettorg.w3c.dom.Document-objekt. -
Skapa DX-dokumentets rotelement genom att anropa
org.w3c.dom.Document-objektetscreateElement-metod. Den här metoden skapar ettElement-objekt som representerar rotelementet. Skicka ett strängvärde som representerar elementets namn till metodencreateElement. Skicka returvärdet tillElement. Ange sedan ett värde för det underordnade elementet genom att anropa desssetAttribute-metod. Lägg slutligen till elementet i rubrikelementet genom att anropa rubrikelementetsappendChild-metod och skicka det underordnade elementobjektet som ett argument. Följande kodrader visar den här programlogiken:Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root); -
Skapa elementet
PDFsFromBookmarksgenom att anropa metodencreateElementför objektetDocument. Skicka ett strängvärde som representerar elementets namn till metodencreateElement. Skicka returvärdet tillElement. Ange ett värde för elementetPDFsFromBookmarksgenom att anropa desssetAttribute-metod. Lägg till elementetPDFsFromBookmarksi elementetDDXgenom att anropa DDX-elementetsappendChild-metod. Skicka elementobjektetPDFsFromBookmarkssom ett argument. Följande kodrader visar den här programlogiken:Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks); -
Skapa ett
PDF-element genom att anropaDocument-objektetscreateElement-metod. Skicka ett strängvärde som representerar elementets namn. Skicka returvärdet tillElement. Ange ett värde för elementetPDFgenom att anropa desssetAttribute-metod. Lägg till elementetPDFi elementetPDFsFromBookmarksgenom att anropaPDFsFromBookmarks-elementetsappendChild-metod. Skicka elementobjektetPDFsom ett argument. Följande kodrader visar den här programlogiken:Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Konvertera DDX-dokumentet.
- Skapa ett
javax.xml.transform.Transformer-objekt genom att anropajavax.xml.transform.Transformer-objektets statiskanewInstance-metod. - Skapa ett
Transformer-objekt genom att anropaTransformerFactory-objektetsnewTransformer-metod. - Skapa ett
ByteArrayOutputStream-objekt med hjälp av dess konstruktor. - Skapa ett
javax.xml.transform.dom.DOMSource-objekt med hjälp av dess konstruktor. Skicka objektetorg.w3c.dom.Documentsom representerar DDX-dokumentet. - Skapa ett
javax.xml.transform.dom.DOMSource-objekt med hjälp av dess konstruktor och skickaByteArrayOutputStream-objektet. - Fyll i Java
ByteArrayOutputStream-objektet genom att anropajavax.xml.transform.Transformer-objektetstransform-metod. Skicka objektenjavax.xml.transform.dom.DOMSourceochjavax.xml.transform.stream.StreamResult. - Skapa en bytearray och tilldela storleken på
ByteArrayOutputStream-objektet till bytearrayen. - Fyll i bytearrayen genom att anropa
ByteArrayOutputStream-objektetstoByteArray-metod. - Skapa ett
com.adobe.idp.Document-objekt med hjälp av dess konstruktor och skicka bytearrayen.
- Skapa ett
-
Referera ett PDF-dokument som ska demonteras.
-
Skapa ett
java.util.Map-objekt som används för att lagra PDF-indatadokument med hjälp av enHashMap-konstruktor. -
Skapa ett
java.io.FileInputStream-objekt med hjälp av konstruktorn och skicka platsen för det PDF-dokument som ska demonteras. -
Skapa ett
com.adobe.idp.Document-objekt. Skicka detjava.io.FileInputStream-objekt som innehåller det PDF-dokument som ska demonteras. -
Lägg till en post i objektet
java.util.Mapgenom 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. (I DDX-dokumentet som skapas dynamiskt är värdet
AssemblerResultPDF.pdf.) - Ett
com.adobe.idp.Document-objekt som innehåller det PDF-dokument som ska demonteras.
- 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. (I DDX-dokumentet som skapas dynamiskt är värdet
-
-
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
-
Dela upp PDF-dokumentet.
Anropa
AssemblerServiceClient-objektetsinvokeDDX-metod och skicka följande värden:- Ett
com.adobe.idp.Document-objekt som representerar det dynamiskt skapade DDX-dokumentet - Ett
java.util.Map-objekt som innehåller det PDF-dokument som ska demonteras - Ett
com.adobe.livecycle.assembler.client.AssemblerOptionSpec-objekt som anger körningsalternativen, inklusive standardteckensnittet och jobbloggsnivån
Metoden
invokeDDXreturnerar ettcom.adobe.livecycle.assembler.client.AssemblerResult-objekt som innehåller de omonterade PDF-dokumenten och eventuella undantag som har inträffat. - Ett
-
Spara de upplösta PDF-dokumenten.
Gör så här för att få fram de uppdelade PDF-dokumenten:
- Anropa metoden
getDocumentsför objektetAssemblerResult. Den här metoden returnerar ettjava.util.Map-objekt. - Upprepa genom objektet
java.util.Maptills du hittar det resulterandecom.adobe.idp.Document-objektet. - Anropa
com.adobe.idp.Document-objektetscopyToFile-metod för att extrahera PDF-dokumentet.
- Anropa metoden
Se även
Snabbstart (SOAP): Skapa ett DX-dokument dynamiskt med Java API
Skapa ett DX-dokument dynamiskt med webbtjänstens API dynamically-create-a-ddx-document-using-the-web-service-api
Skapa ett DDX-dokument dynamiskt och demontera ett 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 när du anger en tjänstreferens:
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
-
-
Skapa DDX-dokumentet.
-
Skapa ett
System.Xml.XmlElement-objekt med hjälp av dess konstruktor. -
Skapa DX-dokumentets rotelement genom att anropa
XmlElement-objektetsCreateElement-metod. Den här metoden skapar ettElement-objekt som representerar rotelementet. Skicka ett strängvärde som representerar elementets namn till metodenCreateElement. Ange ett värde för DDX-elementet genom att anropa dessSetAttribute-metod. Lägg slutligen till elementet i DDX-dokumentet genom att anropaXmlElement-objektetsAppendChild-metod. Skicka DDX-objektet som ett argument. Följande kodrader visar den här programlogiken:System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root); -
Skapa DDX-dokumentets
PDFsFromBookmarks-element genom att anropaXmlElement-objektetsCreateElement-metod. Skicka ett strängvärde som representerar elementets namn till metodenCreateElement. Ange sedan ett värde för elementet genom att anropa dessSetAttribute-metod. Lägg till elementetPDFsFromBookmarksi rotelementet genom att anropa metodenAppendChildför elementetDDX. Skicka elementobjektetPDFsFromBookmarkssom ett argument. Följande kodrader visar den här programlogiken:XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks); -
Skapa DDX-dokumentets
PDF-element genom att anropaXmlElement-objektetsCreateElement-metod. Skicka ett strängvärde som representerar elementets namn till metodenCreateElement. Ange sedan ett värde för det underordnade elementet genom att anropa dessSetAttribute-metod. Lägg till elementetPDFi elementetPDFsFromBookmarksgenom att anropaPDFsFromBookmarks-elementetsAppendChild-metod. Skicka elementobjektetPDFsom ett argument. Följande kodrader visar den här programlogiken:XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Konvertera DDX-dokumentet.
-
Skapa ett
System.IO.MemoryStream-objekt med hjälp av dess konstruktor. -
Fyll i objektet
MemoryStreammed DDX-dokumentet med hjälp av objektetXmlElementsom representerar DDX-dokumentet. AnropaXmlElement-objektetsSave-metod och skickaMemoryStream-objektet. -
Skapa en bytearray och fylla den med data i objektet
MemoryStream. I följande kod visas den här programlogiken:int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen); -
Skapa ett
BLOB-objekt. Tilldela bytearrayen tillBLOB-objektetsMTOM-fält.
-
-
Referera ett PDF-dokument som ska demonteras.
- Skapa ett
BLOB-objekt med hjälp av dess konstruktor. ObjektetBLOBanvänds för att lagra indatadokumentet i PDF. Det härBLOB-objektet skickas tillinvokeOneDocumentsom ett argument. - Skapa ett
System.IO.FileStream-objekt genom att anropa dess konstruktor. 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 i objektet
BLOBgenom att tilldela dessMTOM-egenskap innehållet i bytearrayen.
- 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
-
Dela upp PDF-dokumentet.
Anropa
AssemblerServiceClient-objektetsinvokeDDX-metod och skicka följande värden:- Ett
BLOB-objekt som representerar det dynamiskt skapade DDX-dokumentet - Arrayen
mapItemsom innehåller PDF-indatadokumentet - Ett
AssemblerOptionSpec-objekt som anger körningsalternativ
Metoden
invokeDDXreturnerar ettAssemblerResult-objekt som innehåller resultatet av jobbet och eventuella undantag som inträffade. - Ett
-
Spara de upplösta PDF-dokumenten.
Gör så här för att hämta de nya PDF-dokumenten:
- Åtkomst till
AssemblerResult-objektetsdocuments-fält, som är ettMap-objekt som innehåller de omonterade PDF-dokumenten. - Iterera genom objektet
Mapför att få fram varje resulterande dokument. Sedan konverterar du den arraymedlemmensvaluetill enBLOB. - Extrahera de binära data som representerar PDF-dokumentet genom att komma åt objektets
MTOM-egenskap förBLOB. Detta returnerar en array med byte som du kan skriva ut till en PDF-fil.
- Åtkomst till
Se även