PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Lire code barre sur un document numérisé
Lire code barre sur un document numérisé
Débuté par Patrice ROUVELET ( P, 02 avr. 2014 19:28 - 22 réponses
Membre enregistré
10 messages
Posté le 02 avril 2014 - 19:28
Bonjour,

Je souhaiterai lire des codes barres sur des documents numérisés en JPG

Le code barre sera situé toujours au même endroit.

Si quelqu'un a un extrait de code, je veux bien

Merci et bonne fin de journée

Patch
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 02 avril 2014 - 19:39
bonsoir
regardez ici : http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/18740-xzing-18756/read.awp…
testé sous windev 18 - seven 64
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 03 avril 2014 - 02:24
hello,
il y a aussi une version dotnet de zxing ( zxing.net) . Avec l'assemblage zxing.dll, ce code :
// créer une instance de BarcodeReader
Reader est un BarcodeReader
// détecter et décoder le code Barre dans l'image chargée dans la pictureBox PictureBox_Barcode
// la pictureBox PictureBox_Barcode a été préalablement chargée avec une image de code barre
// la pictureBox se trouve dans un panel dotnet ( champ .net 2.0)
resultat est un ZXing.Result dynamique = Reader.Decode(PictureBox_Barcode.Image)

SI resultat <> Null ALORS
// on affiche le type de code barre dans le libellé "TypeCodeBarre"
TypeCodeBarre = resultat.BarcodeFormat.ToString()
// on affiche la valeur de code barre dans le libellé "ContenuCodeBarre"
ContenuCodeBarre = resultat.Text
FIN

permet de réaliser cela (bouton décoder Code Barre) :







Ami calmant, J.P
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 03 juillet 2014 - 16:54
Bonjour,

Avec quelle classe doit-on instancier le champ PictureBox_Barcode ?

Je n'arrive malheureusement pas avec cette solution, il me manque cette info.

Merci !
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 04 juillet 2014 - 03:19
hello,
le PictureBox_Barcode est un contrôle dotnet PictureBox de l'assemblage System.Windows.Forms
déclaration dans le code Déclarations globales de la fenêtre :
PictureBox_Barcode est une PictureBox

Dans la copie d'écran présentée l'image scannée se trouve dans le contrôle PictureBox qui se trouve lui-même dans un champ dotnet 2.0 (winforms) panel classe : System.Windows.Forms.Panel
Pour mettre le contrôle PictureBox PictureBox_Barcode dans le panel (qui s'appelle Panel3) voici le code employé dans le code d'initialisation de Panel3.
Panel3:get_Controls():Add(PictureBox_Barcode)
PictureBox_Barcode.Height = Panel3.Height
PictureBox_Barcode.Width = Panel3.Width
PictureBox_Barcode.SizeMode = PictureBoxSizeMode.Zoom

Et pour charger la PictureBox voici le code :
sFichier est une chaîne = fSélecteurImage("", "", "Sélectionnez une image...")
SI sFichier<>"" ALORS
PictureBox_Barcode.Load(sFichier)
FIN


--
Ami calmant, J.P
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 04 juillet 2014 - 10:52
Merci beaucoup Jurassic Pork pour cette réponse précise et complète qui m'a permis d'y arriver! :merci:

J'aimerais juste encore ajouter quelque chose pour une difficulté que j'ai rencontrée lors de la mise en place de cette solution et qui pourront en aider d'autres :
j'avais une erreur de ce style :
***
Erreur à la ligne 2 du traitement Clic sur BTN_Decoder.
L'objet de type <ZXing.BarcodeReader> (assemblage <D:\temp\ZXing_dotNET\Exe\zxing.dll>) n'a pas pu être créé
L'assemblage <D:\temp\ZXing_dotNET\Exe\zxing.dll> n'a pas pu être ouvert
Le framework .NET a renvoyé l'erreur suivante :
Impossible de charger le fichier ou l'assembly 'file:///D:\temp\ZXing_dotNET\Exe\zxing.dll' ou une de ses dépendances. L'opération n'est pas prise en charge. (Exception de HRESULT : 0x80131515)
L'assemblage <zxing> n'a pas pu être ouvert
***

Le problème était dû a une erreur de sécurité de la DLL : comme elle provient d'une autre source que mon poste de travail il faut explicitement la "valider" pour qu'elle puisse être utlisée en tant qu'assemblage .NET.
Cela se fait par la manipulation suivante :
- Clic droit sur le fichier DLL zxing.dll
- Aller sous l'onglet "Général"
- Sous le libellé "Sécurité" cliquer sur le bouton "Débloquer" comme ilustré ci-dessous :





Ensuite cela fonctionne sans problème!
Posté le 09 janvier 2017 - 10:35
bonjour

j ai essaye votre methode pour lire le pdf mais etant novie en windev je n arrive pas a creer le panel

pourriez vous m aider svp

merci
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 10 janvier 2017 - 14:40
Bonjour stephane,

Je vous ai mis un exemple sous forme de projet complet ici : http://progx.ch/PROGX_WEB/windev/exemple_ZXing.zip

Et ici les binaires uniquement correspondant à ce projet exemple : http://progx.ch/PROGX_WEB/windev/exe_ZXing.zip

Il y a trois méthode distinctes pour décoder :

- Celle utilisant le composant .NET téléchargé sur https://zxingnet.codeplex.com/
- Celle utilisant les fonctions d'interfaçage Java (la version de ZXing utilisée est plus vieille sur cette méthode)
- La méthode WLangage directe (mais qui ne fonctionne qu'avec des code barre de type QRcode)

Bon développements!
Posté le 11 janvier 2017 - 10:56
un grand merci Jérôme :merci: je vais tester cela par contre j ai oublié de préciser je suis encore sur la version 21 express.

je sais rien de tel que la version complété ( que j aurais si j arrive a convaincre mon boss que cela peu nous être utile :D
, d’où cet essai de développement)
par contre j ai réussi a recréer cela suivant votre modèle ci dessus.
cela marche pour charger un code 128 dans une image mais y as t il possibilité de rechercher dans un pdf avec cette solution

d avance merci

Stéphane
Posté le 12 janvier 2017 - 13:25
On 2017-01-10 12:40:01 +0000, ÿÿÿÿÿÿÿ said:

Bonjour stephane,

Je vous ai mis un exemple sous forme de projet complet ici :
http://progx.ch/PROGX_WEB/windev/exemple_ZXing.zip

Et ici les binaires uniquement correspondant à ce projet exemple :
http://progx.ch/PROGX_WEB/windev/exe_ZXing.zip

Il y a trois méthode distinctes pour décoder :

- Celle utilisant le composant .NET téléchargé sur
https://zxingnet.codeplex.com/
- Celle utilisant les fonctions d'interfaçage Java (la version de ZXing
utilisée est plus vieille sur cette méthode)
- La méthode WLangage directe (mais qui ne fonctionne qu'avec des code
barre de type QRcode)

Bon développements!


Bonjour,

J'ai téléchargé votre projet...mais je n'arrive pas à l'ouvrir avec la
WD 22 (v64) il plante à l'ouverture à l'ouverture 13 % et me sort de WD.

J'ai télechargé deux fois le ZIP sans succés ?

Merci
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 12 janvier 2017 - 18:57
Bonjour Christian,

J'ai téléchargé à nouveau le zip exemple_ZXing.zip, j'ai dézippé et j'ai testé => ça fonctionne.
Le MD5 est : e401170a35907ab44ef5733c88f8a4f0
Avez-vous le même résultat?

Il ne faut pas oublier de faire la manipulation de mon message n° #6 du 04 juillet 2014 - 10:52 de ce fil de discussion.

@stephane
Pour faire la même chose dans un PDF il suffit d'en extraire la page et de la mettre dans un buffer image.

Ce bout de code permet d'y arriver (à ajouter dans le code d'un bouton de mon projet exemple):
HTTPRequête("http://www.codesbarres.com/frprimer.pdf")
bufPDF est un Buffer = HTTPDonneRésultat()
sFichierPDF est une chaîne = gsRepTemp+DonneGUID(guidBrut)+".pdf"
sFichierPNG est une chaîne = gsRepTemp+DonneGUID(guidBrut)+".pdf"
fSauveBuffer(sFichierPDF,bufPDF)
imgTest est une WL.Image = PDFExtraitPage(sFichierPDF,6)
SAI_Fichier_ou_URL = sFichierPNG
dSauveImagePNG(imgTest,SAI_Fichier_ou_URL)
maj_image_code_barre()
IMG_code_barre = SAI_Fichier_ou_URL
Posté le 13 janvier 2017 - 09:05
On 2017-01-12 16:57:56 +0000, ÿÿÿÿÿÿÿ said:

Bonjour Christian,

J'ai téléchargé à nouveau le zip exemple_ZXing.zip, j'ai dézippé et
j'ai testé => ça fonctionne.
Le MD5 est : e401170a35907ab44ef5733c88f8a4f0
Avez-vous le même résultat?

Il ne faut pas oublier de faire la manipulation de mon message n° #6 du
04 juillet 2014 - 10:52 de ce fil de discussion.

@stephane
Pour faire la même chose dans un PDF il suffit d'en extraire la page et
de la mettre dans un buffer image.

Ce bout de code permet d'y arriver (à ajouter dans le code d'un bouton
de mon projet exemple):
HTTPRequête("http://www.codesbarres.com/frprimer.pdf")
bufPDF est un Buffer = HTTPDonneRésultat()
sFichierPDF est une chaîne = gsRepTemp+DonneGUID(guidBrut)+".pdf"
sFichierPNG est une chaîne = gsRepTemp+DonneGUID(guidBrut)+".pdf"
fSauveBuffer(sFichierPDF,bufPDF)
imgTest est une WL.Image = PDFExtraitPage(sFichierPDF,6)
SAI_Fichier_ou_URL = sFichierPNG
dSauveImagePNG(imgTest,SAI_Fichier_ou_URL)
maj_image_code_barre()
IMG_code_barre = SAI_Fichier_ou_URL


Bonjour,

Merci de me répondre...l'erreur venait d'ailleurs...j'ai fait la MAJ
(patch) de PC-SOFT concernant le .NET et cela fonctionne.
Je suis sur un projet plus large et j'aimerai pour converser en direct
christian.dupuy"arobase"me.com

Merci
Posté le 13 janvier 2017 - 11:08
bonjour Jerome,

un grand merci je vais essayer de le transcrire sur mon test de windev 21
je vous tiens au courant ;)

bon week end
Posté le 16 janvier 2017 - 12:51
Bonjour Jerome,

j ai essaye votre code qui marche très bien sur le pdf chargé par contre je n arrive pas a lire sur un pdf scanné avec un photocopieur ( j ai essayé en image en pdf compact en pdf standard en ultrafin, rien n y fait )

si vous avez une petite idée..

cordialement

Stéphane
Posté le 23 janvier 2017 - 07:27
Bonjour Jerome,

merci pour toute votre aide, j ai enfin réussi à faire ce que je voulais.
le problème venait du scan qui n'était pas assez précis.
j ai inséré le code de puma afin de lire le texte des codes barres rejetés

encore merci pour votre patience, bonne journée

Stéphane
Posté le 20 juillet 2018 - 19:32
Bonjour.
Le lien est mort. Si c'est possible un autre lien valide. Merci
Posté le 20 juillet 2018 - 22:34
Stp un nouveau lien pour le code source
Posté le 19 mai 2020 - 16:31
Jérôme a écrit :
Bonjour stephane,

Je vous ai mis un exemple sous forme de projet complet ici : http://progx.ch/PROGX_WEB/windev/exemple_ZXing.zip

Et ici les binaires uniquement correspondant à ce projet exemple : http://progx.ch/PROGX_WEB/windev/exe_ZXing.zip

Il y a trois méthode distinctes pour décoder :

- Celle utilisant le composant .NET téléchargé sur https://zxingnet.codeplex.com/
- Celle utilisant les fonctions d'interfaçage Java (la version de ZXing utilisée est plus vieille sur cette méthode)
- La méthode WLangage directe (mais qui ne fonctionne qu'avec des code barre de type QRcode)

Bon développements!


Bonjour Jérôme,

Pourrais tu remettre les liens STP.
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 20 mai 2020 - 15:32
Bonjour,

voici un nouveau lien ou vous pouvez télécharger ce projet : https://drive.infomaniak.com/app/share/104565/40def075-4aaf-4aca-9176-dfb658c39c2b

Bon devs ! ;)
Posté le 26 mai 2020 - 15:31
Jérôme a écrit :
Bonjour,

voici un nouveau lien ou vous pouvez télécharger ce projet : https://drive.infomaniak.com/app/share/104565/40def075-4aaf-4aca-9176-dfb658c39c2b

Bon devs ! ;)



Bonjour Jérôme,

J'ai réussi a lire le QRcode mais je cherche a en faire une automatisation en supprimant le fichier mais il doit rester bloquer dans la picturebox comment je peu réinitialisé la picturebox avant suppression ?

Merci
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 04 juin 2020 - 12:43
Bonjour Nicolas,

pouvez-vous nous montrer le code qui pose problème ?
Posté le 23 juin 2022 - 09:29
Bonjour Jérôme,

Je suis très intéressé par votre exemple de projet. Malheureusement, le lien n'est plus valable après toutes ces années.

Vous est-il possible de me faire parvenir ces fichiers par mail ?

Cordialement
Membre enregistré
536 messages
Posté le 23 juin 2022 - 12:02
bonjour jlb,
le lien du 20 mai 2020 - 15:32 fonctionne.