Rendre des formulaires par valeur rendering-forms-by-value
Les exemples et les échantillons de ce document sont réservés à l’environnement AEM Forms sur JEE.
En règle générale, une conception de formulaire créée dans Designer est transmise par référence au service Forms. Les conceptions de formulaire peuvent être volumineuses et, par conséquent, il est plus efficace de les transmettre par référence pour éviter d’avoir à rassembler les octets de conception de formulaire par valeur. Le service Forms peut également mettre en cache la conception de formulaire de sorte qu’il n’ait pas à lire la conception de formulaire en permanence lorsqu’elle est mise en cache.
Si une conception de formulaire contient un attribut UUID, elle est mise en cache. La valeur UUID est unique pour toutes les conceptions de formulaire et sert à identifier un formulaire de manière unique. Lors du rendu d’un formulaire par valeur, le formulaire ne doit être mis en cache que s’il est utilisé à plusieurs reprises. Cependant, si le formulaire n’est pas utilisé à plusieurs reprises et doit être unique, vous pouvez éviter de le mettre en cache à l’aide des options de mise en cache définies à l’aide de l’API AEM Forms.
Le service Forms peut également résoudre l’emplacement du contenu lié dans la conception de formulaire. Par exemple, les images liées référencées à partir de la conception de formulaire sont des URL relatives. On suppose toujours que le contenu lié est relatif à l’emplacement de conception de formulaire. Par conséquent, la résolution du contenu lié consiste à déterminer son emplacement en appliquant le chemin relatif à l’emplacement de conception de formulaire absolu.
Au lieu de transmettre une conception de formulaire par référence, vous pouvez la transmettre par valeur. La transmission d’une conception de formulaire par valeur est efficace lorsque cette conception est créée de façon dynamique, c’est-à-dire lorsqu’une application client génère le code XML qui crée une conception de formulaire au moment de l’exécution. Dans ce cas, une conception de formulaire n’est pas stockée dans un référentiel physique, car elle est stockée en mémoire. Lors de la création dynamique d’une conception de formulaire au moment de l’exécution et de sa transmission par valeur, vous pouvez mettre le formulaire en cache pour améliorer les performances du service Forms.
Limites de transmission d’un formulaire par valeur
Les restrictions suivantes s’appliquent lorsqu’une conception de formulaire est transmise par valeur :
- Aucun contenu lié relatif ne peut être inclus dans la conception de formulaire. Toutes les images et tous les fragments doivent être incorporés dans la conception de formulaire ou être référencés de manière absolue.
- Les calculs côté serveur ne peuvent pas être effectués après le rendu du formulaire. Si le formulaire est renvoyé au service Forms, les données sont extraites et renvoyées sans aucun calcul côté serveur.
- Comme le code HTML ne peut utiliser que des images liées au moment de l’exécution, il n’est pas possible de générer du code HTML avec des images incorporées. En effet, le service Forms prend en charge les images incorporées avec le code HTML en récupérant les images d’une conception de formulaire référencée. Étant donné qu’une conception de formulaire transmise par valeur ne dispose pas d’un emplacement référencé, les images incorporées ne peuvent pas être extraites lorsque la page HTML est affichée. Par conséquent, les références d’image doivent être des chemins absolus à générer en langage HTML.
Résumé des étapes summary-of-steps
Pour effectuer le rendu d’un formulaire par valeur, procédez comme suit :
- Incluez les fichiers de projet.
- Créez un objet API client Forms.
- Référencez la conception de formulaire.
- Effectuez le rendu d’un formulaire par valeur.
- Écrivez le flux de données du formulaire dans le navigateur web du 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éer un objet API client Forms
Avant de pouvoir importer des données par programmation dans une API client de formulaire PDF, vous devez créer un client de service Data Integration (Intégration de données). Lors de la création d’un client de service, vous définissez les paramètres de connexion requis pour appeler un service.
Référencer la conception de formulaire
Lors du rendu d’un formulaire par valeur, vous devez créer un objet com.adobe.idp.Document
contenant la conception de formulaire à générer. Vous pouvez référencer un fichier XDP existant ou créer de façon dynamique une conception de formulaire au moment de l’exécution et renseigner un élément com.adobe.idp.Document
avec ces données.
Rendre un formulaire par valeur
Pour effectuer le rendu d’un formulaire par valeur, transmettez une instance com.adobe.idp.Document
qui contient la conception de formulaire au paramètre inDataDoc
de la méthode de rendu (il peut s’agir d’une des méthodes de rendu de l’objet FormsServiceClient
, telles que renderPDFForm
, (Deprecated) renderHTMLForm
, etc.). Cette valeur de paramètre est normalement réservée aux données fusionnées avec le formulaire. De même, transmettez une valeur de chaîne vide au paramètre formQuery
. Normalement, ce paramètre nécessite une valeur de chaîne qui spécifie le nom de la conception de formulaire.
xfa:datasets
. Pour plus d’informations sur l’architecture XFA, voir https://www.pdfa.org/norm-refs/XFA-3_3.pdf.Écrire le flux de données de formulaire dans le navigateur web du client
Lorsque le service Forms effectue le rendu d’un formulaire par valeur, 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.
Voir également
Rendre un formulaire par valeur à l’aide de l’API Java
Rendre un formulaire par valeur à l’aide de l’API de service web
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
Rendre un formulaire par valeur à l’aide de l’API Java render-a-form-by-value-using-the-java-api
Rendre un formulaire par valeur à l’aide de l’API Forms (Java) :
-
Inclure les fichiers du projet
Incluez les fichiers clients JAR, tels qu’adobe-forms-client.jar, dans votre chemin de classe de projet Java.
-
Créer un objet API Forms client
- 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’objetServiceClientFactory
.
- Créez un objet
-
Référencer la conception de formulaire
- Créez un
java.io.FileInputStream
représentant la conception de formulaire à rendre en utilisant son constructeur et en transmettant une valeur de chaîne spécifiant l’emplacement du fichier XDP. - Créez un objet
com.adobe.idp.Document
en utilisant son constructeur et en transmettant l’objetjava.io.FileInputStream
.
- Créez un
-
Rendre un formulaire par valeur
Appelez la méthode
renderPDFForm
de l’objetFormsServiceClient
et transmettez les valeurs suivantes :- Une valeur de chaîne vide. (Normalement, ce paramètre nécessite une valeur de chaîne qui indique le nom de la conception de formulaire.)
- Un objet
com.adobe.idp.Document
contenant la conception de formulaire. Normalement, cette valeur de paramètre est réservée aux données fusionnées avec le formulaire. - Un objet
PDFFormRenderSpec
stockant les options d’exécution. Ce paramètre est facultatif et vous pouvez indiquernull
si vous ne souhaitez pas spécifier d’options d’exécution. - Un objet
URLSpec
contenant des valeurs URI requises par le service Forms. - Un objet
java.util.HashMap
qui stocke les pièces jointes. Ce paramètre est facultatif et vous pouvez spécifiernull
si vous ne souhaitez pas joindre de fichiers au formulaire.
La méthode
renderPDFForm
renvoie un objetFormsResult
contenant un flux de données de formulaire pouvant être écrit dans le navigateur web client. -
É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éthodegetOutputContent
de l’objetFormsResult
. - Obtenez le type de contenu de l’objet
com.adobe.idp.Document
en appelant sa méthodegetContentType
. - Définissez le type de contenu de l’objet
javax.servlet.http.HttpServletResponse
en appelant sa méthodesetContentType
et en transmettant le type de contenu de l’objetcom.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éthodegetOutputStream
de l’objetjavax.servlet.http.HttpServletResponse
. - Créez un objet
java.io.InputStream
en appelant la méthodegetInputStream
de l’objetcom.adobe.idp.Document
. - Créez un tableau d’octets et affectez la taille de l’objet
InputStream
. Appelez la méthodeavailable
de l’objetInputStream
pour obtenir la taille de l’objetInputStream
. - Renseignez le tableau d’octets avec le flux de données de formulaire en appelant la méthode
read
de l’objetInputStream
et en transmettant le tableau d’octets en tant qu’argument. - Appelez la méthode
write
de l’objetjavax.servlet.ServletOutputStream
pour envoyer le flux de données de formulaire au navigateur web client. Transmettez le tableau d’octets à la méthodewrite
.
- Créez un objet
Voir également
Rendre des formulaires par valeur
Démarrage rapide (mode SOAP) : Rendu par valeur à l’aide de l’API Java
Rendre un formulaire par valeur à l’aide de l’API de service web render-a-form-by-value-using-the-web-service-api
Rendre un formulaire par valeur à l’aide de l’API Forms (service web) :
-
Inclure les fichiers du projet
- Créez des classes proxy Java qui utilisent le service WSDL de Forms.
- Incluez les classes proxy Java dans le chemin d’accès de classe.
-
Créer un objet API Forms client
Créez un objet
FormsService
et définissez les valeurs d’authentification. -
Référencer la conception de formulaire
- Créez un objet
java.io.FileInputStream
en utilisant son constructeur. Transmettez une valeur de chaîne spécifiant l’emplacement du fichier XDP. - Créez un objet
BLOB
en utilisant son constructeur. L’objetBLOB
sert à stocker un document PDF chiffré avec un mot de passe. - Créez un tableau d’octets qui stocke le contenu de l’objet
java.io.FileInputStream
. Vous pouvez déterminer la taille du tableau d’octets en obtenant la taille de l’objetjava.io.FileInputStream
à l’aide de sa méthodeavailable
. - Renseignez le tableau d’octets avec les données de flux en appelant la méthode
read
de l’objetjava.io.FileInputStream
et en transmettant le tableau d’octets. - Renseignez l’objet
BLOB
en appelant sa méthodesetBinaryData
et en transmettant le tableau d’octets.
- Créez un objet
-
Rendre un formulaire par valeur
Appelez la méthode
renderPDFForm
de l’objetFormsService
et transmettez les valeurs suivantes :- Une valeur de chaîne vide. (Normalement, ce paramètre nécessite une valeur de chaîne qui indique le nom de la conception de formulaire.)
- Un objet
BLOB
contenant la conception de formulaire. Normalement, cette valeur de paramètre est réservée aux données fusionnées avec le formulaire. - Un objet
PDFFormRenderSpec
stockant les options d’exécution. Ce paramètre est facultatif et vous pouvez indiquernull
si vous ne souhaitez pas spécifier d’options d’exécution. - Un objet
URLSpec
contenant des valeurs URI requises par le service Forms. - Un objet
java.util.HashMap
qui stocke les pièces jointes. Il sʼagit dʼun paramètre facultatif. Vous pouvez indiquernull
si vous ne souhaitez pas joindre de fichier au formulaire. - Un objet
com.adobe.idp.services.holders.BLOBHolder
vide qui est renseigné par la méthode. Il permet de stocker le formulaire PDF rendu. - Objet
javax.xml.rpc.holders.LongHolder
vide qui est renseigné par la méthode. (Cet argument stocke le nombre de pages dans le formulaire.) - Objet
javax.xml.rpc.holders.StringHolder
vide qui est renseigné par la méthode. (Cet argument stocke la valeur des paramètres régionaux.) - Objet
com.adobe.idp.services.holders.FormsResultHolder
vide qui contiendra les résultats de cette opération.
La méthode
renderPDFForm
renseigne l’objetcom.adobe.idp.services.holders.FormsResultHolder
qui est transmis en tant que dernière valeur d’argument avec un flux de données de formulaire qui doit être écrit dans le navigateur web client. -
É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éesvalue
de l’objetcom.adobe.idp.services.holders.FormsResultHolder
. - Créez un objet
BLOB
qui contient les données du formulaire en appelant la méthodegetOutputContent
de l’objetFormsResult
. - Obtenez le type de contenu de l’objet
BLOB
en appelant sa méthodegetContentType
. - Définissez le type de contenu de l’objet
javax.servlet.http.HttpServletResponse
en appelant sa méthodesetContentType
et en transmettant le type de contenu de l’objetBLOB
. - 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éthodegetOutputStream
de l’objetjavax.servlet.http.HttpServletResponse
. - Créez un tableau d’octets et renseignez-le en appelant la méthode
getBinaryData
de l’objetBLOB
. Cette tâche affecte le contenu de l’objetFormsResult
au tableau d’octets. - Appelez la méthode
write
de l’objetjavax.servlet.http.HttpServletResponse
pour envoyer le flux de données du formulaire vers le navigateur web du client. Transmettez le tableau d’octets à la méthodewrite
.
- Créez un objet
Voir également
Rendre des formulaires par valeur
Appeler AEM Forms en utilisant le codage Base64