Le «connecteur» PDF

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 :

Assemblage de PDF

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 : Il est également possible d'assembler les fichiers PDF avec un filtre de requête qui retourne une liste.
Exemple :

Remplissage de formulaire PDF (fill-form)

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 :

Note : 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

Ajout de filigrane (watermark)

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 :