Créer de façon dynamique des documents DDX dynamically-creating-ddx-documents
Les exemples et les échantillons de ce document sont réservés à l’environnement AEM Forms sur JEE.
Vous pouvez créer dynamiquement un document DDX qui peut être utilisé pour effectuer une opération Assembler. La création dynamique d’un document DDX vous permet d’utiliser dans le document DDX des valeurs obtenues lors de l’exécution. Pour créer un document DDX de façon dynamique, utilisez des classes appartenant au langage de programmation que vous utilisez. Par exemple, si vous développez votre application cliente à l’aide de Java, utilisez des classes appartenant au package org.w3c.dom.*. De même, si vous utilisez Microsoft .NET, utilisez des classes appartenant à l’espace de noms System.Xml.
Avant de pouvoir transmettre le document DDX au service Assembler, convertissez le fichier XML d’une instance org.w3c.dom.Document vers une instance com.adobe.idp.Document. Si vous utilisez des services web, convertissez le XML à partir du type de données utilisé pour créer le XML (par exemple XmlDocument) en instance BLOB.
Aux fins de cette discussion, supposons que le document DDX suivant est créé de façon dynamique.
<?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>
Ce document DDX désassemble un document PDF. Il est recommandé de vous familiariser avec le désassemblage de documents PDF.
Résumé des étapes summary-of-steps
Pour désassembler un document PDF à l’aide d’un document DDX créé de façon dynamique, effectuez les tâches suivantes :
- Incluez les fichiers de projet.
- Créez un client Assembler PDF.
- Créez le document DDX.
- Convertissez le document DDX.
- Définissez les options d’exécution.
- Désassemblez le document PDF.
- Enregistrez les documents PDF désassemblés.
Inclure les fichiers de projet
Incluez les fichiers nécessaires dans votre projet de développement. Si vous créez une application cliente à l’aide de Java, incluez les fichiers JAR nécessaires. Si vous utilisez des services Web, veillez à inclure les fichiers proxy.
Les fichiers JAR suivants doivent être ajoutés au chemin d’accès aux classes de votre projet :
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utility.jar (obligatoire si AEM Forms est déployé sur JBoss)
- jbossall-client.jar (obligatoire si AEM Forms est déployé sur JBoss)
Créer un client PDF Assembler
Avant de pouvoir effectuer une opération Assembler par programmation, créez un client de service Assembler.
Créer le document DDX
Créez un document DDX à l’aide du langage de programmation que vous utilisez. Pour créer un document DDX qui désassemble un document PDF, assurez-vous qu’il contient l’élément PDFsFromBookmarks. Convertissez le type de données utilisé pour créer le document DDX en une instance com.adobe.idp.Document si vous utilisez l’API Java. Si vous utilisez des services web, convertissez le type de données en une instance BLOB.
Convertir le document DDX
Un document DDX créé à l’aide de classes org.w3c.dom doit être converti en objet com.adobe.idp.Document. Pour effectuer cette tâche lors de l’utilisation de l’API Java, utilisez les classes de transformation XML Java. Si vous utilisez des services web, convertissez le document DDX en un objet BLOB.
Référencer un document PDF à désassembler
Pour désassembler un document PDF, référencez un fichier PDF représentant le document PDF à désassembler. Lorsqu’il est transmis au service Assembler, un document PDF distinct est renvoyé pour chaque signet de niveau 1 dans le document.
Définir des options de temps d’exécution
Vous pouvez définir des options d’exécution qui contrôlent le comportement du service Assembler lors de l’exécution d’une tâche. Par exemple, vous pouvez définir une option qui indique au service Assembler de continuer à traiter une tâche même en cas d’erreur. Pour définir les options de temps d’exécution, utilisez un objet AssemblerOptionSpec.
Désassembler le document PDF
Désassemblez le document PDF en appelant l’opération invokeDDX. Transmettez le document DDX qui a été créé de façon dynamique. Le service Assembler renvoie des documents PDF désassemblés dans un objet de collection.
Enregistrer des documents PDF désassemblés
Tous les documents PDF désassemblés sont renvoyés dans un objet de collection. Effectuez une itération sur l’objet de collection et enregistrez chaque document PDF en tant que fichier PDF.
Voir également
Créer de façon dynamique un document DDX à l’aide de l’API Java
Création dynamique d’un document DDX à l’aide de l’API de service web
Inclusion des fichiers de bibliothèque Java d’AEM Forms
Créer un document DDX de façon dynamique à l’aide de l’API Java dynamically-create-a-ddx-document-using-the-java-api
Créez un document DDX de façon dynamique et désassemblez un document PDF à l’aide de l’API Assembler Service (Java) :
-
Incluez les fichiers de projet.
Incluez les fichiers JAR clients, tels que adobe-assembler-client.jar, dans le chemin d’accès aux classes de votre projet Java.
-
Créez un client Assembler PDF.
- Créez un objet
ServiceClientFactoryqui contient des propriétés de connexion. - Créez un objet
AssemblerServiceClienten utilisant son constructeur et en transmettant l’objetServiceClientFactory.
- Créez un objet
-
Créez le document DDX.
-
Créez un objet
DocumentBuilderFactoryJava en appelant la méthodenewInstancede la classeDocumentBuilderFactory. -
Créez un objet
DocumentBuilderJava en appelant la méthodenewDocumentBuilderde l’objetDocumentBuilderFactory. -
Appelez la méthode
newDocumentde l’objetDocumentBuilderpour instancier un objetorg.w3c.dom.Document. -
Créez l’élément racine du document DDX en appelant la méthode
createElementde l’objetorg.w3c.dom.Document. Cette méthode crée un objetElementqui représente l’élément racine. Transmettez une valeur de chaîne représentant le nom de l’élément à la méthodecreateElement. Convertissez la valeur de retour enElement. Ensuite, définissez une valeur pour l’élément enfant en appelant sa méthodesetAttribute. Enfin, ajoutez l’élément à l’élément d’en-tête en appelant sa méthodeappendChildet transmettez l’objet d’élément enfant en tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :Element root = (Element)document.createElement("DDX"); root.setAttribute("xmlns","https://ns.adobe.com/DDX/1.0/"); document.appendChild(root); -
Créez l’élément
PDFsFromBookmarksen appelant la méthodecreateElementde l’objetDocument. Transmettez une valeur de chaîne représentant le nom de l’élément à la méthodecreateElement. Convertissez la valeur de retour enElement. Définissez une valeur pour l’élémentPDFsFromBookmarksen appelant sa méthodesetAttribute. Ajoutez l’élémentPDFsFromBookmarksà l’élémentDDXen appelant la méthodeappendChildde l’élément DDX. Transmettez l’objet d’élémentPDFsFromBookmarksen tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :Element PDFsFromBookmarks = (Element)document.createElement("PDFsFromBookmarks"); PDFsFromBookmarks.setAttribute("prefix","stmt"); root.appendChild(PDFsFromBookmarks); -
Créez un élément
PDFen appelant la méthodecreateElementde l’objetDocument. Transmettez une valeur de chaîne qui représente le nom de l’élément. Convertissez la valeur de retour enElement. Définissez une valeur pour l’élémentPDFen appelant sa méthodesetAttribute. Ajoutez l’élémentPDFà l’élémentPDFsFromBookmarksen appelant la méthodeappendChildde l’élémentPDFsFromBookmarks. Transmettez l’objet d’élémentPDFen tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :Element PDF = (Element)document.createElement("PDF"); PDF.setAttribute("source","AssemblerResultPDF.pdf"); PDFsFromBookmarks.appendChild(PDF);
-
-
Convertissez le document DDX.
- Créez un objet
javax.xml.transform.Transformeren appelant la méthode statiquenewInstancede lʼobjetjavax.xml.transform.Transformer. - Créez un objet
Transformeren appelant la méthodenewTransformerde l’objetTransformerFactory. - Créez un objet
ByteArrayOutputStreamen utilisant son constructeur. - Créez un objet
javax.xml.transform.dom.DOMSourceen utilisant son constructeur. Transmettez l’objetorg.w3c.dom.Documentqui représente le document DDX. - Créez un objet
javax.xml.transform.dom.DOMSourceen utilisant son constructeur et en transmettant l’objetByteArrayOutputStream. - Renseignez l’objet
ByteArrayOutputStreamJava en appelant la méthodetransformde l’objetjavax.xml.transform.Transformer. Transmettez les objetsjavax.xml.transform.dom.DOMSourceetjavax.xml.transform.stream.StreamResult. - Créez un tableau d’octets et affectez la taille de l’objet
ByteArrayOutputStreamau tableau d’octets. - Renseignez le tableau dʼoctets en appelant la méthode
toByteArrayde lʼobjetByteArrayOutputStream. - Créez un objet
com.adobe.idp.Documenten utilisant son constructeur et en transmettant le tableau d’octets.
- Créez un objet
-
Référencez un document de PDF à désassembler.
-
Créez un objet
java.util.Mapservant à stocker des documents PDF d’entrée à l’aide d’un constructeurHashMap. -
Créez un objet
java.io.FileInputStreamen utilisant son constructeur et en transmettant l’emplacement du document PDF à désassembler. -
Créez un objet
com.adobe.idp.Document. Transmettez l’objetjava.io.FileInputStreamcontenant le document PDF à désassembler. -
Ajoutez une entrée à l’objet
java.util.Mapen appelant sa méthodeputet en transmettant les arguments suivants :- Une valeur de chaîne qui représente le nom de la clé. Cette valeur doit correspondre à celle de l’élément source PDF spécifié dans le document DDX. (Dans le document DDX créé dynamiquement, la valeur est
AssemblerResultPDF.pdf.) - Un objet
com.adobe.idp.Documentqui contient le document PDF à désassembler.
- Une valeur de chaîne qui représente le nom de la clé. Cette valeur doit correspondre à celle de l’élément source PDF spécifié dans le document DDX. (Dans le document DDX créé dynamiquement, la valeur est
-
-
Définissez les options d’exécution.
- Créez un objet
AssemblerOptionSpecqui stocke les options d’exécution en utilisant son constructeur. - Définissez les options d’exécution pour répondre à vos exigences professionnelles en appelant une méthode appartenant à l’objet
AssemblerOptionSpec. Par exemple, pour demander au service Assembler de continuer à traiter une tâche en cas d’erreur, appelez la méthodesetFailOnErrorde l’objetAssemblerOptionSpecet transmettezfalse.
- Créez un objet
-
Désassemblez le document PDF.
Appelez la méthode
invokeDDXde l’objetAssemblerServiceClientet transmettez les valeurs suivantes :- Un objet
com.adobe.idp.Documentreprésentant le document DDX créé dynamiquement - Un objet
java.util.Mapcontenant le document PDF à désassembler - Un objet
com.adobe.livecycle.assembler.client.AssemblerOptionSpecspécifiant les options d’exécution, notamment la police par défaut et le niveau de journalisation de la tâche
La méthode
invokeDDXrenvoie un objetcom.adobe.livecycle.assembler.client.AssemblerResultcontenant les documents PDF désassemblés et les exceptions survenues. - Un objet
-
Enregistrez les documents PDF désassemblés.
Pour obtenir des documents PDF désassemblés, procédez comme suit :
- Appelez la méthode
getDocumentsde l’objetAssemblerResult. Cette méthode renvoie un objetjava.util.Map. - Effectuez une itération à l’aide de l’objet
java.util.Mapjusqu’à ce que vous trouviez l’objetcom.adobe.idp.Documentrésultant. - Appelez la méthode
copyToFilede l’objetcom.adobe.idp.Documentpour extraire le document PDF.
- Appelez la méthode
Voir également
Démarrage rapide (mode SOAP) : création dynamique d’un document DDX à l’aide de l’API Java
Création dynamique d’un document DDX à l’aide de l’API de service web dynamically-create-a-ddx-document-using-the-web-service-api
Créez de manière dynamique un document DDX et désassemblez un document PDF à l’aide de l’API du service Assembler (service web) :
-
Incluez les fichiers de projet.
Créez un projet Microsoft .NET qui utilise MTOM. Veillez à utiliser la définition WSDL suivante lors de la définition d’une référence de service :
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.note note NOTE Remplacez localhostpar l’adresse IP du serveur hébergeant AEM Forms. -
Créez un client Assembler PDF.
-
Créez un objet
AssemblerServiceClienten utilisant son constructeur par défaut. -
Créez un objet
AssemblerServiceClient.Endpoint.Addressen utilisant le constructeurSystem.ServiceModel.EndpointAddress. Transmettez une valeur de chaîne qui spécifie le WSDL au service AEM Forms (par exemple,http://localhost:8080/soap/services/AssemblerService?blob=mtom). Vous n’avez pas besoin d’utiliser l’attributlc_version. Cet attribut est utilisé lorsque vous créez une référence de service. -
Créez un objet
System.ServiceModel.BasicHttpBindingen récupérant la valeur du champAssemblerServiceClient.Endpoint.Binding. Convertissez la valeur de retour enBasicHttpBinding. -
Définissez le champ
MessageEncodingde l’objetSystem.ServiceModel.BasicHttpBindingsurWSMessageEncoding.Mtom. Cette valeur garantit l’utilisation de MTOM. -
Activez l’authentification HTTP de base en effectuant les tâches suivantes :
- Attribuez le nom d’utilisateur AEM forms au champ
AssemblerServiceClient.ClientCredentials.UserName.UserName. - Attribuez la valeur de mot de passe correspondante au champ
AssemblerServiceClient.ClientCredentials.UserName.Password. - Attribuez la valeur constante
HttpClientCredentialType.Basicau champBasicHttpBindingSecurity.Transport.ClientCredentialType. - Attribuez la valeur constante
BasicHttpSecurityMode.TransportCredentialOnlyau champBasicHttpBindingSecurity.Security.Mode.
- Attribuez le nom d’utilisateur AEM forms au champ
-
-
Créez le document DDX.
-
Créez un objet
System.Xml.XmlElementen utilisant son constructeur. -
Créez l’élément racine du document DDX en appelant la méthode
CreateElementde l’objetXmlElement. Cette méthode crée un objetElementqui représente l’élément racine. Transmettez une valeur de chaîne représentant le nom de l’élément à la méthodeCreateElement. Définissez une valeur pour l’élément DDX en appelant sa méthodeSetAttribute. Enfin, ajoutez l’élément au document DDX en appelant la méthodeAppendChildde l’objetXmlElement. Transmettez l’objet DDX en tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :System.Xml.XmlElement root = ddx.CreateElement("DDX"); root.SetAttribute("xmlns", "https://ns.adobe.com/DDX/1.0/"); ddx.AppendChild(root); -
Créez l’élément
PDFsFromBookmarksdu document DDX en appelant la méthodeCreateElementde l’objetXmlElement. Transmettez une valeur de chaîne représentant le nom de l’élément à la méthodeCreateElement. Ensuite, définissez une valeur pour l’élément en appelant sa méthodeSetAttribute. Ajoutez l’élémentPDFsFromBookmarksà l’élément racine en appelant la méthodeAppendChildde l’élémentDDX. Transmettez l’objet d’élémentPDFsFromBookmarksen tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :XmlElement PDFsFromBookmarks = ddx.CreateElement("PDFsFromBookmarks"); PDFsFromBookmarks.SetAttribute("prefix", "stmt"); root.AppendChild(PDFsFromBookmarks); -
Créez l’élément
PDFdu document DDX en appelant la méthodeCreateElementde l’objetXmlElement. Transmettez une valeur de chaîne représentant le nom de l’élément à la méthodeCreateElement. Ensuite, définissez une valeur pour l’élément enfant en appelant sa méthodeSetAttribute. Ajoutez l’élémentPDFà l’élémentPDFsFromBookmarksen appelant la méthodeAppendChildde l’élémentPDFsFromBookmarks. Transmettez l’objet d’élémentPDFen tant qu’argument. Les lignes de code suivantes illustrent cette logique dʼapplication :XmlElement PDF = ddx.CreateElement("PDF"); PDF.SetAttribute("source", "AssemblerResultPDF.pdf"); PDFsFromBookmarks.AppendChild(PDF);
-
-
Convertissez le document DDX.
-
Créez un objet
System.IO.MemoryStreamen utilisant son constructeur. -
Renseignez l’objet
MemoryStreamavec le document DDX en utilisant l’objetXmlElementqui représente le document DDX. Appelez la méthodeSavede l’objetXmlElementet transmettez l’objetMemoryStream. -
Créez un tableau d’octets et renseignez-le avec les données contenues dans l’objet
MemoryStream. Le code suivant présente la logique de cette application :int bufLen = Convert.ToInt32(stream.Length); byte[] byteArray = new byte[bufLen]; stream.Position = 0; int count = stream.Read(byteArray, 0, bufLen); -
Créez un objet
BLOB. Affectez le tableau d’octets au champMTOMde l’objetBLOB.
-
-
Référencez un document de PDF à désassembler.
- Créez un objet
BLOBen utilisant son constructeur. L’objetBLOBsert à stocker le document PDF d’entrée. Cet objetBLOBest transmis àinvokeOneDocumentcomme argument. - Créez un objet
System.IO.FileStreamen appelant son constructeur. Transmettez une valeur de chaîne qui représente l’emplacement du fichier du document PDF d’entrée et le mode d’ouverture du fichier. - Créez un tableau d’octets qui stocke le contenu de l’objet
System.IO.FileStream. Vous pouvez déterminer la taille du tableau d’octets en obtenant la propriétéLengthde l’objetSystem.IO.FileStream. - Renseignez le tableau d’octets avec les données de diffusion en appelant la méthode
Readde l’objetSystem.IO.FileStreamet en transmettant le tableau d’octets, la position de départ et la longueur du flux à lire. - Renseignez l’objet
BLOBen affectant le contenu du tableau d’octets à sa propriétéMTOM.
- Créez un objet
-
Définissez les options d’exécution.
- Créez un objet
AssemblerOptionSpecqui stocke les options d’exécution en utilisant son constructeur. - Définissez les options d’exécution pour répondre à vos exigences professionnelles en attribuant une valeur à un membre de données qui appartient à l’objet
AssemblerOptionSpec. Par exemple, pour demander au service Assembler de continuer à traiter une tâche en cas d’erreur, affectezfalseau membre de donnéesfailOnErrorde l’objetAssemblerOptionSpec.
- Créez un objet
-
Désassemblez le document PDF.
Appelez la méthode
invokeDDXde l’objetAssemblerServiceClientet transmettez les valeurs suivantes :- Un objet
BLOBqui représente le document DDX créé dynamiquement. - Tableau
mapItemqui contient le document PDF d’entrée. - Un objet
AssemblerOptionSpecqui spécifie les options d’exécution.
La méthode
invokeDDXrenvoie un objetAssemblerResultcontenant les résultats de la tâche et les exceptions survenues. - Un objet
-
Enregistrez les documents PDF désassemblés.
Pour obtenir les documents PDF nouvellement créés, procédez comme suit :
- Accédez au champ
documentsde l’objetAssemblerResult, qui est un objetMapcontenant les documents PDF désassemblés. - Effectuez une itération par le biais de l’objet
Mappour obtenir chaque document généré. Convertissez ensuite lavaluede ce membre du tableau en un objetBLOB. - Extrayez les données binaires représentant le document PDF en accédant à la propriété
MTOMde son objetBLOB. Cette opération renvoie un tableau d’octets que vous pouvez enregistrer dans un fichier PDF.
- Accédez au champ
Voir également
Appeler AEM Forms en utilisant MTOM
Appel d’AEM Forms à l’aide de SwaRef