Rendu des PDF forms interactifs

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

Le service Forms effectue le rendu de PDF forms interactifs sur les appareils clients, généralement les navigateurs Web, afin de collecter des informations auprès des utilisateurs. Une fois le formulaire interactif rendu, l’utilisateur peut saisir des données dans les champs du formulaire et cliquer sur un bouton d’envoi situé sur le formulaire pour renvoyer les informations au service Forms. Adobe Reader ou Acrobat doit être installé sur l’ordinateur hébergeant le navigateur Web client pour qu’un formulaire PDF interactif soit visible.

REMARQUE

Avant de pouvoir générer un formulaire à l’aide du service Forms, créez une conception de formulaire. En règle générale, une conception de formulaire est créée dans Designer et enregistrée dans un fichier XDP. Pour plus d’informations sur la création d’une conception de formulaire, voir Forms Designer.

Exemple de demande de prêt

Un exemple de demande de prêt est présenté pour démontrer comment le service Forms utilise des formulaires interactifs pour collecter des informations auprès des utilisateurs. Cette application permet à un utilisateur de remplir un formulaire avec les données nécessaires pour sécuriser un prêt, puis d’envoyer les données au service Forms. Le diagramme suivant illustre le flux logique de la demande de prêt.

ri_ri_finsrv_loanapp_v1

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

Étape

Description

1

Le servlet Java GetLoanForm est appelé à partir d’une page HTML.

2

Le servlet Java GetLoanForm utilise l’API cliente du service Forms pour effectuer le rendu du formulaire de prêt dans le navigateur web du client. (Voir Rendu d’un formulaire PDF interactif à l’aide de l’API Java.)

3

Une fois que l’utilisateur a rempli le formulaire de prêt et cliqué sur le bouton d’envoi, les données sont envoyées au servlet Java HandleData. (Voir "Formulaire de prêt".)

4

Le servlet Java HandleData utilise l’API cliente du service Forms pour traiter l’envoi du formulaire et récupérer les données du formulaire. Les données sont ensuite stockées dans une base de données d’entreprise. (Voir Gestion des Forms envoyées.)

5

Un formulaire de confirmation est rendu au navigateur web. Les données telles que le prénom et le nom de l’utilisateur sont fusionnées avec le formulaire avant son rendu. (Voir Préremplissage de Forms avec des dispositions souple.)

Formulaire de prêt

Ce formulaire de prêt interactif est rendu par le servlet Java GetLoanForm de la demande de prêt.

ri_ri_loanform

Formulaire de confirmation

Ce formulaire est rendu par le servlet Java HandleData de la demande de prêt.

ri_ri_confirm

Le servlet Java HandleData préremplit ce formulaire avec le prénom et le nom de l’utilisateur ainsi que le montant. Une fois le formulaire prérempli, il est envoyé au navigateur Web client. (Voir Préremplissage de Forms avec des dispositions souple)

Servlets Java

L’exemple de demande de prêt est un exemple d’application de service Forms qui existe en tant que servlet Java. Un servlet Java est un programme Java exécuté sur un serveur d’applications J2EE, tel que WebSphere, qui contient le code de l’API client du service Forms.

Le code suivant affiche la syntaxe d’une servlet Java nommée GetLoanForm :

     public class GetLoanForm extends HttpServlet implements Servlet {
         public void doGet(HttpServletRequest req, HttpServletResponse resp
         throws ServletException, IOException {

         }
         public void doPost(HttpServletRequest req, HttpServletResponse resp
         throws ServletException, IOException {

             }

En règle générale, vous ne placez pas le code de l’API client du service Forms dans la méthode doGet ou doPost d’une servlet Java. Il est recommandé de placer ce code dans une classe distincte, d’instancier la classe à partir de la méthode doPost (ou de la méthode doGet) et d’appeler les méthodes appropriées. Toutefois, pour des raisons de concision du code, les exemples de code de cette section sont conservés au minimum et les exemples de code sont placés dans la méthode doPost .

REMARQUE

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

Résumé des étapes

Pour générer un formulaire PDF interactif, effectuez les tâches suivantes :

  1. Inclure les fichiers de projet.
  2. Créez un objet API client Forms.
  3. Spécifiez les valeurs URI.
  4. Joindre des fichiers au formulaire (facultatif).
  5. Générer un formulaire PDF interactif.
  6. Ecrivez le flux de données de formulaire dans le navigateur Web client.

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 de l’API client du service Forms, vous devez créer un objet API client 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 .

Spécification de valeurs URI

Vous pouvez spécifier les valeurs URI requises par le service Forms pour générer un formulaire. Une conception de formulaire enregistrée dans le cadre d’une application Forms peut être référencée à l’aide de la valeur d’URI racine du contenu repository:///. Prenons par exemple la conception de formulaire suivante nommée Loan.xdp dans une application Forms nommée FormsApplication :

ri_ri_formrepository

Pour accéder à cette conception de formulaire, indiquez Applications/FormsApplication/1.0/FormsFolder/Loan.xdp comme nom du formulaire (premier paramètre transmis à la méthode renderPDFForm) et repository:/// comme valeur de l’URI racine du contenu.

REMARQUE

Pour plus d’informations sur la création d’une application Forms à l’aide de Workbench, voir Aide de Workbench.

Le chemin d’accès à une ressource située dans une application Forms est le suivant :

Applications/Application-name/Application-version/Folder.../Filename

Les valeurs suivantes présentent quelques exemples de valeurs URI :

  • Applications/AppraisalReport/1.0/Forms/FullForm.xdp
  • Applications/AnotherApp/1.1/Assets/picture.jpg
  • Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd

Lorsque vous effectuez le rendu d’un formulaire interactif, vous pouvez définir des valeurs d’URI telles que l’URL cible vers laquelle les données de formulaire sont publiées. L’URL cible peut être définie de l’une des manières suivantes :

  • Sur le bouton Envoyer lors de la conception de formulaire dans Designer
  • En utilisant l’API client du service Forms

Si l’URL cible est définie dans la conception de formulaire, ne la remplacez pas par l’API cliente du service Forms. En d’autres termes, la définition de l’URL cible à l’aide de l’API Forms réinitialise l’URL spécifiée dans la conception de formulaire sur celle spécifiée à l’aide de l’API. Si vous souhaitez envoyer le formulaire PDF à l’URL cible spécifiée dans la conception de formulaire, définissez l’URL cible par programmation sur une chaîne vide.

Si vous disposez d’un formulaire contenant un bouton d’envoi et un bouton de calcul (avec un script correspondant s’exécutant sur le serveur), vous pouvez définir par programmation l’URL vers laquelle le formulaire est envoyé pour exécuter le script. Utilisez le bouton d’envoi sur la conception de formulaire pour spécifier l’URL vers laquelle les données de formulaire sont publiées. (Voir Calcul des données de formulaire.)

REMARQUE

Au lieu de spécifier une valeur URL pour référencer un fichier XDP, vous pouvez également transmettre une instance com.adobe.idp.Document au service Forms. L’instance com.adobe.idp.Document contient une conception de formulaire. (Voir Transmission de documents au service Forms.)

Joindre des fichiers au formulaire

Vous pouvez joindre des fichiers à un formulaire. Lorsque vous effectuez le rendu d’un formulaire PDF avec des pièces jointes, les utilisateurs peuvent récupérer les pièces jointes dans Acrobat à l’aide du volet de pièces jointes. Vous pouvez joindre différents types de fichiers à un formulaire (un fichier texte, par exemple) ou à un fichier binaire (un fichier JPG, par exemple).

REMARQUE

Il est facultatif de joindre des pièces jointes à un formulaire.

Rendu d’un formulaire PDF interactif

Pour générer un formulaire, utilisez une conception de formulaire créée dans Designer et enregistrée au format XDP ou PDF. Vous pouvez également générer un formulaire créé à l’aide d’Acrobat et enregistré au format PDF. Pour générer un formulaire PDF interactif, appelez la méthode FormsServiceClient de l’objet renderPDFForm ou la méthode renderPDFForm2 .

renderPDFForm utilise un objet URLSpec. La racine du contenu du fichier XDP est transmise au service Forms à l’aide de la méthode URLSpec de l’objet setContentRootURI. Le nom de la conception de formulaire ( formQuery) est transmis en tant que valeur de paramètre distincte. Les deux valeurs sont concaténées afin d’obtenir la référence absolue à la conception de formulaire.

La méthode renderPDFForm2 accepte une instance com.adobe.idp.Document contenant le document XDP ou PDF à rendre.

REMARQUE

L’option d’exécution PDF balisé ne peut pas être définie si le document d’entrée est un document PDF. Si le fichier d’entrée est un fichier XDP, l’option PDF balisé peut être définie.

Rendu d’un formulaire PDF interactif à l’aide de l’API Java

Rendre un formulaire PDF interactif à 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. Spécification de valeurs URI

    • Créez un objet URLSpec qui stocke les valeurs URI à l’aide de son constructeur.
    • Appelez la méthode setApplicationWebRoot de l’objet URLSpec et transmettez une valeur string qui représente la racine web de l’application.
    • Appelez la méthode setContentRootURI de l’objet URLSpec et transmettez une valeur string qui spécifie la valeur de l’URI racine du contenu. Assurez-vous que la conception de formulaire se trouve dans l’URI racine du contenu. Dans le cas contraire, le service Forms renvoie une exception. Pour référencer le référentiel, spécifiez repository:///.
    • Appelez la méthode setTargetURL de l’objet URLSpec et transmettez une valeur string qui spécifie la valeur de l’URL cible à l’endroit où les données de formulaire sont publiées. Si vous définissez l’URL cible dans la conception de formulaire, vous pouvez transmettre une chaîne vide. Vous pouvez également spécifier l’URL vers laquelle un formulaire est envoyé pour effectuer les calculs.
  4. Joindre des fichiers au formulaire

    • Créez un objet java.util.HashMap pour stocker les pièces jointes à l’aide de son constructeur.

    • Appelez la méthode put de l’objet java.util.HashMap pour chaque fichier à joindre au formulaire rendu. Transmettez les valeurs suivantes à cette méthode :

      • Une valeur string qui spécifie le nom de la pièce jointe, y compris l’extension du nom de fichier.
    • Objet com.adobe.idp.Document contenant la pièce jointe du fichier.

    REMARQUE

    Répétez cette étape pour chaque fichier à joindre au formulaire. Cette étape est facultative et vous pouvez transmettre null si vous ne souhaitez pas envoyer de pièces jointes.

  5. Rendu d’un formulaire PDF interactif

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

    • Une valeur string qui spécifie le nom de la conception de formulaire, y compris l’extension du nom de fichier. Si vous référencez une conception de formulaire qui fait partie d’une application Forms, veillez à spécifier le chemin d’accès complet, tel que Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • Objet com.adobe.idp.Document contenant les données à fusionner avec le formulaire. Si vous ne souhaitez pas fusionner de données, transmettez un objet com.adobe.idp.Document vide.
    • Objet PDFFormRenderSpec qui stocke les options d’exécution. Il s’agit d’un paramètre facultatif qui vous permet de spécifier null si vous ne souhaitez pas spécifier d’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 qui vous permet de spécifier null si vous ne souhaitez pas joindre de fichiers au formulaire.

    La méthode renderPDFForm renvoie un objet FormsResult contenant un flux de données de formulaire qui doit être écrit dans le navigateur Web client.

  6. Écrire le flux de données de formulaire dans le navigateur Web client

    • Créez un objet com.adobe.idp.Document en appelant la méthode FormsResult de l’objet getOutputContent.
    • Obtenez le type de contenu de l’objet com.adobe.idp.Document en appelant sa méthode getContentType.
    • Définissez le type de contenu de l’objet javax.servlet.http.HttpServletResponse en appelant sa méthode setContentType et en transmettant le type de contenu de l’objet com.adobe.idp.Document.
    • Créez un objet javax.servlet.ServletOutputStream utilisé pour écrire le flux de données de formulaire dans le navigateur Web client en appelant la méthode getOutputStream de l’objet javax.servlet.http.HttpServletResponse.
    • Créez un objet java.io.InputStream en appelant la méthode getInputStream de l’objet com.adobe.idp.Document.
    • Créez un tableau d’octets et renseignez-le avec le flux de données de formulaire en appelant la méthode InputStream de l’objet read et en transmettant le tableau d’octets en tant qu’argument.
    • Appelez la méthode write de l’objet javax.servlet.ServletOutputStream pour envoyer le flux de données de formulaire au navigateur Web client. Transmettez le tableau d’octets à la méthode write .

Rendu d’un formulaire PDF interactif à l’aide de l’API de service Web

Rendre un formulaire PDF interactif à 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. Spécification de valeurs URI

    • Créez un objet URLSpec qui stocke les valeurs URI à l’aide de son constructeur.
    • Appelez la méthode setApplicationWebRoot de l’objet URLSpec et transmettez une valeur string qui représente la racine web de l’application.
    • Appelez la méthode setContentRootURI de l’objet URLSpec et transmettez une valeur string qui spécifie la valeur de l’URI racine du contenu. Assurez-vous que la conception de formulaire se trouve dans l’URI racine du contenu. Dans le cas contraire, le service Forms renvoie une exception. Pour référencer le référentiel, spécifiez repository:///.
    • Appelez la méthode setTargetURL de l’objet URLSpec et transmettez une valeur string qui spécifie la valeur de l’URL cible à l’endroit où les données de formulaire sont publiées. Si vous définissez l’URL cible dans la conception de formulaire, vous pouvez transmettre une chaîne vide. Vous pouvez également spécifier l’URL vers laquelle un formulaire est envoyé pour effectuer les calculs.
  4. Joindre des fichiers au formulaire

    • Créez un objet java.util.HashMap pour stocker les pièces jointes à l’aide de son constructeur.

    • Appelez la méthode put de l’objet java.util.HashMap pour chaque fichier à joindre au formulaire rendu. Transmettez les valeurs suivantes à cette méthode :

      • Une valeur string qui spécifie le nom de la pièce jointe du fichier, y compris l’extension de nom de fichier
    • Objet BLOB contenant la pièce jointe du fichier

    REMARQUE

    Répétez cette étape pour chaque fichier à joindre au formulaire.

  5. Rendu d’un formulaire PDF interactif

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

    • Une valeur string qui spécifie le nom de la conception de formulaire, y compris l’extension du nom de fichier. Si vous référencez une conception de formulaire qui fait partie d’une application Forms, veillez à spécifier le chemin d’accès complet, tel que Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • Objet BLOB contenant les données à fusionner avec le formulaire. Si vous ne souhaitez pas fusionner les données, transmettez null.
    • Objet PDFFormRenderSpec qui stocke les options d’exécution. Il s’agit d’un paramètre facultatif qui vous permet de spécifier null si vous ne souhaitez pas spécifier d’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 qui vous permet de spécifier null si vous ne souhaitez pas joindre de fichiers au formulaire.
    • Objet com.adobe.idp.services.holders.BLOBHolder vide renseigné par la méthode . Il est utilisé pour stocker le formulaire PDF rendu.
    • Objet javax.xml.rpc.holders.LongHolder vide renseigné par la méthode . (Cet argument stocke le nombre de pages dans le formulaire.)
    • Objet javax.xml.rpc.holders.StringHolder vide renseigné par la méthode . (Cet argument stocke la valeur du paramètre régional.)
    • Objet com.adobe.idp.services.holders.FormsResultHolder vide qui contiendra les résultats de cette opération.

    La méthode renderPDFForm renseigne l’objet com.adobe.idp.services.holders.FormsResultHolder 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.

  6. Écrire le flux de données de formulaire dans le navigateur Web client

    • Créez un objet FormResult en obtenant la valeur du membre de données value de l’objet com.adobe.idp.services.holders.FormsResultHolder.
    • Créez un objet BLOB contenant des données de formulaire en appelant la méthode getOutputContent de l’objet FormsResult.
    • Obtenez le type de contenu de l’objet BLOB en appelant sa méthode getContentType.
    • Définissez le type de contenu de l’objet javax.servlet.http.HttpServletResponse en appelant sa méthode setContentType et en transmettant le type de contenu de l’objet BLOB.
    • Créez un objet javax.servlet.ServletOutputStream utilisé pour écrire le flux de données de formulaire dans le navigateur Web client en appelant la méthode getOutputStream de l’objet javax.servlet.http.HttpServletResponse.
    • Créez un tableau d’octets et renseignez-le en appelant la méthode getBinaryData de l’objet BLOB. Cette tâche affecte le contenu de l’objet FormsResult au tableau d’octets.
    • Appelez la méthode write de l’objet javax.servlet.http.HttpServletResponse pour envoyer le flux de données de formulaire au navigateur Web client. Transmettez le tableau d’octets à la méthode write .

Écrire le flux de données de formulaire dans le navigateur Web client

Lorsque le service Forms effectue le rendu d’un formulaire, il renvoie un flux de données de formulaire que vous devez écrire dans le navigateur Web client. Lorsqu’il est écrit dans le navigateur Web client, le formulaire est visible par l’utilisateur.

Sur cette page