PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Récupérer les champs d'un PDF
Récupérer les champs d'un PDF
Débuté par CreatAddict, 01 mai 2014 21:36 - 30 réponses
Membre enregistré
399 messages
Posté le 01 mai 2014 - 21:36
Bonjour,

J'ai généré un PDF avec des zone de saisie.

De là, je voudrais récupérer les champs de saisie (étiquette et contenu), est-il possible en WinDev 19 ?

Merci d'avance pour vos réponses.

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
280 messages
Posté le 02 mai 2014 - 08:57
tu peux utiliser les "Traitements associés à un champ de saisie dans un état"( voir http://doc.pcsoft.fr/fr-FR/?1011074), je pense au traitement "Sortie" dans lequel tu mémorises le contenu de ton champ dans une variable globale au projet.

--
Olivier chez EasySoftSystem
Membre enregistré
399 messages
Posté le 05 mai 2014 - 09:06
Bonjour, merci pour la réponse, je précise que le PDF est téléchargé sur le pc de l'utilisateur, en suite, il envoie le PDF par mail.

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
56 messages
Posté le 05 mai 2014 - 11:23
Bonjour,
Cela m'intéresse aussi. Avec la fonction PDFVersTexte on récupère le texte des champs de formulaires remplis par l'utilisateur. Ça reste assez rudimentaire, mais si on a un label explicite devant chaque champ on peut s'y retrouver.

Par contre, cela ne renvoie que le texte donc si le formulaire pdf contient des cases à cocher, des boutons radios ... on ne récupère pas le choix.
Membre enregistré
399 messages
Posté le 05 mai 2014 - 16:01
J'ai u le support technique de pcsoft qui ma dit ne pas avoir de solution !

Merci pour le nom de la fonction, cela vas me permettre d'avancer.

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
56 messages
Posté le 05 mai 2014 - 16:26
Comme tu génères toi-même le formulaire pdf tu peux t'arranger pour que l'ordre des champs, le libellé etc soit simple et cohérent, à partir de là si tu veux juste récupérer des valeurs ça pourra marcher.
J'ai joué un peu avec et malheureusement pas moyen de trouver les valeurs pour les cases à cocher et autres : je pensais pouvoir utiliser un champ de saisie invisible, mais rempli avec la valeur cochée, par exemple, mais ça ne marche pas car PdfVersTexte ne renvoie pas le contenu des champs invisibles...

Sans quoi il existe une bibliothèque java (iText) capable de faire ça et bien d'autres choses, mais je ne sais pas s'il est possible de l'utiliser "directement" avec Windev ? Si quelqu'un a une idée d'ailleurs ?

On peut faire en java un exe en ligne de commande acceptant un nom de fichier en paramètre, et qui renverra une liste des champs, contenus et noms, dans un fichier texte, et l'appeler depuis Windev : c'est un peu tortueux mais ça marcherait.
Membre enregistré
962 messages
Posté le 06 mai 2014 - 02:16
hello,
il existe la version dotnet de iText qui s'appelle iTextSharp , on peut facilement utiliser l'assemblage dans windev. A partir de la version 5, iText est passé en licence AGPL ( c'est à dire très restrictive pour un projet commercial). Par contre l'ancienne version la 4.1.6 est en licence MPL/LGPL (beaucoup moins restrictive).
Voici un exemple de code qui utilise l'assemblage iTextSharp en version 4.1.6. On lit un document PDF interactif rempli et on récupère tous ses champs en affichant leurs noms, leurs types et leurs valeurs.
MonFichierPDF est un PdfReader("F:\interactiveform_enabled.pdf")
formulaire est un AcroFields dynamique
formulaire = MonFichierPDF.get_AcroFields()
POUR TOUT MONFieldElement DE formulaire.Fields
Trace(MONFieldElement.Key,formulaire.GetFieldType(MONFieldElement.Key),formulaire.GetField(MONFieldElement.Key))
FIN


Voici le document source :




et le résultat :
Emergency_Contact 4 KOEK
Birthdate 4 10/02/2000
EMPLOYEE SIGNATURE 7
Telephone_Work 4 0503040406
Emergency_Phone 4 0202020202
Name_Middle 4 Pork
STATE 4 ca
OTHER DOCTORATE 2
Address_1 4 10
PHD 2
Name_Suffix 4
PROFESSIONAL DEGREE 2
Address_2 4 rue du port
Sex 3 MALE
ZIP 4 40404
MASTERS DEGREE 2
Print 1
Name_Last 4 JP
City 4 Porktown
HIGH SCHOOL DIPLOMA 2
Name_First 4 Jurassic
ASSOCIATES DEGREE 2
SSN 4 030303030
Name_Prefix 4
TRADE CERTIFICATE 2 On
BACHELORS DEGREE 2 On
COLLEGE NO DEGREE 2
Telephone_Home 4 0102030405
Emergency_Relationship 4


Ami calmant, J.P
Membre enregistré
399 messages
Posté le 06 mai 2014 - 10:04
Bonjour à tous, Merci pour vos réponses qui me redonne espoir.

@Jurassic Pork, ou je peut trouver iTextSharp en version 4.1.6 ? et comment on utilise ce truc ? je viens de passer 2h dans Google pour trouver et je trouve rien :(

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
399 messages
Posté le 06 mai 2014 - 10:23
J'ai trouvé la DLML ici http://pdfviewernet.googlecode.com/svn-history/r55/trunk/PDFView/PDFView/lib/itextsharp.dll

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
399 messages
Posté le 06 mai 2014 - 10:28
Trouvé, piuffff bien compliqué WinDev...

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
56 messages
Posté le 06 mai 2014 - 10:38
Merci pour cette réponse Jurassic Pork, je n'avais pas pensé à l'équivalent en C# de cette bibliothèque. En même temps je découvre l'utilisation des assemblages .net sous Windev et c'est super :merci:

@C4Y je dirais plutôt que c'est le format pdf qui est compliqué (à un point d'ailleurs...). Donc forcément une classe qui manipule un pdf de A à Z c'est un roman en soi.
Membre enregistré
399 messages
Posté le 06 mai 2014 - 10:39
Voila le résultat d'une ligne récupéré, suis mort !!!!!

Pays_IY5MFqVU6bsX6PUayeR8ow 4

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Membre enregistré
962 messages
Posté le 06 mai 2014 - 10:57
tu es mort ? de rire ?
la ligne me paraît logique

Pays_IY5MFqVU6bsX6PUayeR8ow : Windev doit donner des noms composés du nom du champ + une séquence de caractères plus ou moins aléatoire.
4 : il s'agit de texte
rien : y - a - t-il une valeur dans le champ ?
Membre enregistré
56 messages
Posté le 06 mai 2014 - 11:59
Ça marche nickel sur mes formulaires, et on récupère bien les champs invisibles, les cases à cocher etc :merci:

@C4Y le nom "Pays_IY5MFqVU6bsX6PUayeR8ow" a sans doute été créé automatiquement par le logiciel avec lequel tu as conçu le formulaire. Tu verrais ce même nom dans Acrobat Pro ou tout autre soft si tu ouvrais ton formulaire avec.
Membre enregistré
1 418 messages
Posté le 06 mai 2014 - 12:18
Intéressant

--
Bertin CARRIERE
Consultant & Formateur
bertin.carriere@gmail.com
http://www.zen-project.be http://www.linkedin.com/in/bertincarriere

Belgique +32(0)2/318.02.67
France +33(0)3/66.722.542
Espagne +34.5/12.702.266

Membre de http://www.be-dev.be
Membre enregistré
399 messages
Posté le 06 mai 2014 - 12:47
Top nikel, comme dit Ancoma, c'est le soft qui à crée cette clé, 100 mille merci à Jurassic Pork, sans lui je ne serais pas y arriver.

Bon dev à tous, que la force soie avec vous :D

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18
Posté le 10 mars 2017 - 15:25
Jurassic Pork a écrit :
hello,
il existe la version dotnet de iText qui s'appelle iTextSharp , on peut facilement utiliser l'assemblage dans windev. A partir de la version 5, iText est passé en licence AGPL ( c'est à dire très restrictive pour un projet commercial). Par contre l'ancienne version la 4.1.6 est en licence MPL/LGPL (beaucoup moins restrictive).
Voici un exemple de code qui utilise l'assemblage iTextSharp en version 4.1.6. On lit un document PDF interactif rempli et on récupère tous ses champs en affichant leurs noms, leurs types et leurs valeurs.
MonFichierPDF est un PdfReader("F:\interactiveform_enabled.pdf")
formulaire est un AcroFields dynamique
formulaire = MonFichierPDF.get_AcroFields()
POUR TOUT MONFieldElement de formulaire.Fields
Trace(MONFieldElement.Key,formulaire.GetFieldType(MONFieldElement.Key),formulaire.GetField(MONFieldElement.Key))
FIN


Voici le document source :
http://hostimage.windev.io/images/itextsharp-2_6828c7d0e67e3e40c20c652439afc894.png

et le résultat :
Emergency_Contact 4 KOEK
Birthdate 4 10/02/2000
EMPLOYEE SIGNATURE 7
Telephone_Work 4 0503040406
Emergency_Phone 4 0202020202
Name_Middle 4 Pork
STATE 4 ca
OTHER DOCTORATE 2
Address_1 4 10
PHD 2
Name_Suffix 4
PROFESSIONAL DEGREE 2
Address_2 4 rue du port
Sex 3 MALE
ZIP 4 40404
MASTERS DEGREE 2
Print 1
Name_Last 4 JP
City 4 Porktown
HIGH SCHOOL DIPLOMA 2
Name_First 4 Jurassic
ASSOCIATES DEGREE 2
SSN 4 030303030
Name_Prefix 4
TRADE CERTIFICATE 2 On
BACHELORS DEGREE 2 On
COLLEGE NO DEGREE 2
Telephone_Home 4 0102030405
Emergency_Relationship 4


Ami calmant, J.P


Bonjour
Excusez moi mais je n'arrive pas a utiliser ce doe cela me crée une erreur car MonFichierPDF est un PdfReader("F:\interactiveform_enabled.pdf") n'est pas une variable
Help me
Membre enregistré
127 messages
Posté le 26 mai 2017 - 11:04
Bonjour,

L'exemple fourni par J. Pork fonctionne très bien (énumération des éléments du formulaire d'un < pdf >).
Toujours dans l'esprit du remplissage de formulaire (ce qui peut se faire avec l’importation de fichiers< fdf > pour un < pdf>) existe-t-il un procédé aussi simple (dll, Wlangage ...) qui permette de remplir le formulaire d'une page Web, sans que l'on soit un pro d'Internet (demandeur = prof. libérale ... non programmeur) ?

Merci (à J.P. ... d'avance)

Mike
Posté le 09 avril 2019 - 21:25
CreatAddict a écrit :
Bonjour à tous, Merci pour vos réponses qui me redonne espoir.

@Jurassic Pork, ou je peut trouver iTextSharp en version 4.1.6 ? et comment on utilise ce truc ? je viens de passer 2h dans Google pour trouver et je trouve rien :(

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18


Bonjour,

Finalement avez-vous pu récupérer iTextSharp en version 4.1.6 ?
Et si oui pourriez-vous me le refiler car je suis comme vous je cherche, je cherche et je trouve rien !
je vous remercie par avance ...

Cordialement,
Windev 24
Membre enregistré
277 messages
Posté le 09 avril 2019 - 21:30
CreatAddict a écrit :
Bonjour à tous, Merci pour vos réponses qui me redonne espoir.

@Jurassic Pork, ou je peut trouver iTextSharp en version 4.1.6 ? et comment on utilise ce truc ? je viens de passer 2h dans Google pour trouver et je trouve rien

--
Librement.

www.creadepa.fr
Windev 18, Windev Mobile 18, WebDev 18


Bonjour,

Finalement avez-vous pu récupérer iTextSharp en version 4.1.6 ?
Et si oui pourriez-vous me le refiler car je suis comme vous je cherche, je cherche et je trouve rien !
je vous remercie par avance ...

Cordialement,
Membre enregistré
3 782 messages
Posté le 09 avril 2019 - 22:44
Salut André.
source des la dll https://github.com/itextsharper/iTextSharp-4.1.6
dotnet add package iTextSharp-LGPL --version 4.1.6
une version compilé fais partie de PDF viewver
tu téléchargé sur cette page https://code.google.com/archive/p/pdfviewernet/downloads
puis tu décompresse.
Membre enregistré
277 messages
Posté le 09 avril 2019 - 22:57
@Popoy
Bonjour,
Malheureusement le 1er lien m’envoie au code source (que j'avais repéré d'ailleurs) et non à directement à la DLL et le 2e sur PdfViewerNET qui n'a rien à voir avec iTextSharp...
Merci quand même...
Membre enregistré
3 782 messages
Posté le 10 avril 2019 - 07:52
j'ai bien indiqué que le premier lien était le source.
As tu bien téléchargé les 2 fichiers ZIP proposé dans le 2eme lien.
je te garantie que l'un des 2 contient la dll de itextsharp.
l'ancien lien proposé de pdfviewver proposé plus haut a été archivé c'est le lien que j'ai proposé.
j'ai vérifier le ZIP avant de poster.
Membre enregistré
3 782 messages
Posté le 10 avril 2019 - 07:55
autre solution, tu prend le source que tu recompile en visual studio
Membre enregistré
277 messages
Posté le 10 avril 2019 - 09:38
Ok, j'ai bien récupéré la DLL, merci :merci:

Maintenant j'ai un autre problème, lorsque j’exécute le code mentionné plus haut fourni par J.P. j'obtiens deux erreur de compilation identiques.
ça me dit que le type est inconnu ? y'a qq chose d'autre à paramétrer avant ?
Je suis en Windev 24.


Membre enregistré
3 782 messages
Posté le 10 avril 2019 - 10:00
Désolé, ce ne doit pas être la bonne version de dll.
Si quelqu'un l'a garder , merci de partager.
Ou si quelqu'un peut le compilé, pareil (perso je suis nul en visual studio)
Membre enregistré
277 messages
Posté le 10 avril 2019 - 11:44
Si si, j'ai vérifié avec un clic droit sur les propriétés de la DLL, c'est bien la 4.1.6.
La DLL est bien chargée en mémoire, (j'ai bien une instance) mais je ne comprends pas cette erreur.
Il doit surement y a voir une déclaration à faire, mais quoi ?
Membre enregistré
3 782 messages
Posté le 10 avril 2019 - 11:59
Dans ce cas, n'utilise pas chargedll.
A la place, importe celle ci dans la partie .net
voir https://doc.pcsoft.fr/fr-FR/?2012002&2012002
Membre enregistré
277 messages
Posté le 10 avril 2019 - 20:52
Oui ! Effectivement c'est bien comme ça qu'il fallait procéder :merci:
Il suffit de sélectionner la fameuse DLL et roule ma poule !
Merci beaucoup ! ça marche à présent !
Posté le 09 décembre 2020 - 08:23
ma petite pierre a l'edifice a partir de l'assemblage itextsharp

voila comment generer un fichier fdf à partir de l'assemblage :

soit acroform_pdf = ComplèteRep(fRepExe()) + "acroform.pdf"
soit outFdf = ComplèteRep(fRepExe()) + "acroform_fields.fdf"
clFos est un FileStream(outFdf, FileMode.Create)
FdfWriter est un FdfWriter()
FdfWriter.File = Path.GetFullPath(acroform_pdf)
FdfWriter.SetFieldAsString("FirstName", "Alexander")
FdfWriter.SetFieldAsString("LastName", "Chingarev")
FdfWriter.Writeto(clFos)
Membre enregistré
4 362 messages
Posté le 09 décembre 2020 - 09:18
Bonjour,
itext5 est deprecated, il faut passer par itext7

--
Il y a peut être plus simple, mais, ça tourne