Les applications Web permettant à un utilisateur de remplir des formulaires interactifs nécessitent que les données soient renvoyées au serveur. Le service Forms vous permet de récupérer les données saisies par l’utilisateur dans un formulaire interactif. Après avoir récupéré les données, vous pouvez les traiter pour répondre aux besoins de votre entreprise. Par exemple, vous pouvez stocker les données dans une base de données, les envoyer à une autre application, les envoyer à un autre service, fusionner les données dans une conception de formulaire, afficher les données dans un navigateur Web, etc.
Les données de formulaire sont envoyées au service Forms sous la forme de données XML ou PDF, une option définie dans Designer. Un formulaire envoyé au format XML vous permet d’extraire des valeurs de données de champ individuelles. En d’autres termes, vous pouvez extraire la valeur de chaque champ de formulaire que l’utilisateur a saisi dans le formulaire. Un formulaire envoyé en tant que données PDF est une donnée binaire et non une donnée XML. Vous pouvez enregistrer le formulaire au format PDF ou l’envoyer à un autre service. Si vous souhaitez extraire des données d’un formulaire envoyé au format XML, puis utiliser les données du formulaire pour créer un document PDF, appelez une autre opération AEM Forms. (Voir Création de Documents PDF avec des données XML envoyées).
Le diagramme suivant montre les données envoyées à un servlet Java nommé HandleData
à partir d'un formulaire interactif affiché dans un navigateur Web.
Le tableau suivant décrit les étapes du diagramme.
Étape |
Description |
---|---|
1 |
Un utilisateur remplit un formulaire interactif et clique sur le bouton Envoyer du formulaire. |
2 |
Les données sont envoyées au servlet Java |
3 |
Le servlet Java |
Lorsque les données de formulaire sont envoyées au format XML, vous pouvez récupérer les données XML qui représentent les données envoyées. Tous les champs de formulaire apparaissent sous la forme de noeuds dans un schéma XML. Les valeurs de noeud correspondent aux valeurs que l’utilisateur a renseignées. Prenons le cas d’un formulaire de prêt dans lequel chaque champ du formulaire apparaît comme noeud dans les données XML. La valeur de chaque noeud correspond à la valeur qu’un utilisateur remplit. Supposons qu’un utilisateur remplisse le formulaire de prêt avec les données affichées dans le formulaire suivant.
L’illustration suivante présente les données XML correspondantes récupérées à l’aide de l’API Client du service Forms.
Champs du formulaire de prêt. Ces valeurs peuvent être récupérées
à l’aide des classes XML Java.
La conception de formulaire doit être correctement configurée dans Designer pour que les données soient envoyées sous forme de données XML. Pour configurer correctement la conception de formulaire de manière à envoyer des données XML, assurez-vous que le bouton Envoyer situé sur la conception de formulaire est configuré pour envoyer des données XML. Pour plus d’informations sur la définition du bouton Envoyer pour envoyer des données XML, voir AEM Forms Designer.
Prenons l’exemple d’une application Web qui appelle le service Forms. Une fois que le service Forms a rendu un formulaire PDF interactif à un navigateur Web client, l’utilisateur l’a rempli et l’a renvoyé au format PDF. Lorsque le service Forms reçoit les données PDF, il peut envoyer les données PDF à un autre service ou les enregistrer dans un fichier PDF. Le diagramme suivant illustre le flux logique de l’application.
Le tableau suivant décrit les étapes de ce diagramme.
Étape |
Description |
---|---|
3 |
Une page Web contient un lien qui accède à un servlet Java qui appelle le service Forms. |
2 |
Le service Forms génère un formulaire PDF interactif dans le navigateur Web client. |
1 |
L’utilisateur remplit un formulaire interactif et clique sur un bouton d’envoi. Le formulaire est renvoyé au service Forms en tant que données PDF. Cette option est définie dans Designer. |
4 |
Le service Forms enregistre les données PDF dans un fichier PDF. |
Si les données de formulaire sont envoyées en tant que données d’URL UTF-16, l’ordinateur client nécessite Adobe Reader ou Acrobat 8.1 ou une version ultérieure. De même, si la conception de formulaire contient un bouton d’envoi contenant des données codées URL (HTTP Post) et que l’option de codage des données est UTF-16, la conception de formulaire doit être modifiée dans un éditeur de texte tel que le Bloc-notes. Vous pouvez définir l’option de codage sur UTF-16LE
ou UTF-16BE
pour le bouton d’envoi. Designer ne fournit pas cette fonctionnalité.
Pour plus d’informations sur le service Forms, voir Guide de référence des services pour AEM Forms.
Pour gérer les formulaires envoyés, effectuez les tâches suivantes :
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’un objet API Client Forms
Avant de pouvoir exécuter par programmation une opération d’API Client de service Forms, vous devez créer un client de service Forms. Si vous utilisez l’API Java, créez un objet FormsServiceClient
. Si vous utilisez l’API du service Web Forms, créez un objet FormsService
.
Récupération des données de formulaire
Pour récupérer les données de formulaire envoyées, vous appelez la méthode FormsServiceClient
de l’objet processFormSubmission
. Lorsque vous appelez cette méthode, vous devez spécifier le type de contenu du formulaire envoyé. Lorsque des données sont envoyées d’un navigateur Web client au service Forms, elles peuvent être envoyées au format XML ou PDF. Pour récupérer les données saisies dans les champs de formulaire, les données peuvent être envoyées sous forme de données XML.
Vous pouvez également récupérer les champs de formulaire d’un formulaire envoyé en tant que données PDF en définissant les options d’exécution suivantes :
processFormSubmission
en tant que paramètre de type de contenu : CONTENT_TYPE=application/pdf
.PDFToXDP
de l’objet RenderOptionsSpec
sur true
.ExportDataFormat
de l’objet RenderOptionsSpec
sur XMLData
.Vous spécifiez le type de contenu du formulaire envoyé lorsque vous appelez la méthode processFormSubmission
. La liste suivante spécifie les valeurs de type de contenu applicables :
Vous remarquerez qu’il existe trois débuts rapides correspondants associés à la section Gestion du Forms envoyé. Le début rapide Gestion des PDF forms envoyés au format PDF à l’aide de l’API Java montre comment gérer les données PDF envoyées. Le type de contenu spécifié dans ce début rapide est application/pdf
. Le début rapide Gestion des PDF forms envoyés en tant que XML à l’aide de l’API Java montre comment gérer les données XML envoyées à partir d’un formulaire PDF. Le type de contenu spécifié dans ce début rapide est text/xml
. De même, le début rapide Gestion des formulaires HTML envoyés en tant que XML à l’aide de l’API Java montre comment gérer les données XML envoyées à partir d’un formulaire HTML. Le type de contenu spécifié dans ce début rapide est application/x-www-form-urlencoded.
Vous récupérez les données de formulaire qui ont été publiées sur le service Forms et déterminez leur état de traitement. En d’autres termes, lorsque des données sont envoyées au service Forms, cela ne signifie pas nécessairement que le service Forms a terminé de traiter les données et que les données sont prêtes à être traitées. Par exemple, les données peuvent être envoyées au service Forms pour qu’un calcul puisse être effectué. Une fois le calcul terminé, le formulaire est rendu à l’utilisateur avec les résultats de calcul affichés. Avant de traiter les données envoyées, il est recommandé de déterminer si le service Forms a terminé le traitement des données.
Le service Forms renvoie les valeurs suivantes pour indiquer s’il a terminé le traitement des données :
Les calculs et validations doivent être rendus à l’utilisateur. (Voir Calcul des données de formulaire.)
Déterminez si l’envoi du formulaire contient des pièces jointes.
Forms envoyé au service Forms peut contenir des pièces jointes. Par exemple, à l’aide du volet de pièces jointes intégré d’Acrobat, un utilisateur peut sélectionner des pièces jointes à envoyer avec le formulaire. En outre, un utilisateur peut également sélectionner des pièces jointes à l’aide d’une barre d’outils HTML générée avec un fichier HTML.
Après avoir déterminé si un formulaire contient des pièces jointes, vous pouvez traiter les données. Par exemple, vous pouvez enregistrer la pièce jointe dans le système de fichiers local.
Le formulaire doit être envoyé au format PDF pour récupérer les pièces jointes. Si le formulaire est envoyé en tant que données XML, les pièces jointes ne sont pas envoyées.
Traiter les données envoyées
En fonction du type de contenu des données envoyées, vous pouvez extraire des valeurs de champ de formulaire individuelles des données XML envoyées ou enregistrer les données PDF envoyées dans un fichier PDF (ou les envoyer à un autre service). Pour extraire des champs de formulaire individuels, convertissez les données XML envoyées en une source de données XML, puis récupérez les valeurs de source de données XML à l’aide des classes org.w3c.dom
.
Voir également
Inclusion des fichiers de bibliothèque Java AEM Forms
Réglage des propriétés de la connexion
Débuts rapides de l’API du service Forms
Transmission de Documents au service Forms
Création d’Applications web renvoyant Forms
Gérez un formulaire envoyé à l’aide de l’API Forms (Java) :
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.
Création d’un objet API Client Forms
ServiceClientFactory
qui contient des propriétés de connexion.FormsServiceClient
en utilisant son constructeur et en transmettant l'objet ServiceClientFactory
.Récupération des données de formulaire
com.adobe.idp.Document
à l’aide de son constructeur et appelez la méthode getInputStream
de l’objet javax.servlet.http.HttpServletResponse
à partir du constructeur.RenderOptionsSpec
en utilisant son constructeur. Définissez la valeur du paramètre régional en appelant la méthode setLocale
de l’objet RenderOptionsSpec
et en transmettant une valeur de chaîne qui spécifie la valeur du paramètre régional.Vous pouvez demander au service Forms de créer des données XDP ou XML à partir du contenu PDF envoyé en appelant la méthode RenderOptionsSpec
de l’objet setPDF2XDP
et en transmettant true
, en appelant setXMLData
et en transmettant true
. Vous pouvez ensuite appeler la méthode getOutputXML
de l’objet FormsResult
pour récupérer les données XML qui correspondent aux données XDP/XML. (L'objet FormsResult
est renvoyé par la méthode processFormSubmission
, qui est expliquée à l'étape suivante.)
Appelez la méthode processFormSubmission
de l’objet FormsServiceClient
et transmettez les valeurs suivantes :
com.adobe.idp.Document
contenant les données du formulaire.CONTENT_TYPE=text/xml
. Pour gérer les données PDF, spécifiez la valeur de chaîne suivante pour ce paramètre : CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
, par exemple . Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Cette valeur de paramètre est facultative.RenderOptionsSpec
qui stocke les options d’exécution.La méthode processFormSubmission
renvoie un objet FormsResult
contenant les résultats de l’envoi du formulaire.
Déterminez si le service Forms a terminé de traiter les données de formulaire en appelant la méthode FormsResult
de l’objet getAction
. Si cette méthode renvoie la valeur 0
, les données sont prêtes à être traitées.
Déterminez si l’envoi du formulaire contient des pièces jointes.
FormsResult
de l’objet getAttachments
. Cette méthode renvoie un objet java.util.List
contenant des fichiers qui ont été envoyés avec le formulaire.java.util.List
pour déterminer s'il existe des pièces jointes. S’il existe des pièces jointes, chaque élément est une instance com.adobe.idp.Document
. Vous pouvez enregistrer les pièces jointes en appelant la méthode com.adobe.idp.Document
de l'objet copyToFile
et en transmettant un objet java.io.File
.Cette étape s’applique uniquement si le formulaire est envoyé au format PDF.
Traiter les données envoyées
Si le type de contenu des données est application/vnd.adobe.xdp+xml
ou text/xml
, créez une logique d’application pour récupérer les valeurs de données XML.
com.adobe.idp.Document
en appelant la méthode FormsResult
de l'objet getOutputContent
.java.io.InputStream
en appelant le constructeur java.io.DataInputStream
et en transmettant l'objet com.adobe.idp.Document
.org.w3c.dom.DocumentBuilderFactory
en appelant la méthode org.w3c.dom.DocumentBuilderFactory
statique de l'objet newInstance
.org.w3c.dom.DocumentBuilder
en appelant la méthode org.w3c.dom.DocumentBuilderFactory
de l'objet newDocumentBuilder
.org.w3c.dom.Document
en appelant la méthode org.w3c.dom.DocumentBuilder
de l'objet parse
et en transmettant l'objet java.io.InputStream
.org.w3c.dom.Document
et le nom du noeud dont vous souhaitez récupérer la valeur. Cette méthode renvoie une valeur de chaîne représentant la valeur du noeud. Dans l'exemple de code qui suit ce processus, cette méthode personnalisée est appelée getNodeText
. Le corps de cette méthode s’affiche.Si le type de contenu des données est application/pdf
, créez une logique d’application pour enregistrer les données PDF envoyées au format PDF.
com.adobe.idp.Document
en appelant la méthode FormsResult
de l'objet getOutputContent
.java.io.File
en utilisant son constructeur public. Veillez à spécifier PDF comme extension de nom de fichier.com.adobe.idp.Document
de l’objet copyToFile
et en transmettant l’objet java.io.File
.Voir également
Début rapide (mode SOAP) : Gestion des PDF forms envoyés en tant que XML à l’aide de l’API Java
Début rapide (mode SOAP) : Gestion des PDF forms envoyés au format PDF à l’aide de l’API Java
Inclusion des fichiers de bibliothèque Java AEM Forms
Réglage des propriétés de la connexion
Gérez un formulaire envoyé à l’aide de l’API Forms (service Web) :
Inclure les fichiers de projet
Création d’un objet API Client Forms
Créez un objet FormsService
et définissez des valeurs d’authentification.
Récupération des données de formulaire
Pour récupérer les données de formulaire publiées sur un servlet Java, créez un objet BLOB
à l’aide de son constructeur.
Créez un objet java.io.InputStream
en appelant la méthode javax.servlet.http.HttpServletResponse
de l'objet getInputStream
.
Créez un objet java.io.ByteArrayOutputStream
en utilisant son constructeur et en transmettant la longueur de l'objet java.io.InputStream
.
Copiez le contenu de l'objet java.io.InputStream
dans l'objet java.io.ByteArrayOutputStream
.
Créez un tableau d’octets en appelant la méthode toByteArray
de l’objet java.io.ByteArrayOutputStream
.
Renseignez l’objet BLOB
en appelant sa méthode setBinaryData
et en transmettant le tableau d’octets comme argument.
Créez un objet RenderOptionsSpec
en utilisant son constructeur. Définissez la valeur du paramètre régional en appelant la méthode setLocale
de l’objet RenderOptionsSpec
et en transmettant une valeur de chaîne qui spécifie la valeur du paramètre régional.
Appelez la méthode processFormSubmission
de l’objet FormsService
et transmettez les valeurs suivantes :
BLOB
contenant les données du formulaire.CONTENT_TYPE=text/xml
. Pour gérer les données PDF, spécifiez la valeur de chaîne suivante pour ce paramètre : CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
; par exemple, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
qui stocke les options d’exécution.BLOBHolder
vide renseigné par la méthode.javax.xml.rpc.holders.StringHolder
vide renseigné par la méthode.BLOBHolder
vide renseigné par la méthode.BLOBHolder
vide renseigné par la méthode.javax.xml.rpc.holders.ShortHolder
vide renseigné par la méthode.MyArrayOf_xsd_anyTypeHolder
vide renseigné par la méthode. Ce paramètre permet de stocker les pièces jointes envoyées avec le formulaire.FormsResultHolder
vide qui est renseigné par la méthode avec le formulaire envoyé.La méthode processFormSubmission
renseigne le paramètre FormsResultHolder
avec les résultats de l’envoi du formulaire.
Déterminez si le service Forms a terminé de traiter les données de formulaire en appelant la méthode FormsResult
de l’objet getAction
. Si cette méthode renvoie la valeur 0
, les données du formulaire sont prêtes à être traitées. Vous pouvez obtenir un objet FormsResult
en obtenant la valeur du membre de données FormsResultHolder
de l'objet value
.
Déterminez si l’envoi du formulaire contient des pièces jointes.
Obtenez la valeur du membre de données value
de l'objet MyArrayOf_xsd_anyTypeHolder
(l'objet MyArrayOf_xsd_anyTypeHolder
a été transmis à la méthode processFormSubmission
). Ce membre de données renvoie un tableau de Objects
. Chaque élément du tableau Object
est un Object
qui correspond aux fichiers envoyés avec le formulaire. Vous pouvez obtenir chaque élément du tableau et le projeter dans un objet BLOB
.
Traiter les données envoyées
Si le type de contenu des données est application/vnd.adobe.xdp+xml
ou text/xml
, créez une logique d’application pour récupérer les valeurs de données XML.
BLOB
en appelant la méthode FormsResult
de l'objet getOutputContent
.getBinaryData
de l’objet BLOB
.java.io.InputStream
en appelant le constructeur java.io.ByteArrayInputStream
et en transmettant le tableau d’octets.org.w3c.dom.DocumentBuilderFactory
en appelant la méthode org.w3c.dom.DocumentBuilderFactory
statique de l'objet newInstance
.org.w3c.dom.DocumentBuilder
en appelant la méthode org.w3c.dom.DocumentBuilderFactory
de l'objet newDocumentBuilder
.org.w3c.dom.Document
en appelant la méthode org.w3c.dom.DocumentBuilder
de l'objet parse
et en transmettant l'objet java.io.InputStream
.org.w3c.dom.Document
et le nom du noeud dont vous souhaitez récupérer la valeur. Cette méthode renvoie une valeur de chaîne représentant la valeur du noeud. Dans l'exemple de code qui suit ce processus, cette méthode personnalisée est appelée getNodeText
. Le corps de cette méthode s’affiche.Si le type de contenu des données est application/pdf
, créez une logique d’application pour enregistrer les données PDF envoyées au format PDF.
BLOB
en appelant la méthode FormsResult
de l'objet getOutputContent
.getBinaryData
de l’objet BLOB
.java.io.File
en utilisant son constructeur public. Veillez à spécifier PDF comme extension de nom de fichier.java.io.FileOutputStream
en utilisant son constructeur et en transmettant l’objet java.io.File
.java.io.FileOutputStream
de l’objet write
et en transmettant le tableau d’octets.Voir également
Appel de AEM Forms à l’aide du codage Base64