Show Menu
SUJETS×

Préremplissage des formulaires avec des mises en page souples

Préremplissage des formulaires avec des mises en page souples

Le préremplissage de formulaires affiche les données pour les utilisateurs dans un formulaire généré. Supposons, par exemple, qu’un utilisateur se connecte à un site Web avec un nom d’utilisateur et un mot de passe. Si l’authentification réussit, l’application cliente une base de données pour obtenir des informations sur l’utilisateur. Les données sont fusionnées dans le formulaire, puis le formulaire est rendu à l’utilisateur. Par conséquent, l’utilisateur est en mesure de des données personnalisées dans le formulaire.
La préremplissage d’un formulaire présente les avantages suivants :
  • Elle permet à l’utilisateur d’afficher des données personnalisées dans un formulaire.
  • Réduit la quantité de saisie effectuée par l’utilisateur pour remplir un formulaire.
  • Elle assure l’intégrité des données grâce au contrôle du placement des données.
Les deux sources de données XML suivantes peuvent préremplir un formulaire :
  • Source de données XDP, XML conforme à la syntaxe XFA (ou données XFDF pour préremplir un formulaire créé à l’aide d’Acrobat).
  • Source de données XML arbitraire qui contient des paires nom/valeur correspondant aux noms de champ du formulaire (les exemples de cette section utilisent une source de données XML arbitraire).
Un élément XML doit exister pour chaque champ de formulaire que vous souhaitez préremplir. Le nom de l’élément XML doit correspondre au nom du champ. Un élément XML est ignoré s’il ne correspond pas à un champ de formulaire ou si le nom de l’élément XML ne correspond pas au nom du champ. Il n’est pas nécessaire de faire correspondre l’ordre dans lequel les éléments XML sont affichés, tant que tous les éléments XML sont spécifiés.
Lorsque vous préremplissez un formulaire qui contient déjà des données, vous devez spécifier les données qui sont déjà affichées dans la source de données XML. Supposons qu’un formulaire contenant 10 champs comporte des données dans quatre champs. Supposons ensuite que vous souhaitiez préremplir les six champs restants. Dans ce cas, vous devez spécifier 10 éléments XML dans la source de données XML utilisée pour préremplir le formulaire. Si vous ne spécifiez que six éléments, les quatre champs d’origine sont vides.
Vous pouvez, par exemple, préremplir un formulaire tel que l’exemple de formulaire de confirmation. (Voir "Formulaire de confirmation" dans Rendu de formulaires PDF interactifs.)
Pour préremplir l’exemple de formulaire de confirmation, vous devez créer une source de données XML contenant trois éléments XML qui correspondent aux trois champs du formulaire. Ce formulaire contient les trois champs suivants : FirstName , LastName et Amount . La première étape consiste à créer une source de données XML contenant des éléments XML qui correspondent aux champs situés dans la conception de formulaire. L’étape suivante consiste à affecter des valeurs de données aux éléments XML, comme le montre le code XML suivant.
     <Untitled>
         <FirstName>Jerry</FirstName>
         <LastName>Johnson</LastName>
         <Amount>250000</Amount>
     </Untitled>

Après avoir prérempli le formulaire de confirmation avec cette source de données XML, puis rendu le formulaire, les valeurs de données que vous avez attribuées aux éléments XML s’affichent, comme illustré dans le diagramme suivant.

Préremplissage de formulaires avec des dispositions à disposition souple

Les formulaires avec disposition souple sont utiles pour afficher une quantité indéterminée de données pour les utilisateurs. Comme la disposition du formulaire s’ajuste automatiquement à la quantité de données fusionnées, vous n’avez pas besoin de prédéterminer une disposition fixe ou un nombre de pages pour le formulaire, comme vous le devez pour un formulaire avec une disposition fixe.
En règle générale, un formulaire est renseigné par des données obtenues lors de l’exécution. Par conséquent, vous pouvez préremplir un formulaire en créant une source de données XML en mémoire et en plaçant les données directement dans la source de données XML en mémoire.
Prenons l’exemple d’une application Web, telle qu’une boutique en ligne. Une fois qu’un acheteur en ligne a fini d’acheter des articles, tous les articles achetés sont placés dans une source de données XML en mémoire utilisée pour préremplir un formulaire. Le diagramme suivant illustre ce processus, qui est expliqué dans le tableau suivant le diagramme.
Le tableau suivant décrit les étapes de ce diagramme.
Étape
Description
1
Un utilisateur achète des éléments dans une boutique en ligne Web.
2
Une fois que l’utilisateur a fini d’acheter des éléments et cliqué sur le bouton Envoyer, une source de données XML en mémoire est créée. Les éléments achetés et les informations utilisateur sont placés dans la source de données XML en mémoire.
3
La source de données XML est utilisée pour préremplir un formulaire de bon de commande (un exemple de ce formulaire est illustré à la suite de ce tableau).
4
Le formulaire de bon de commande est rendu au navigateur Web client.
Le diagramme suivant illustre un exemple de formulaire de bon de commande. Les informations contenues dans le tableau peuvent être ajustées au nombre d’enregistrements dans les données XML.
Un formulaire peut être prérempli avec des données provenant d’autres sources, telles qu’une base de données d’entreprise ou des applications externes.

Considérations relatives à la conception de formulaire

Les formulaires avec disposition souple sont basés sur les conceptions de formulaire créées dans Designer. Une conception de formulaire spécifie un ensemble de règles de disposition, de présentation et de capture de données, y compris le calcul des valeurs en fonction des entrées utilisateur. Les règles sont appliquées lorsque des données sont saisies dans un formulaire. Les champs ajoutés à un formulaire sont des sous-formulaires qui se trouvent dans la conception de formulaire. Par exemple, dans le formulaire de bon de commande illustré dans le diagramme précédent, chaque ligne est un sous-formulaire. Pour plus d’informations sur la création d’une conception de formulaire contenant des sous-formulaires, voir Création d’un formulaire de bon de commande doté d’une disposition souple.

Présentation des sous-groupes de données

Une source de données XML est utilisée pour préremplir les formulaires avec des mises en page fixes et des mises en page à disposition souple. Cependant, la différence est qu’une source de données XML qui préremplit un formulaire avec une disposition souple contient des éléments XML qui se répètent et sont utilisés pour préremplir les sous-formulaires qui sont répétés dans le formulaire. Ces éléments XML répétés sont appelés sous-groupes de données.
Une source de données XML utilisée pour préremplir le formulaire de bon de commande illustré dans le diagramme précédent contient quatre sous-groupes de données qui se répètent. Chaque sous-groupe de données correspond à un article acheté. Les articles achetés sont un écran, une lampe de bureau, un téléphone et un carnet d'adresses.
La source de données XML suivante est utilisée pour préremplir le formulaire de bon de commande.
     <header>
         <!-- XML elements used to prepopulate non-repeating fields such as address
         <!and city
         <txtPONum>8745236985</txtPONum>
         <dtmDate>2004-02-08</dtmDate>
         <txtOrderedByCompanyName>Any Company Name</txtOrderedByCompanyName>
         <txtOrderedByAddress>555, Any Blvd.</txtOrderedByAddress>
         <txtOrderedByCity>Any City</txtOrderedByCity>
         <txtOrderedByStateProv>ST</txtOrderedByStateProv>
         <txtOrderedByZipCode>12345</txtOrderedByZipCode>
         <txtOrderedByCountry>Any Country</txtOrderedByCountry>
         <txtOrderedByPhone>(123) 456-7890</txtOrderedByPhone>
         <txtOrderedByFax>(123) 456-7899</txtOrderedByFax>
         <txtOrderedByContactName>Contact Name</txtOrderedByContactName>
         <txtDeliverToCompanyName>Any Company Name</txtDeliverToCompanyName>
         <txtDeliverToAddress>7895, Any Street</txtDeliverToAddress>
         <txtDeliverToCity>Any City</txtDeliverToCity>
         <txtDeliverToStateProv>ST</txtDeliverToStateProv>
         <txtDeliverToZipCode>12346</txtDeliverToZipCode>
         <txtDeliverToCountry>Any Country</txtDeliverToCountry>
         <txtDeliverToPhone>(123) 456-7891</txtDeliverToPhone>
         <txtDeliverToFax>(123) 456-7899</txtDeliverToFax>
         <txtDeliverToContactName>Contact Name</txtDeliverToContactName>
     </header>
     <detail>
         <!-- A data subgroup that contains information about the monitor>
         <txtPartNum>00010-100</txtPartNum>
         <txtDescription>Monitor</txtDescription>
         <numQty>1</numQty>
         <numUnitPrice>350.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the desk lamp>
         <txtPartNum>00010-200</txtPartNum>
         <txtDescription>Desk lamps</txtDescription>
         <numQty>3</numQty>
         <numUnitPrice>55.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the Phone>
             <txtPartNum>00025-275</txtPartNum>
             <txtDescription>Phone</txtDescription>
             <numQty>5</numQty>
             <numUnitPrice>85.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the address book>
         <txtPartNum>00300-896</txtPartNum>
         <txtDescription>Address book</txtDescription>
         <numQty>2</numQty>
         <numUnitPrice>15.00</numUnitPrice>
     </detail>

Notez que chaque sous-groupe de données contient quatre éléments XML qui correspondent à ces informations :
  • Numéro de référence des éléments
  • Description des éléments
  • Quantité d'articles
  • Prix unitaire
Le nom de l’élément XML parent d’un sous-groupe de données doit correspondre au nom du sous-formulaire situé dans la conception de formulaire. Par exemple, dans le diagramme précédent, notez que le nom de l’élément XML parent du sous-groupe de données est detail . Cela correspond au nom du sous-formulaire situé dans la conception de formulaire sur laquelle le formulaire de bon de commande est basé. Si le nom de l’élément XML parent du sous-groupe de données et le sous-formulaire ne correspondent pas, un formulaire côté serveur n’est pas prérempli.
Chaque sous-groupe de données doit contenir des éléments XML qui correspondent aux noms des champs dans le sous-formulaire. Le detail sous-formulaire de la conception de formulaire contient les champs suivants :
  • txtPartNum
  • txtDescription
  • numQty
  • numUnitPrice
Si vous tentez de préremplir un formulaire avec une source de données contenant des éléments XML qui se répètent et que vous définissez l’ RenderAtClient option sur No , seul le premier enregistrement de données est fusionné dans le formulaire. Pour vous assurer que tous les enregistrements de données sont fusionnés dans le formulaire, définissez la variable RenderAtClient sur Yes . Pour plus d’informations sur l’ RenderAtClient option, voir Rendu des formulaires sur le client .
For more information about the Forms service, see Services Reference for AEM Forms .

Résumé des étapes

Pour préremplir un formulaire avec une disposition souple, effectuez le suivant :
  1. Incluez des fichiers de projet.
  2. Créez une source de données XML en mémoire.
  3. Convertir la source de données XML.
  4. Générer un formulaire prérempli.
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.
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.
Création d’une source de données XML en mémoire
Vous pouvez utiliser org.w3c.dom des classes pour créer une source de données XML en mémoire afin de préremplir un formulaire avec une disposition souple. Vous devez placer les données dans une source de données XML conforme au formulaire. Pour plus d’informations sur la relation entre un formulaire avec une disposition souple et la source de données XML, voir Présentation des sous-groupes de données.
Conversion de la source de données XML
Une source de données XML en mémoire créée à l’aide de org.w3c.dom com.adobe.idp.Document classes peut être convertie en objet avant de pouvoir être utilisée pour préremplir un formulaire. Une source de données XML en mémoire peut être convertie à l’aide de classes de transformation XML Java.
Si vous utilisez le fichier WSDL du service Forms pour préremplir un formulaire, vous devez convertir un org.w3c.dom.Document objet en BLOB objet.
Rendu d’un formulaire prérempli
Vous générez un formulaire prérempli comme un autre formulaire. La seule différence est que vous utilisez l’ com.adobe.idp.Document objet qui contient la source de données XML pour préremplir le formulaire.
Voir également

Préremplissage de formulaires à l’aide de l’API Java

Pour préremplir un formulaire avec une disposition souple à l’aide de l’API Forms (Java), procédez comme suit :
  1. Inclure les fichiers de projet
    Incluez des fichiers JAR client, tels que adobe-forms-client.jar, dans le chemin de classe de votre projet Java. Pour plus d’informations sur l’emplacement de ces fichiers, voir Inclusion des fichiers de bibliothèque Java AEM Forms .
  2. Création d’une source de données XML en mémoire
    • Créez un objet Java DocumentBuilderFactory en appelant la DocumentBuilderFactory méthode de la newInstance classe.
    • Créez un DocumentBuilder objet Java en appelant la DocumentBuilderFactory newDocumentBuilder méthode de l’objet.
    • Appelez la méthode DocumentBuilder de l’objet pour instancier un newDocument org.w3c.dom.Document objet.
    • Créez l’élément racine de la source de données XML en appelant la org.w3c.dom.Document createElement méthode de l’objet. Cela crée un Element objet qui représente l’élément racine. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément racine au en appelant la Document méthode de l’ appendChild objet et transmettez l’objet d’élément racine en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element root = (Element)document.createElement("transaction");  document.appendChild(root);
    • Créez l’élément d’en-tête de la source de données XML en appelant la Document createElement méthode de l’objet. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément d’en-tête à l’élément racine en appelant la root appendChild méthode de l’objet, puis transmettez l’objet d’élément d’en-tête en tant qu’argument. Les éléments XML ajoutés à l’élément d’en-tête correspondent à la partie statique du formulaire. Les lignes de code suivantes présentent cette logique d’application :
       Element header = (Element)document.createElement("header");  root.appendChild(header);
    • Créez un élément enfant qui appartient à l’élément d’en-tête en appelant la Document createElement méthode de l’objet et transmettez une valeur de chaîne qui représente le nom de l’élément. Convertissez la valeur de retour en Element . Ensuite, définissez une valeur pour l’élément enfant en appelant sa appendChild méthode et transmettez la Document createTextNode méthode de l’objet en tant qu’argument. Spécifiez une valeur de chaîne qui apparaît comme valeur de l’élément enfant. Enfin, ajoutez l’élément enfant à l’élément d’en-tête en appelant la appendChild méthode de l’élément d’en-tête et transmettez l’objet d’élément enfant en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);
    • Ajouter tous les éléments restants à l’élément d’en-tête en répétant la dernière sous-étape de chaque champ apparaissant dans la partie statique du formulaire (dans le diagramme de la source de données XML, ces champs sont indiqués dans la section A. (voir Présentation des sous-groupes de données).
    • Créez l’élément de détail de la source de données XML en appelant la Document createElement méthode de l’objet. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément detail à l’élément root en appelant la root appendChild méthode de l’objet, puis transmettez l’objet detail element en tant qu’argument. Les éléments XML ajoutés à l’élément de détail correspondent à la partie dynamique du formulaire. Les lignes de code suivantes présentent cette logique d’application :
       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);
    • Créez un élément enfant qui appartient à l’élément de détail en appelant la Document createElement méthode de l’objet et transmettez une valeur de chaîne qui représente le nom de l’élément. Convertissez la valeur de retour en Element . Ensuite, définissez une valeur pour l’élément enfant en appelant sa appendChild méthode et transmettez la Document createTextNode méthode de l’objet en tant qu’argument. Spécifiez une valeur de chaîne qui apparaît comme valeur de l’élément enfant. Enfin, ajoutez l’élément enfant à l’élément detail en appelant la appendChild méthode de l’élément detail et transmettez l’objet element enfant en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);
    • Répétez la dernière étape pour tous les éléments XML à ajouter à l’élément de détail. Pour créer correctement la source de données XML utilisée pour remplir le formulaire de bon de commande, vous devez ajouter les éléments XML suivants à l’élément de détail : txtDescription , numQty et numUnitPrice .
    • Répétez les deux dernières étapes secondaires pour tous les éléments de données utilisés pour préremplir le formulaire.
  3. Conversion de la source de données XML
    • Créez un javax.xml.transform.Transformer objet en appelant la javax.xml.transform.Transformer méthode statique de l’ newInstance objet.
    • Créez un Transformer objet en appelant la TransformerFactory méthode de l’ newTransformer objet.
    • Créez un objet ByteArrayOutputStream en utilisant son constructeur.
    • Créez un javax.xml.transform.dom.DOMSource objet en utilisant son constructeur et en transmettant l’ org.w3c.dom.Document objet créé à l’étape 1.
    • Créez un objet javax.xml.transform.dom.DOMSource en utilisant son constructeur et en transmettant l’objet ByteArrayOutputStream .
    • Renseignez l’ ByteArrayOutputStream objet Java en appelant la javax.xml.transform.Transformer méthode de l’ transform objet et en transmettant les objets javax.xml.transform.dom.DOMSource et javax.xml.transform.stream.StreamResult .
    • Créez un tableau d’octets et affectez la taille de l’ ByteArrayOutputStream objet au tableau d’octets.
    • Renseignez le tableau d’octets en appelant la ByteArrayOutputStream toByteArray méthode de l’objet.
    • Create a com.adobe.idp.Document object by using its constructor and passing the byte array.
  4. Rendu d’un formulaire prérempli
    Appelez la méthode FormsServiceClient renderPDFForm de l’objet et transmettez les valeurs suivantes :
    • Valeur de chaîne qui spécifie le nom de la conception de formulaire, y compris l’extension du nom de fichier.
    • Objet com.adobe.idp.Document contenant des données à fusionner avec le formulaire. Veillez à utiliser l’ com.adobe.idp.Document objet créé aux étapes 1 et 2.
    • Objet PDFFormRenderSpec qui stocke les options d’exécution.
    • Objet URLSpec contenant des valeurs URI requises par le service Forms.
    • Objet java.util.HashMap qui stocke les pièces jointes. Il s’agit d’un paramètre facultatif que vous pouvez spécifier null si vous ne souhaitez pas joindre de fichiers au formulaire.
    La renderPDFForm méthode renvoie un FormsResult objet qui contient un flux de données de formulaire qui doit être écrit dans le navigateur Web client.
    • Créez un javax.servlet.ServletOutputStream objet utilisé pour envoyer un flux de données de formulaire au navigateur Web client.
    • Créez un com.adobe.idp.Document objet en appelant la FormsResult méthode de l’ getOutputContent objet.
    • Créez un java.io.InputStream objet en appelant la com.adobe.idp.Document méthode de l’ getInputStream objet.
    • Créez un tableau d’octets pour le remplir avec le flux de données du formulaire en appelant la InputStream read méthode de l’objet et en transmettant le tableau d’octets en tant qu’argument.
    • Appelez la javax.servlet.ServletOutputStream write méthode de l’objet pour envoyer le flux de données du formulaire au navigateur Web client. Transmettez le tableau d’octets à la write méthode.
Voir également

Préremplissage de formulaires à l’aide de l’API de service Web

Pour préremplir un formulaire avec une disposition souple à l’aide de l’API Forms (service Web), procédez comme suit :
  1. Inclure les fichiers de projet
  2. Création d’une source de données XML en mémoire
    • Créez un objet Java DocumentBuilderFactory en appelant la DocumentBuilderFactory méthode de la newInstance classe.
    • Créez un DocumentBuilder objet Java en appelant la DocumentBuilderFactory newDocumentBuilder méthode de l’objet.
    • Appelez la méthode DocumentBuilder de l’objet pour instancier un newDocument org.w3c.dom.Document objet.
    • Créez l’élément racine de la source de données XML en appelant la org.w3c.dom.Document createElement méthode de l’objet. Cela crée un Element objet qui représente l’élément racine. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément racine au en appelant la Document méthode de l’ appendChild objet et transmettez l’objet d’élément racine en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element root = (Element)document.createElement("transaction");  document.appendChild(root);
    • Créez l’élément d’en-tête de la source de données XML en appelant la Document createElement méthode de l’objet. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément d’en-tête à l’élément racine en appelant la root appendChild méthode de l’objet, puis transmettez l’objet d’élément d’en-tête en tant qu’argument. Les éléments XML ajoutés à l’élément d’en-tête correspondent à la partie statique du formulaire. Les lignes de code suivantes présentent cette logique d’application :
       Element header = (Element)document.createElement("header");  root.appendChild(header);
    • Créez un élément enfant qui appartient à l’élément d’en-tête en appelant la Document createElement méthode de l’objet et transmettez une valeur de chaîne qui représente le nom de l’élément. Convertissez la valeur de retour en Element . Ensuite, définissez une valeur pour l’élément enfant en appelant sa appendChild méthode et transmettez la Document createTextNode méthode de l’objet en tant qu’argument. Spécifiez une valeur de chaîne qui apparaît comme valeur de l’élément enfant. Enfin, ajoutez l’élément enfant à l’élément d’en-tête en appelant la appendChild méthode de l’élément d’en-tête et transmettez l’objet d’élément enfant en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);
    • Ajouter tous les éléments restants à l’élément d’en-tête en répétant la dernière sous-étape de chaque champ apparaissant dans la partie statique du formulaire (dans le diagramme de la source de données XML, ces champs sont indiqués dans la section A. (voir Présentation des sous-groupes de données).
    • Créez l’élément de détail de la source de données XML en appelant la Document createElement méthode de l’objet. Transmettez une valeur de chaîne représentant le nom de l’élément à la createElement méthode. Convertissez la valeur de retour en Element . Ensuite, ajoutez l’élément detail à l’élément root en appelant la root appendChild méthode de l’objet, puis transmettez l’objet detail element en tant qu’argument. Les éléments XML ajoutés à l’élément de détail correspondent à la partie dynamique du formulaire. Les lignes de code suivantes présentent cette logique d’application :
       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);
    • Créez un élément enfant qui appartient à l’élément de détail en appelant la Document createElement méthode de l’objet et transmettez une valeur de chaîne qui représente le nom de l’élément. Convertissez la valeur de retour en Element . Ensuite, définissez une valeur pour l’élément enfant en appelant sa appendChild méthode et transmettez la Document createTextNode méthode de l’objet en tant qu’argument. Spécifiez une valeur de chaîne qui apparaît comme valeur de l’élément enfant. Enfin, ajoutez l’élément enfant à l’élément detail en appelant la appendChild méthode de l’élément detail et transmettez l’objet element enfant en tant qu’argument. Les lignes de code suivantes présentent cette logique d’application :
       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);
    • Répétez la dernière étape pour tous les éléments XML à ajouter à l’élément de détail. Pour créer correctement la source de données XML utilisée pour remplir le formulaire de bon de commande, vous devez ajouter les éléments XML suivants à l’élément de détail : txtDescription , numQty et numUnitPrice .
    • Répétez les deux dernières étapes secondaires pour tous les éléments de données utilisés pour préremplir le formulaire.
  3. Conversion de la source de données XML
    • Créez un javax.xml.transform.Transformer objet en appelant la javax.xml.transform.Transformer méthode statique de l’ newInstance objet.
    • Créez un Transformer objet en appelant la TransformerFactory méthode de l’ newTransformer objet.
    • Créez un objet ByteArrayOutputStream en utilisant son constructeur.
    • Créez un javax.xml.transform.dom.DOMSource objet en utilisant son constructeur et en transmettant l’ org.w3c.dom.Document objet créé à l’étape 1.
    • Créez un objet javax.xml.transform.dom.DOMSource en utilisant son constructeur et en transmettant l’objet ByteArrayOutputStream .
    • Renseignez l’ ByteArrayOutputStream objet Java en appelant la javax.xml.transform.Transformer méthode de l’ transform objet et en transmettant les objets javax.xml.transform.dom.DOMSource et javax.xml.transform.stream.StreamResult .
    • Créez un tableau d’octets et affectez la taille de l’ ByteArrayOutputStream objet au tableau d’octets.
    • Renseignez le tableau d’octets en appelant la ByteArrayOutputStream toByteArray méthode de l’objet.
    • Créez un BLOB objet à l’aide de son constructeur, appelez sa setBinaryData méthode et transmettez le tableau d’octets.
  4. Rendu d’un formulaire prérempli
    Appelez la méthode FormsService renderPDFForm de l’objet et transmettez les valeurs suivantes :
    • Valeur de chaîne qui spécifie le nom de la conception de formulaire, y compris l’extension du nom de fichier.
    • Objet BLOB contenant des données à fusionner avec le formulaire. Assurez-vous d’utiliser l’ BLOB objet créé aux étapes 1 et 2.
    • Objet PDFFormRenderSpecc qui stocke les options d’exécution. For more information, see AEM Forms API Reference .
    • Objet URLSpec contenant des valeurs URI requises par le service Forms.
    • Objet java.util.HashMap qui stocke les pièces jointes. Il s’agit d’un paramètre facultatif que vous pouvez spécifier null si vous ne souhaitez pas joindre de fichiers au formulaire.
    • Objet vide com.adobe.idp.services.holders.BLOBHolder renseigné par la méthode. Elle permet de stocker le formulaire PDF rendu.
    • Objet vide javax.xml.rpc.holders.LongHolder renseigné par la méthode. (Cet argument stocke le nombre de pages dans le formulaire).
    • Objet vide javax.xml.rpc.holders.StringHolder renseigné par la méthode. (Cet argument stocke la valeur du paramètre régional).
    • Objet vide com.adobe.idp.services.holders.FormsResultHolder qui contiendra les résultats de cette opération.
    La renderPDFForm méthode remplit l’ com.adobe.idp.services.holders.FormsResultHolder objet transmis en tant que valeur du dernier argument avec un flux de données de formulaire qui doit être écrit dans le navigateur Web client.
    • Créez un FormResult objet en obtenant la valeur du membre com.adobe.idp.services.holders.FormsResultHolder de données de l’ value objet.
    • Créez un BLOB objet contenant des données de formulaire en appelant la FormsResult méthode de l’ getOutputContent objet.
    • Obtenez le type de contenu de l’ BLOB objet en appelant sa getContentType méthode.
    • Définissez le type de contenu de l’ javax.servlet.http.HttpServletResponse objet en appelant sa setContentType méthode et en transmettant le type de contenu de l’ BLOB objet.
    • Créez un javax.servlet.ServletOutputStream objet utilisé pour écrire le flux de données du formulaire dans le navigateur Web client en appelant la javax.servlet.http.HttpServletResponse getOutputStream méthode de l’objet.
    • Créez un tableau d’octets et renseignez-le en appelant la méthode BLOB getBinaryData de l’objet. Ce affecte le contenu de l’ FormsResult objet au tableau d’octets.
    • Appelez la javax.servlet.http.HttpServletResponse write méthode de l’objet pour envoyer le flux de données du formulaire au navigateur Web client. Transmettez le tableau d’octets à la write méthode.
    La renderPDFForm méthode remplit l’ com.adobe.idp.services.holders.FormsResultHolder objet transmis en tant que valeur du dernier argument avec un flux de données de formulaire qui doit être écrit dans le navigateur Web client.
Voir également