Sammanställa flera XDP-fragment assembling-multiple-xdp-fragments
Du kan sätta ihop flera XDP-fragment till ett enda XDP-dokument. Ta till exempel XDP-fragment där varje XDP-fil innehåller ett eller flera delformulär som används för att skapa ett hälsoformulär. Följande bild visar dispositionsvyn (representerar filen tuc018_template_flowed.xdp som används i snabbstarten Sammanställa flera XDP-fragment):
Följande bild visar patientavsnittet (representerar filen tuc018_contact.xdp som används i snabbstarten Sammanställa flera XDP-fragment):
Följande bild visar patientens hälsoavsnitt (representerar filen tuc018_patient.xdp som används i snabbstarten Sammanställa flera XDP-fragment):
Detta fragment innehåller två delformulär som heter subPatientPhysical och subPatientHealth. Båda dessa delformulär refereras i det DDX-dokument som skickas till Assembler-tjänsten. Med Assembler-tjänsten kan du kombinera alla dessa XDP-fragment till ett enda XDP-dokument, vilket visas på följande bild.
Följande DDX-dokument samlar ihop flera XDP-fragment till ett XDP-dokument.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<XDP result="tuc018result.xdp">
<XDP source="tuc018_template_flowed.xdp">
<XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/>
<XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientPhysical" required="false"/>
<XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientHealth" required="false"/>
</XDP>
</XDP>
</DDX>
DDX-dokumentet innehåller en XDP result
-tagg som anger resultatets namn. I den här situationen är värdet tuc018result.xdp
. Detta värde refereras i den programlogik som används för att hämta XDP-dokumentet efter att Assembler-tjänsten returnerar resultatet. Ta till exempel följande Java-programlogik som används för att hämta det sammansatta XDP-dokumentet (lägg märke till att värdet är fetstilt):
//Iterate through the map object to retrieve the result XDP document
for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) {
// Retrieve the Map object’s value
Map.Entry e = (Map.Entry)i.next();
//Get the key name as specified in the
//DDX document
String keyName = (String)e.getKey();
if (keyName.equalsIgnoreCase("tuc018result.xdp"))
{
Object o = e.getValue();
outDoc = (Document)o;
//Save the result PDF file
File myOutFile = new File("C:\\AssemblerResultXDP.xdp");
outDoc.copyToFile(myOutFile);
}
}
Taggen XDP source
anger XDP-filen som representerar ett fullständigt XDP-dokument som kan användas som behållare för att lägga till XDP-fragment eller som ett av flera dokument som läggs ihop i ordning. I det här fallet används XDP-dokumentet bara som en behållare (den första bilden som visas i Sammanställa flera XDP-fragment). De andra XDP-filerna placeras alltså i XDP-behållaren.
För varje delformulär kan du lägga till ett XDPContent
-element (det här elementet är valfritt). I exemplet ovan bör du observera att det finns tre delformulär: subPatientContact
, subPatientPhysical
och subPatientHealth
. Både delformuläret subPatientPhysical
och delformuläret subPatientHealth
finns i samma XDP-fil, tuc018_patient.xdp. Fragmentelementet anger delformulärets namn, enligt definitionen i Designer.
Sammanfattning av steg summary-of-steps
Gör så här om du vill sätta ihop flera XDP-fragment:
- Inkludera projektfiler.
- Skapa en PDF Assembler-klient.
- Referera till ett befintligt DDX-dokument.
- Referera till XDP-dokumenten.
- Ange körningsalternativ.
- Sammanställ de olika XDP-dokumenten.
- Hämta det monterade XDP-dokumentet.
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.
Referera till ett befintligt DDX-dokument
Ett DDX-dokument måste refereras till för att kunna samla ihop flera XDP-dokument. Det här DDX-dokumentet måste innehålla elementen XDP result
, XDP source
och XDPContent
.
Referera till XDP-dokument
Om du vill samla ihop flera XDP-dokument refererar du till alla XDP-filer som används för att sammanställa det resulterande XDP-dokumentet. Kontrollera att namnet på delformuläret i XDP-dokumentet som refereras av attributet source
anges i attributet fragment
. Ett delformulär definieras i Designer. Här följer ett exempel på XML.
<XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/>
Delformuläret subPatientContact måste finnas i XDP-filen tuc018_contact.xdp.
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.
Sammanställ flera XDP-dokument
Om du vill samla ihop flera XDP-filer anropar du åtgärden invokeDDX
. Assembler-tjänsten returnerar det monterade XDP-dokumentet i ett samlingsobjekt.
Hämta det monterade XDP-dokumentet
Ett monterat XDP-dokument returneras inom ett samlingsobjekt. Upprepa genom samlingsobjektet och spara XDP-dokumentet som en XDP-fil. Du kan också skicka XDP-dokumentet till en annan AEM Forms-tjänst, till exempel Output.
Se även
Sammanställa flera XDP-fragment med Java API
Sammanställa flera XDP-fragment med hjälp av webbtjänstens API
Inkludera AEM Forms Java-biblioteksfiler
Sammanställa flera XDP-fragment med Java API assemble-multiple-xdp-fragments-using-the-java-api
Sammanställa flera XDP-fragment med 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 till XDP-dokumenten.
-
Skapa ett
java.util.Map
-objekt som används för att lagra XDP-indatadokument med hjälp av enHashMap
-konstruktor. -
Skapa ett
com.adobe.idp.Document
-objekt och skickajava.io.FileInputStream
-objektet som innehåller XDP-indatafilen (upprepa den här uppgiften för varje XDP-fil). -
Lägg till en post i objektet
java.util.Map
genom att anropa dessput
-metod och skicka följande argument:- Ett strängvärde som representerar nyckelnamnet. Det här värdet måste matcha elementvärdet
source
som anges i DDX-dokumentet (upprepa den här uppgiften för varje XDP-fil). - Ett
com.adobe.idp.Document
-objekt som innehåller XDP-dokumentet som motsvarar elementetsource
(upprepa den här uppgiften för varje XDP-fil).
- Ett strängvärde som representerar nyckelnamnet. Det här värdet måste matcha elementvä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
-
Sammanställ de olika XDP-dokumenten.
Anropa
AssemblerServiceClient
-objektetsinvokeDDX
-metod och skicka följande obligatoriska värden:- Ett
com.adobe.idp.Document
-objekt som representerar det DX-dokument som ska användas - Ett
java.util.Map
-objekt som innehåller XDP-indatafilerna - Ett
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
-objekt som anger körningsalternativen, inklusive standardteckensnittet och jobbloggsnivån
Metoden
invokeDDX
returnerar ettcom.adobe.livecycle.assembler.client.AssemblerResult
-objekt som innehåller det sammansatta XDP-dokumentet. - Ett
-
Hämta det monterade XDP-dokumentet.
Utför följande åtgärder för att hämta det monterade XDP-dokumentet:
- Anropa metoden
getDocuments
för objektetAssemblerResult
. Den här metoden returnerar ettjava.util.Map
-objekt. - Upprepa genom objektet
java.util.Map
tills du hittar det resulterandecom.adobe.idp.Document
-objektet. - Anropa
com.adobe.idp.Document
-objektetscopyToFile
-metod för att extrahera det monterade XDP-dokumentet.
- Anropa metoden
Se även
Sammanställer flera XDP-fragment
Snabbstart (SOAP): Sammanställa flera XDP-fragment med Java API
Inkludera AEM Forms Java-biblioteksfiler
Ange anslutningsegenskaper
Sammanställa flera XDP-fragment med hjälp av webbtjänstens API assemble-multiple-xdp-fragments-using-the-web-service-api
Sammanställa flera XDP-fragment 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:
code language-java https://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 exempelhttps://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. 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 till XDP-dokumenten.
- För varje XDP-indatafil skapar du ett
BLOB
-objekt med hjälp av dess konstruktor. ObjektetBLOB
används för att lagra indatafilen. - Skapa ett
System.IO.FileStream
-objekt genom att anropa dess konstruktor och skicka ett strängvärde som representerar indatafilens plats 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. Samlingsobjektet används för att lagra indatafiler som krävs för att skapa ett sammansatt XDP-dokument. - Skapa ett
MyMapOf_xsd_string_To_xsd_anyType_Item
-objekt för varje indatafil. - 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 elementet som anges i DDX-dokumentet. (Utför den här åtgärden för varje XDP-indatafil.) - Tilldela objektet
BLOB
som lagrar indatafilen till fältetvalue
förMyMapOf_xsd_string_To_xsd_anyType_Item
-objektet. (Utför den här åtgärden för varje XDP-indatafil.) - 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 XDP-indatadokument.)
- För varje XDP-indatafil skapar du 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 de olika XDP-dokumenten.
Anropa
AssemblerServiceClient
-objektetsinvokeDDX
-metod och skicka följande värden:- Ett
BLOB
-objekt som representerar DDX-dokumentet - Objektet
MyMapOf_xsd_string_To_xsd_anyType
som innehåller de nödvändiga filerna - Ett
AssemblerOptionSpec
-objekt som anger körningsalternativ
Metoden
invokeDDX
returnerar ettAssemblerResult
-objekt som innehåller resultatet av jobbet och eventuella undantag som inträffade. - Ett
-
Hämta det monterade XDP-dokumentet.
Utför följande åtgärder för att hämta det nya XDP-dokumentet:
- Få åtkomst till
AssemblerResult
-objektetsdocuments
-fält, som är ettMap
-objekt som innehåller de resulterande PDF-dokumenten. - Iterera genom objektet
Map
för att få fram varje resulterande dokument. Sedan konverterar du den arraymedlemmensvalue
till enBLOB
. - Extrahera de binära data som representerar PDF-dokumentet genom att komma åt objektets
BLOB
-egenskapMTOM
. Detta returnerar en bytearray som du kan skriva ut till en XDP-fil.
- Få åtkomst till
Se även
Sammanställer flera XDP-fragment
Anropa AEM Forms med MTOM