Show Menu
SUJETS×

Gestion des formulaires envoyés

Les applications Web qui permettent à 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. Une fois les données récupérées, vous pouvez les traiter en fonction des 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 sous 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é au format PDF est constitué de données binaires et non de données 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 PDF, appelez une autre opération AEM Forms. (voir Création d’ 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.
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 HandleData Java sous forme de données XML.
3
Le servlet HandleData Java contient la logique d’application pour récupérer les données.

Gestion des données XML envoyées

Lorsque des données de formulaire sont envoyées au format XML, vous pouvez récupérer des données XML qui représentent les données envoyées. Tous les champs de formulaire apparaissent sous la forme de noeuds dans un 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 remplit. Supposons qu’un utilisateur renseigne 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 de 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 afin d’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 .

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 à un navigateur Web client, l’utilisateur remplit le formulaire et l’envoie 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 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
1
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.
3
L’utilisateur remplit un formulaire interactif et clique sur un bouton d’envoi. Le formulaire est renvoyé au service Forms sous forme de données PDF. Cette option est définie dans Designer.
4
Le service Forms enregistre les données PDF dans un fichier PDF.

Gestion des données UTF-16 d’URL envoyées

Si les données de formulaire sont envoyées sous forme de données UTF-16 URL, l’ordinateur client nécessite Adobe Reader ou Acrobat 8.1 ou 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é.
For more information about the Forms service, see Services Reference for AEM Forms .

Résumé des étapes

Pour gérer les formulaires envoyés, effectuez le suivant :
  1. Incluez des 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 du client Forms
Avant de pouvoir exécuter par programmation une opération d’API du client de service Forms, vous devez créer un client de service Forms. Si vous utilisez l’API Java, créez un FormsServiceClient objet. Si vous utilisez l’API du service Web de Forms, créez un FormsService objet.
Récupération des données de formulaire
Pour récupérer les données de formulaire envoyées, vous appelez la FormsServiceClient processFormSubmission méthode de l’objet. Lors de l’appel de 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 sous forme de données XML ou PDF. Pour récupérer les données saisies dans les champs du formulaire, les données peuvent être envoyées sous forme de données XML.
Vous pouvez également récupérer des champs de formulaire à partir d’un formulaire envoyé en tant que données PDF en définissant les options d’exécution suivantes :
  • Transmettez la valeur suivante à la processFormSubmission méthode en tant que paramètre de type de contenu : CONTENT_TYPE=application/pdf .
  • Définissez la RenderOptionsSpec valeur de l’ PDFToXDP objet sur true
  • Définissez la RenderOptionsSpec valeur de l’ ExportDataFormat objet sur XMLData
Vous spécifiez le type de contenu du formulaire envoyé lorsque vous appelez la processFormSubmission méthode. Le suivant 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.
Vous remarquerez qu’il existe trois rapides correspondantes associées à la section Gestion des formulaires envoyés. Le rapide de gestion des formulaires PDF 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 cette rapide est application/pdf . La gestion des formulaires PDF envoyés au format XML à l’aide du rapide 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 cette rapide est text/xml . De même, la gestion des formulaires HTML envoyés au format XML à l’aide du rapide 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 rapide est application/x-www-form-urlencoded.
Vous récupérez les données de formulaire qui ont été publiées dans 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é 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 pour qu’un calcul puisse être effectué. Une fois le calcul terminé, le formulaire est rendu à l’utilisateur avec les résultats 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 (envoi) : Les données envoyées sont prêtes à être traitées.
  • 1 (Calculer) : 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) : Le service Forms a validé les données de formulaire et les résultats doivent être rendus à l’utilisateur.
  • 3 (Suivant) : La page active a changé avec les résultats qui doivent être écrits dans l’application cliente.
  • 4 (Précédent ) : La page active a changé avec les résultats qui doivent être écrits dans l’application cliente.
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
Les formulaires envoyés au service Forms peuvent 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 le fichier joint 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é sous forme de données XML, les pièces jointes ne sont pas envoyées.
Traiter les 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 de org.w3c.dom classes.
Voir également

Gestion des 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 des 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 du client Forms
    • Créez un objet ServiceClientFactory qui contient des propriétés de connexion.
    • Create an FormsServiceClient object by using its constructor and passing the ServiceClientFactory object.
  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 com.adobe.idp.Document objet à l’aide de son constructeur et appelez la javax.servlet.http.HttpServletResponse getInputStream méthode de l’objet depuis le constructeur.
    • Créez un objet RenderOptionsSpec en utilisant son constructeur. Définissez la valeur du paramètre régional en appelant la RenderOptionsSpec setLocale méthode de l’objet 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 RenderOptionsSpec méthode de l’ setPDF2XDP objet et en transmettant true et en appelant setXMLData et en transmettant true . Vous pouvez ensuite appeler la FormsResult getOutputXML méthode de l’objet pour récupérer les données XML qui correspondent aux données XDP/XML. (L’ FormsResult objet est renvoyé par la processFormSubmission méthode, qui est expliquée à l’étape suivante.)
    • Appelez la méthode FormsServiceClient processFormSubmission de l’objet et transmettez les valeurs suivantes :
      • Objet com.adobe.idp.Document contenant les données du formulaire.
      • Valeur de chaîne qui spécifie variables , y compris tous les en-têtes HTTP appropriés. Spécifiez 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 .
      • Valeur de chaîne qui spécifie la valeur d’ HTTP_USER_AGENT en-tête, 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 processFormSubmission méthode renvoie un FormsResult objet 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 FormsResult getAction méthode de l’objet. 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 FormsResult getAttachments de l’objet. Cette méthode renvoie un java.util.List objet contenant des fichiers qui ont été envoyés avec le formulaire.
    • Parcourez l’ java.util.List objet pour déterminer s’il existe des pièces jointes. S’il existe des pièces jointes, chaque élément est une com.adobe.idp.Document instance. Vous pouvez enregistrer les pièces jointes en appelant la com.adobe.idp.Document méthode de l’objet et en transmettant un copyToFile java.io.File objet.
    Cette étape s’applique uniquement si le formulaire est envoyé au format PDF.
  5. Traiter les données envoyées
    • Si le type de contenu de 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 com.adobe.idp.Document objet en appelant la FormsResult méthode de l’ getOutputContent objet.
      • Créez un java.io.InputStream objet en appelant le java.io.DataInputStream constructeur et en transmettant l’ com.adobe.idp.Document objet.
      • Créez un org.w3c.dom.DocumentBuilderFactory objet en appelant la org.w3c.dom.DocumentBuilderFactory newInstance méthode de l’objet statique.
      • Créez un org.w3c.dom.DocumentBuilder objet en appelant la org.w3c.dom.DocumentBuilderFactory méthode de l’ newDocumentBuilder objet.
      • Create an org.w3c.dom.Document object by invoking the org.w3c.dom.DocumentBuilder object’s parse method and passing the java.io.InputStream object.
      • Récupérez la valeur de chaque noeud dans le XML. Une manière d’accomplir cette consiste à créer une méthode personnalisée qui accepte deux paramètres : l’ org.w3c.dom.Document objet 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 est illustré.
    • Si le type de contenu de données est application/pdf défini, créez une logique d’application pour enregistrer les données PDF envoyées sous forme de fichier PDF.
      • Créez un com.adobe.idp.Document objet en appelant la FormsResult méthode de l’ getOutputContent objet.
      • Create a java.io.File object by using its public constructor. Veillez à spécifier PDF comme extension de nom de fichier.
      • Renseignez le fichier PDF en appelant la com.adobe.idp.Document méthode de l’objet et en transmettant l’ copyToFile java.io.File objet.
Voir également

Gestion des données PDF envoyées à l’aide de l’API du service Web

Gérez un formulaire envoyé à l’aide de l’API Forms (service Web) :
  1. Inclure les fichiers de projet
    • Créez des classes de proxy Java qui utilisent le WSDL du service Forms.
    • Incluez les classes proxy Java dans le chemin de votre classe.
  2. Création d’un objet API du client Forms
    Créez un FormsService objet 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 BLOB objet à l’aide de son constructeur.
    • Créez un java.io.InputStream objet en appelant la javax.servlet.http.HttpServletResponse méthode de l’ getInputStream objet.
    • Create a java.io.ByteArrayOutputStream object by using its constructor and passing the length of the java.io.InputStream object.
    • Copiez le contenu de l’ java.io.InputStream objet dans l’ java.io.ByteArrayOutputStream objet.
    • Créez un tableau d’octets en appelant la java.io.ByteArrayOutputStream toByteArray méthode de l’objet.
    • Renseignez l’ BLOB objet en appelant sa setBinaryData méthode et en transmettant le tableau d’octets en tant qu’argument.
    • Créez un objet RenderOptionsSpec en utilisant son constructeur. Définissez la valeur du paramètre régional en appelant la RenderOptionsSpec setLocale méthode de l’objet et en transmettant une valeur de chaîne qui spécifie la valeur du paramètre régional.
    • Appelez la méthode FormsService processFormSubmission de l’objet et transmettez les valeurs suivantes :
      • Objet BLOB contenant les données du formulaire.
      • Valeur de chaîne qui spécifie variables , y compris tous les en-têtes HTTP appropriés. Spécifiez 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 .
      • Valeur de chaîne qui spécifie la valeur d’ HTTP_USER_AGENT en-tête ; 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 vide BLOBHolder renseigné par la méthode.
      • Objet vide javax.xml.rpc.holders.StringHolder renseigné par la méthode.
      • Objet vide BLOBHolder renseigné par la méthode.
      • Objet vide BLOBHolder renseigné par la méthode.
      • Objet vide javax.xml.rpc.holders.ShortHolder renseigné par la méthode.
      • Objet vide MyArrayOf_xsd_anyTypeHolder renseigné par la méthode. Ce paramètre permet de stocker les pièces jointes envoyées avec le formulaire.
      • Objet vide FormsResultHolder rempli par la méthode avec le formulaire envoyé.
      La processFormSubmission méthode renseigne le FormsResultHolder paramètre 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 FormsResult getAction méthode de l’objet. Si cette méthode renvoie la valeur 0 , les données du formulaire sont prêtes à être traitées. Vous pouvez obtenir un FormsResult objet en obtenant la valeur du membre FormsResultHolder de données de l’ value objet.
  4. Déterminer si l’envoi du formulaire contient des pièces jointes
    Obtient la valeur du membre MyArrayOf_xsd_anyTypeHolder de données de l’ value objet (l’ MyArrayOf_xsd_anyTypeHolder objet a été transmis à la processFormSubmission méthode). Ce membre de données renvoie un tableau de Objects . Chaque élément du Object tableau est un élément Object qui correspond aux fichiers envoyés avec le formulaire. Vous pouvez obtenir chaque élément du tableau et le projeter dans un BLOB objet.
  5. Traiter les données envoyées
    • Si le type de contenu de 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 BLOB objet en appelant la FormsResult méthode de l’ getOutputContent objet.
      • Créez un tableau d’octets en appelant la BLOB getBinaryData méthode de l’objet.
      • Créez un java.io.InputStream objet en appelant le java.io.ByteArrayInputStream constructeur et en transmettant le tableau d’octets.
      • Créez un org.w3c.dom.DocumentBuilderFactory objet en appelant la org.w3c.dom.DocumentBuilderFactory newInstance méthode de l’objet statique.
      • Créez un org.w3c.dom.DocumentBuilder objet en appelant la org.w3c.dom.DocumentBuilderFactory méthode de l’ newDocumentBuilder objet.
      • Create an org.w3c.dom.Document object by invoking the org.w3c.dom.DocumentBuilder object’s parse method and passing the java.io.InputStream object.
      • Récupérez la valeur de chaque noeud dans le XML. Une manière d’accomplir cette consiste à créer une méthode personnalisée qui accepte deux paramètres : l’ org.w3c.dom.Document objet 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 est illustré.
    • Si le type de contenu de données est application/pdf défini, créez une logique d’application pour enregistrer les données PDF envoyées sous forme de fichier PDF.
      • Créez un BLOB objet en appelant la FormsResult méthode de l’ getOutputContent objet.
      • Créez un tableau d’octets en appelant la BLOB getBinaryData méthode de l’objet.
      • Create a java.io.File object by using its public constructor. 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 java.io.FileOutputStream write méthode de l’objet et en transmettant le tableau d’octets.
Voir également