PDF Filler est un service RESTful (API) qui aide à remplir les formulaires PDF existants et permet aux développeurs Web d'utiliser des formulaires basés sur un navigateur et des normes Web modernes pour faciliter la collecte d'informations.
PDF Filler fonctionne avec pratiquement tous les PDF non cryptés, prenant en charge les formulaires à remplir (par exemple, les PDF avec des champs de saisie prédéfinis) et les formulaires non remplissables (par exemple, les PDF numérisés). Transmettez-lui simplement l’URL de n’importe quel PDF hébergé publiquement. PDF Filler peut même créer automatiquement le balisage nécessaire pour intégrer un formulaire HTML dans une page Web existante.
Le projet résume la logique de remplissage de formulaire de pdftk et de crevette.
PDF Filler fonctionne en acceptant une paire clé => valeur de noms de champs et de valeurs. Ces champs peuvent être soit des champs de formulaire PDF à remplir, soit une coordonnée x/y arbitraire d'un champ non remplissable. Pour les PDF remplissables, la clé doit représenter le nom du champ. Dans les PDF non remplissables, la clé doit représenter les coordonnées du champ comme décrit ci-dessous (par exemple, 100,100
). Dans les deux cas, la valeur du champ doit contenir la saisie utilisateur pour ce champ donné.
Les noms de champs peuvent être découverts localement à l'aide de l'utilitaire PDF open source pdftk ou de manière dynamique à l'aide du service.
Pour obtenir une liste de tous les champs d'un PDF donné
/fields?pdf={URL to the PDF}
Pour obtenir une représentation JSON de tous les champs d'un PDF donné
/fields.json?pdf={URL to the PDF}
Pour remplir un PDF, envoyez une requête POST
à /fill
. Les données POST doivent être au format clé => valeur où clé représente le nom du champ et valeur représente la valeur du champ. Assurez-vous de passer une clé de "pdf" avec l'URL du PDF à remplir. Le service renverra le PDF rempli sous forme de téléchargement.
Remarque : En raison de la manière dont HTML gère les formulaires, certains caractères spéciaux tels que les crochets ne seront pas correctement publiés sur le service. Si le champ PDF contient des caractères réservés, codez simplement le nom du champ avant le POST.
Pour obtenir une représentation HTML générique de tout formulaire PDF à remplir
/form?pdf={URL To PDF}
Les PDF non remplissables (par exemple, les PDF numérisés ou autres sans formulaires structurés) nécessitent la transmission des coordonnées X, Y et (éventuellement) d'un numéro de page. Ces données sont transmises en utilisant la convention de dénomination suivante pour le champ : x,y,page
(ou simplement x,y
) où X et Y représentent les coordonnées du pointeur à partir du coin inférieur gauche du document. Si aucune page n'est indiquée, la première page sera prise en compte.
Les données peuvent être soumises par programme (par exemple via une API) ou sous forme de formulaire Web standard. Par exemple, pour structurer un formulaire HTML, vous pouvez procéder comme suit :
< form method =" post " action =" /fill " >
<!-- A standard, fillable field, simply pass the field name -->
< label > First Name: < input type =" text " name =" first_name " /> < label >
<!-- A non-fillable field for which we pass coordinates -->
< label > Last Name: < input type =" text " name =" 100,100,1 " /> < label >
< input type =" submit " value =" Submit " />
</ form >
$ curl -L https://get.rvm.io | bash -s stable --ruby
)gem install bundler
)git clone [email protected]:GSA-OCSIT/pdf-filler.git
et cd
dans le répertoire cible (très probablement pdf-filler
)bundle install
Pour exécuter, exécutez simplement la commande ruby app.rb
depuis le répertoire du projet. Le service sera exposé sur le port 4567
par défaut.
Vous pouvez utiliser librement PDF Filler en tant que service Web. Mais si vous souhaitez récupérer le code source et l’héberger localement, c’est en fait assez simple.
PDF Filler utilise pdftk pour gérer le remplissage du formulaire d'action. pdftk peut être téléchargé et installé librement sur la plupart des systèmes. S'il est installé à un emplacement autre que /usr/local/bin/pdftk
, assurez-vous de mettre à jour la configuration en définissant la variable d'environnement PATH_TO_PDFTK
sur le chemin approprié.
PDF Filler est écrit en Ruby et utilise Sinatra pour générer une API RESTful
PDF Filler est simple à déployer en tant que service backend sur votre serveur. Suivez les instructions ici : http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-which-i-employ-a-secretary/ comme exemple de déploiement et de configuration. configurez l'application en tant que service backend sur votre machine. Il existe un fichier appelé daemon.rb qui fait partie de l'application à cet effet.
L'application est conçue pour être hébergée sur des services d'hébergement comme Heroku. Si vous utilisez Heroku, assurez-vous de sélectionner la version "Bamboo" (qui est compilée avec pdftk) et de définir une configuration d'environnement pour PATH_TO_PDFTK
sur /usr/bin/pdftk
.
Tout le monde est encouragé à contribuer au projet en créant et en soumettant une pull request. (Si vous êtes nouveau sur GitHub, vous pouvez commencer par un didacticiel de base.)
En contribuant à ce projet, vous accordez une licence mondiale, libre de droits, perpétuelle, irrévocable, non exclusive et transférable à tous les utilisateurs selon les termes de la licence MIT.
Ce projet constitue un travail du gouvernement des États-Unis sous 17 USC 105 et est distribué selon les termes de la licence MIT.