hello,
voici ce que je te propose:
Le principe :
1 - On choisit un fichier formulaire modèle PDF interactif
3 - On le copie dans un fichier qui servira de fichier PDF temporaire.
4 - On ouvre ce fichier PDF temporaire dans un champ HTML (le nouveau de Windev 26 basé sur Chromium)
5 - On remplit le formulaire
6 - Quand on a fini on clique sur un bouton qui sauvegarde ce qu'on a rempli dans le formulaire PDF temporaire.
7 - On récupère les champs du formulaire et leur contenu par
itextsharp.
Comme je n'ai que windev 16 j'ai utilisé à la place du champ HTML, un contrôle dotnet
WebView2 (voir
ici )
voici le code de chargement du fichier de formulaire :
1 2 3 4 5 6 7
| Sai_Formulaire=fSélecteur("", "", "Sélectionnez un fichier.....", "fichiers pdf (*.pdf)"+TAB+"*.pdf", "*.*", fselOuvre+fselExiste)
SI Sai_Formulaire <> "" ALORS
MonFormulaire est une chaîne = Remplace(Sai_Formulaire, ".pdf", "_tmp.pdf")
fCopieFichier(Sai_Formulaire,MonFormulaire)
MonUri = allouer System.Uri(MonFormulaire)
MonWebView.Source = MonUri
FIN |
et voici le code de récupération des champs :
1 2 3 4 5 6 7 8 9 10
| MonFormulaire est une chaîne = Remplace(Sai_Formulaire, ".pdf", "_tmp.pdf")
MonWebView.focus()
EnvoieTouche("^s")
Multitâche(-200)
MonFichierPDF est un PdfReader(MonFormulaire)
formulaire est un AcroFields dynamique
formulaire = MonFichierPDF.get_AcroFields()
POUR TOUT MONFieldElement DE formulaire.Fields
Trace(MONFieldElement.Key," -> ",formulaire.GetField(MONFieldElement.Key))
FIN |
On utilise l'envoi de touche
Ctrl S pour sauvegarder le document.
J'ai utilisé la version 4.1.6 de
itextSharp pour récupérer les champs:
Pour récupérer cet assemblage dotnet :
Télécharger le fichier nupkg
ici (download package)
Ouvrir le fichier
nupkg avec
7zip et extraire le fichier
lib/itextsharp.dll
Utiliser cet assemblage dotnet dans son projet.
Si on arrive pas à lire les champs avec ce composant, se tourner vers un assemblage plus moderne (
itext 7 par exemple mais qui a une licence
AGPL qui peut être contraignante pour une application commerciale distribuée)
Voici un exemple de ce que cela peut donner avec un formulaire interactif PDF d'Ameli :
et voici le résultat de la récupération des champs :
Ami calmant, J.P
Partager