Gestion des Forms envoyées

Les exemples et les exemples de ce document sont réservés à l’environnement AEM Forms on JEE.

Les applications Web qui permettent à l’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 que l’utilisateur a entrées dans un formulaire interactif. Une fois les données récupéré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, envoyer les données à une autre application, envoyer les données à 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 au format XML ou PDF, une option définie dans Designer. Un formulaire envoyé au format XML 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 les 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 à une servlet Java nommée HandleData à partir d’un formulaire interactif affiché dans un navigateur web.

hs_hs_handlesubmit

Le tableau suivant explique 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 HandleData sous la forme de données XML.

3

Le servlet Java HandleData contient la logique d’application pour récupérer les données.

Gestion des données XML envoyées

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 l’exemple d’un formulaire de prêt dans lequel chaque champ du formulaire apparaît comme un noeud dans les données XML. La valeur de chaque noeud correspond à la valeur qu’un utilisateur renseigne. Supposons qu’un utilisateur renseigne le formulaire de prêt avec les données affichées dans le formulaire suivant.

hs_loanformdata

L’illustration suivante présente les données XML correspondantes récupérées à l’aide de l’API client du service Forms.

hs_loandata

Les champs du formulaire de prêt. Ces valeurs peuvent être récupérées.
à l’aide des classes XML Java.

REMARQUE

La conception de formulaire doit être configurée correctement dans Designer pour que les données soient envoyées sous forme de données XML. Pour configurer correctement la conception de formulaire de sorte qu’elle envoie des données XML, assurez-vous que le bouton Envoyer situé sur la conception de formulaire est défini 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.

Gestion des données PDF envoyées

Prenons l’exemple d’une application web qui appelle le service Forms. Une fois que le service Forms a rendu un formulaire PDF interactif dans un navigateur Web client, l’utilisateur l’a rempli et l’a renvoyé en tant que données PDF. Lorsque le service Forms reçoit les données PDF, il peut envoyer les données PDF à un autre service ou les enregistrer en tant que fichier PDF. Le diagramme suivant illustre le flux logique de l’application.

hs_hs_savingforms

Le tableau suivant décrit les étapes de ce diagramme.

Étape

Description

3

Une page web contient un lien qui accède à une servlet Java qui appelle le service Forms.

2

Le service Forms effectue le rendu d’un formulaire PDF interactif dans le navigateur Web client.

3

L’utilisateur remplit un formulaire interactif et clique sur un bouton d’envoi. Le formulaire est renvoyé au service Forms sous la forme de données PDF. Cette option est définie dans Designer.

4

Le service Forms enregistre les données PDF au format PDF.

Gestion des données UTF-16 de l’URL envoyée

Si les données de formulaire sont envoyées sous la forme de données UTF-16 d’URL, l’ordinateur client nécessite Adobe Reader ou Acrobat 8.1 ou une version ultérieure. En outre, 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é.

REMARQUE

Pour plus d’informations sur le service Forms, voir Référence des services pour AEM Forms.

Résumé des étapes

Pour gérer les formulaires envoyés, effectuez les tâches suivantes :

  1. Inclure les fichiers de projet.
  2. Créez un objet API client Forms.
  3. Récupérez les données de formulaire.
  4. Déterminez si l’envoi du formulaire contient des pièces jointes.
  5. Traitez les données envoyées.

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 d’effectuer 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 devez appeler la méthode processFormSubmission de l’objet FormsServiceClient. 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 du formulaire, les données peuvent être envoyées au format 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 :

  • Transmettez la valeur suivante à la méthode processFormSubmission en tant que paramètre de type de contenu : CONTENT_TYPE=application/pdf.
  • Définissez la valeur PDFToXDP de l’objet RenderOptionsSpec sur true
  • Définissez la valeur 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 :

  • text/xml : Représente le type de contenu à utiliser lorsqu’un formulaire PDF envoie des données de formulaire au format XML.
  • application/x-www-form-urlencoded : Représente le type de contenu à utiliser lorsqu’un formulaire HTML envoie des données au format XML.
  • application/pdf : Représente le type de contenu à utiliser lorsqu’un formulaire PDF envoie des données au format PDF.
REMARQUE

Vous remarquerez qu’il existe trois démarrages rapides correspondants associés à la section Gestion du Forms envoyé . Le guide de gestion des PDF forms envoyés au format PDF à l’aide du démarrage rapide de l’API Java explique comment gérer les données PDF envoyées. Le type de contenu spécifié dans ce démarrage rapide est application/pdf. Le guide de gestion des PDF forms envoyés au format XML à l’aide du démarrage rapide de l’API Java explique comment gérer les données XML envoyées à partir d’un formulaire PDF. Le type de contenu spécifié dans ce démarrage rapide est text/xml. De même, le guide de démarrage rapide Handling HTML forms (Handling HTML forms) envoyé au format XML à l’aide de l’API Java indique comment gérer les données XML envoyées à partir d’un formulaire HTML. Le type de contenu spécifié dans ce démarrage 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 les données sont envoyées au service Forms, cela ne signifie pas nécessairement que le service Forms a terminé le traitement des 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 afin qu’un calcul puisse être effectué. Une fois le calcul terminé, le formulaire est rendu à l’utilisateur avec les résultats du 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 :

  • 0 (Envoyer) : les données envoyées sont prêtes à être traitées.
  • 1 (Calcul) : le service Forms a effectué une opération de calcul sur les données et les résultats doivent être rendus à l’utilisateur.
  • 2 (Valider) : les données de formulaire validées du service Forms et les résultats doivent être rendus à l’utilisateur.
  • 3 (Suivant) : la page actuelle a été modifiée avec les résultats qui doivent être écrits dans l’application cliente.
  • 4 (précédent) : La page en cours a été modifiée avec les résultats qui doivent être écrits dans l’application cliente.
REMARQUE

Les calculs et validations doivent être rendus à l’utilisateur. (Voir Calcul des données de formulaire.

Déterminer 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. Un utilisateur peut également sélectionner des pièces jointes à l’aide d’une barre d’outils HTML rendue 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.

REMARQUE

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.

Traitement des données envoyées

Selon le 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 sous forme de fichier PDF (ou les envoyer à un autre service). Pour extraire des champs de formulaire individuels, convertissez les données XML envoyées en 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 d’AEM Forms

Réglage des propriétés de la connexion

Démarrages rapides de l’API Forms Service

Transmission de documents au service Forms

Création d’applications web qui renvoient Forms

Gérer les formulaires envoyés à l’aide de l’API Java

Gérez un formulaire envoyé à l’aide de l’API Forms (Java) :

  1. Inclure les fichiers de projet

    Incluez les fichiers JAR client, tels que adobe-forms-client.jar, dans le chemin de classe de votre projet Java.

  2. Création d’un objet API client Forms

    • Créez un objet ServiceClientFactory qui contient des propriétés de connexion.
    • Créez un objet FormsServiceClient en utilisant son constructeur et en transmettant l’objet ServiceClientFactory.
  3. 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 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.
    • Créez un objet RenderOptionsSpec en utilisant son constructeur. Définissez la valeur locale en appelant la méthode setLocale de l’objet RenderOptionsSpec et en transmettant une valeur string qui spécifie la valeur locale.
    REMARQUE

    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 également 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 correspondant aux données XDP/XML. (L’objet FormsResult est renvoyé par la méthode processFormSubmission, qui est expliquée dans la sous-étape suivante.)

    • Appelez la méthode processFormSubmission de l’objet FormsServiceClient et transmettez les valeurs suivantes :

      • Objet com.adobe.idp.Document contenant les données de formulaire.
      • Une valeur string qui spécifie les variables d’environnement, y compris tous les en-têtes HTTP pertinents. Indiquez le type de contenu à gérer. Pour gérer les données XML, spécifiez la valeur de chaîne suivante pour ce paramètre : 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.
      • Une valeur string qui spécifie la valeur d’en-tête 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.
      • Objet 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é le traitement des données de formulaire en appelant la méthode getAction de l’objet FormsResult. Si cette méthode renvoie la valeur 0, les données sont prêtes à être traitées.

  4. Déterminer si l’envoi du formulaire contient des pièces jointes

    • Appelez la méthode getAttachments de l’objet FormsResult. Cette méthode renvoie un objet java.util.List contenant les fichiers qui ont été envoyés avec le formulaire.
    • Parcourez l’objet 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 copyToFile de l’objet com.adobe.idp.Document et en transmettant un objet java.io.File.
    REMARQUE

    Cette étape ne s’applique que si le formulaire est envoyé au format PDF.

  5. Traitement des 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.

      • Créez un objet com.adobe.idp.Document en appelant la méthode getOutputContent de l’objet FormsResult.
      • Créez un objet java.io.InputStream en appelant le constructeur java.io.DataInputStream et en transmettant l’objet com.adobe.idp.Document.
      • Créez un objet org.w3c.dom.DocumentBuilderFactory en appelant la méthode newInstance statique de l’objet org.w3c.dom.DocumentBuilderFactory.
      • Créez un objet org.w3c.dom.DocumentBuilder en appelant la méthode newDocumentBuilder de l’objet org.w3c.dom.DocumentBuilderFactory.
      • Créez un objet org.w3c.dom.Document en appelant la méthode parse de l’objet org.w3c.dom.DocumentBuilder et en transmettant l’objet java.io.InputStream.
      • Récupérez la valeur de chaque noeud dans le document XML. Pour accomplir cette tâche, vous pouvez créer une méthode personnalisée qui accepte deux paramètres : l’objet org.w3c.dom.Document et le nom du noeud dont vous souhaitez récupérer la valeur. Cette méthode renvoie une valeur string 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 sous forme de fichier PDF.

      • Créez un objet com.adobe.idp.Document en appelant la méthode getOutputContent de l’objet FormsResult.
      • Créez un objet java.io.File à l’aide de son constructeur public. Veillez à spécifier PDF comme extension de nom de fichier.
      • Renseignez le fichier PDF en appelant la méthode copyToFile de l’objet com.adobe.idp.Document et en transmettant l’objet java.io.File.

Voir également

Démarrage rapide (mode SOAP) : Gestion des PDF forms envoyés au format XML à l’aide de l’API Java

Démarrage rapide (mode SOAP) : Gestion des formulaires HTML envoyés en tant que XML à l’aide de l’API Java

Démarrage 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 d’AEM Forms

Réglage des propriétés de la connexion

Gérer les données PDF envoyées à l’aide de l’API de service Web

Gérer un formulaire envoyé à l’aide de l’API Forms (service Web) :

  1. Inclure les fichiers de projet

    • Créez des classes proxy Java qui utilisent le WSDL du service Forms.
    • Incluez les classes proxy Java dans le chemin de classe.
  2. Création d’un objet API client Forms

    Créez un objet FormsService et définissez des valeurs d’authentification.

  3. 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 getInputStream de l’objet javax.servlet.http.HttpServletResponse.

    • 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 java.io.ByteArrayOutputStream de l’objet toByteArray.

    • 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 locale en appelant la méthode setLocale de l’objet RenderOptionsSpec et en transmettant une valeur string qui spécifie la valeur locale.

    • Appelez la méthode processFormSubmission de l’objet FormsService et transmettez les valeurs suivantes :

      • Objet BLOB contenant les données de formulaire.
      • Une valeur string qui spécifie les variables d’environnement, y compris tous les en-têtes HTTP pertinents. Indiquez le type de contenu à gérer. Pour gérer les données XML, spécifiez la valeur de chaîne suivante pour ce paramètre : 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.
      • Une valeur string qui spécifie la valeur d’en-tête HTTP_USER_AGENT ; par exemple, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322).
      • Objet RenderOptionsSpec qui stocke les options d’exécution.
      • Objet BLOBHolder vide renseigné par la méthode .
      • Objet javax.xml.rpc.holders.StringHolder vide renseigné par la méthode .
      • Objet BLOBHolder vide renseigné par la méthode .
      • Objet BLOBHolder vide renseigné par la méthode .
      • Objet javax.xml.rpc.holders.ShortHolder vide renseigné par la méthode .
      • Objet MyArrayOf_xsd_anyTypeHolder vide renseigné par la méthode . Ce paramètre est utilisé pour stocker les pièces jointes envoyées avec le formulaire.
      • Objet FormsResultHolder vide 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é le traitement des données de formulaire en appelant la méthode getAction de l’objet FormsResult. 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 value de l’objet FormsResultHolder.

  4. Déterminer 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 Objectqui correspond aux fichiers qui ont été envoyés avec le formulaire. Vous pouvez obtenir chaque élément du tableau et le convertir en objet BLOB.

  5. Traitement des 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.

      • Créez un objet BLOB en appelant la méthode getOutputContent de l’objet FormsResult.
      • Créez un tableau d’octets en appelant la méthode BLOB de l’objet getBinaryData.
      • Créez un objet java.io.InputStream en appelant le constructeur java.io.ByteArrayInputStream et en transmettant le tableau d’octets.
      • Créez un objet org.w3c.dom.DocumentBuilderFactory en appelant la méthode newInstance statique de l’objet org.w3c.dom.DocumentBuilderFactory.
      • Créez un objet org.w3c.dom.DocumentBuilder en appelant la méthode newDocumentBuilder de l’objet org.w3c.dom.DocumentBuilderFactory.
      • Créez un objet org.w3c.dom.Document en appelant la méthode parse de l’objet org.w3c.dom.DocumentBuilder et en transmettant l’objet java.io.InputStream.
      • Récupérez la valeur de chaque noeud dans le document XML. Pour accomplir cette tâche, vous pouvez créer une méthode personnalisée qui accepte deux paramètres : l’objet org.w3c.dom.Document et le nom du noeud dont vous souhaitez récupérer la valeur. Cette méthode renvoie une valeur string 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 sous forme de fichier PDF.

      • Créez un objet BLOB en appelant la méthode getOutputContent de l’objet FormsResult.
      • Créez un tableau d’octets en appelant la méthode BLOB de l’objet getBinaryData.
      • Créez un objet java.io.File à l’aide de son constructeur public. Veillez à spécifier PDF comme extension de nom de fichier.
      • Créez un objet java.io.FileOutputStream en utilisant son constructeur et en transmettant l’objet java.io.File.
      • Renseignez le fichier PDF en appelant la méthode java.io.FileOutputStream de l’objet write et en transmettant le tableau d’octets.

Voir également

Appel d’AEM Forms à l’aide du codage Base64

Sur cette page