Ce connecteur est en fait une interface d'accès à un logiciel de traitement des fichiers PDF, pdftk : https://gitlab.com/pdftk-java/pdftk
Le logiciel pdftk est installé sur la même machine que Passerelle, et on peut l'appeler par webservice pour :Le webservice « /assemble » reçoit un dictionnaire de cette forme :
{ "filename": "output.pdf", "files/0": { "filename": "example-1.pdf", "content_type": "application/pdf", "content": "JVBERi0xL...(base64 PDF)..." }, "files/1": { "filename": "example-2.pdf", "content_type": "application/pdf", "content": "//4lUERGL...(base64 PDF)..." }, "files/2": ... }
Il retourne en réponse un document PDF, assemblage de files/0 + files/1 + files/2 + ...
La traduction dans le workflow d'une démarche sera de faire une action webservice :filename
et un files/0
:
filename
: un gabarit représentant le nom du fichier attendu en retourfiles/0
: un gabarit représentant un champ fichier, par exemple {{ form_var_premier_fichier }}files/1
: un gabarit représentant un champ fichier, par exemple {{ form_var_second_fichier }}files/n
: un gabarit représentant un champ fichier, par exemple {{ form_var_nieme_fichier }}files
: un gabarit qui retourne une liste de fichier, par exemple : {{ form_objects|with_custom_view:"pdf"|getlist:"form_attachments_document"|join:"," }}Le webservice « fill-form » permet de remplir les champs d'un fichier PDF de type « formulaire PDF » (acroform), par exemple tel que celui visible sur https://www.service-public.fr/particuliers/vosdroits/R1492 (cerfa 10072-02, Déclaration d'intention d'aliéner ou demande d'acquisition d'un bien soumis à un droit de préemption / formulaire 10072*02)
Le connecteur dispose du fichier PDF formulaire au niveau de sa configuration, dans « Fichier formulaire PDF »
Un bouton « Remplissage de formulaire: éditer les correspondances de champ » est accessible sur le connecteur, qui présente tous les champs disponibles dans une vue du fichier PDF. Pour chacun, il faut écrire un gabarit ou une condition, en Django. Les gabarits pour les champs textes, et les conditions pour les cases à cocher.
Ces gabarits et conditions vont recevoir toutes les données envoyées lors de l'appel au webservice « fill-form ».
Le webservice « fill-form » doit donc recevoir un dictionnaire JSON, lequel sera envoyé aux gabarits et conditions pour le calcul de chacun des champs à remplir. Le webservice peut donc éventuellement recevoir « toutes les données du formulaires » depuis une action appel webservice (case « Envoyer les données du formulaire »)
La traduction dans le workflow d'une démarche sera de faire une action webservice :filename
, gabarit représentant le nom du fichier attendu en retourNote : le format du dictionnaire envoyé par la case à cocher « Envoyer les données du formulaire » est documenté sur https://doc-publik.entrouvert.com/dev/wcs/api-webservices/recuperation-des-donnees-d-un-formulaire/#mode-pull
Le webservice « /watermark » reçoit un dictionnaire de cette forme :
{ "filename": "output.pdf", "file": { "filename": "example-1.pdf", "content_type": "application/pdf", "content": "JVBERi0xL...(base64 PDF)..." }, "stamp": { "filename": "filigrane.pdf", "content_type": "application/pdf", "content": "//4lUERGL...(base64 PDF)..." } }
Il retourne en réponse un document PDF, qui est le fichier "file" avec en filigrane "stamp".
La traduction dans le workflow d'une démarche sera de faire une action webservice :filename
, un file
et un stamp
:
filename
: un gabarit représentant le nom du fichier attendu en retourfile
: un gabarit représentant un champ fichier, par exemple {{ form_var_fichier }}stamp
: un gabarit représentant un champ fichier, par exemple {{ form_var_filigrane }}