PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2025 → Convertir une image jpg en zpl avec Windev Mobile Android
Convertir une image jpg en zpl avec Windev Mobile Android
Started by Thomas, Jun., 10 2025 3:28 PM - 1 reply
Posted on June, 10 2025 - 3:28 PM
Bonjour,

Nous avons une application Android qui permet d’éditer des tickets de caisse sur une imprimante ZQ600 de Zebra via le Bluetooth. Le principe est simple : L'opérateur fait signer le reçu sur son terminal et un ticket de caisse est imprimé via une instruction en ZPL. Tout ceci fonctionne à merveille.

Maintenant, là où ça se corse et où j'ai besoins d'aide c'est d’intégrer sur le ticket de caisse la signature. Quand on signe sur l'application, un fichier .jpg est créé. Il faut que je transforme ce fichier .jpg en zpl pour pouvoir l'imprimer.

J'ai passé un moment à éplucher sites et forums pour trouver une solution. J'ai bien trouvé des API mais c'est payant... et les différents scripts JAVA mais les packages qu'ils utilisent n'existent pas sous Android et l'intégration de JAVA dans Windev c'est pas vraiment ma tasse de thé mais on apprend tous les jours...

Est ce que quelqu'un peut m'aider ?
Posted on June, 13 2025 - 9:42 AM
J'ai trouvé une solution que je vous partage. J'espère que ça servira à certains.

Procedure ImageJPEGVersZPL(sFichierImage)

ImageVersZPL est une chaîne = ""
img est une Image = dChargeImage(sFichierImage)
SI img = Null ALORS
Info("Impossible de charger l'image.")
RENVOYER ""
FIN

// Convertir en noir et blanc
img.ModifieTSL(00,-100,0)

// Récupérer dimensions
largeur est un entier = img.Largeur
hauteur est un entier = img.Hauteur
octetsParLigne est un entier = (largeur + 7) / 8
totalOctets est un entier = octetsParLigne * hauteur

bufHexa est une chaîne = ""

POUR y = 0 _À_ hauteur - 1
oct est un entier = 0
bit est un entier = 0
POUR x = 0 _À_ largeur - 1
pixel est un entier = dPixelCouleur(img, x, y)
r est un entier = RVBRouge(pixel)
g est un entier = RVBVert(pixel)
b est un entier = RVBBleu(pixel)

// Luminance simple
lum est un entier = (r + g + b) / 3
estNoir est un booléen = (lum < 128)

SI estNoir ALORS // Pixel noir = 1
oct = oct + Puissance(2, 7 - bit)
FIN
bit += 1
SI bit = 8 ALORS
bufHexa += NumériqueVersChaîne(oct,"02X")
oct = 0
bit = 0
FIN
FIN
// Ajouter les bits restants
SI bit > 0 ALORS
bufHexa += NumériqueVersChaîne(oct,"02X")
FIN
FIN

// Générer le ZPL
ImageVersZPL += "^FO50,50^GFA," + totalOctets + "," + totalOctets + "," +octetsParLigne + "," + bufHexa + "^FS"

RENVOYER ImageVersZPL