[D7] Impression code-barres sur une imprimante d'étiquettes

cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
- 27 mars 2007 à 11:09
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
- 30 mars 2007 à 14:08
Bonjour à tous,

Je croit que j'ai essayé tous les générateurs d'états (fastReport, freeReport, reportBuilder, Rave) et c'est toujours le même problème qui revient:

J'ai une imprimante Zebra TLP2844 en 203 dpi, et lorsque je veux essayer d'imprimer une étiquette contenant un code à barres, celui-ci prends 2 fois plus de place qu'il ne devrait (même dans l'aperçu).
Résultat, sur une étiquette de 76*51 (c'est loin d'être les plus petites), je ne peux mettre que 12 caractère maximum dans un code 39 par exemple.

La barre minimum d'un code occupe 2 points de points de l'imprimante.
Un logiciel d'édition d'étiquette (anyLabel, zebraDesigner, ...) est capable de m'en sortir de 2 fois plus petits.

J'ai essayé de jouer avec les propriété barWidth et ratio, ça le réduit, mais ca me rend un code illisible.

Avez vous une solution ?

Merci d'avance.

15 réponses

WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
27 mars 2007 à 19:33
Bonsoir
Le fait que tu ais le même problème sur chacun des générateurs d'état est normal, si cela n'était pas le cas, il faudrait s'inquiéter  

Utilises tu la résolution de ton imprimante, et de ton écran, de façon correcte pour "dessiner" ton code barre ?
Une méthode simple pour savoir si tu les gères correctement est de dessiner sur l'écran un rectangle de 2x3cm par exemple, puis de l'imprimer.
N.B. Dans les deux cas, ton nombre de cm correspond à un certain nombre de inches (1 inch = 2.54cm) et egalement à un certain nombre de pixels, différents en fonction de chacune des résolutions. 

Le résultat final doit être un rectangle de 2x3cm, mesurable avec une règle à l'écran (attention toutefois au ajustements éventuels de l'écran, les distorsions, etc) et sur la feuille imprimée (elle doit être nickel).

Si toutefois, cela n'était pas le cas, c'est que la gestion de la résolution n'est pas correcte...

P.S. Ton code barre est du type image, vectoriel, ou bien TrueType ? J'espère que ce n'est pas une image...

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
28 mars 2007 à 10:15
Bonjour WhiteHyppo,

Déjà, je dis que mon étiquette fait 76 de large, et à l'écran, elle fait 86 (autan dans l'éditeur que dans l'aperçu)...

Mais sinon, j'ai déposé des traits et des images, et la taille a l'air bonne (en s'adaptant au coeff de la taille totale).
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
29 mars 2007 à 19:34
Ta réponse est plutot succinte... Bon réfléchissons un peu.

Pour le code barre :
7.6cm = 3 inches
203 dpi (dots per inches) nous donne 3*203 = 609 pixels pour 7.6cm
La plus petite bande doit etre de 1 pixel minimum (pour ne pas avoir de dégradation de la qualité) soit 7.6/609=0.012479... que l'on devra maximiser car Rave (je n'ai que cela sous la main)  clampe les valeurs au millième. On mettra donc 0.013 au minimum dans la valeur du BarWidth.
Ensuite le WideFactor, je le mettrais à 2 ( Taille bande large du code barre = 2 * taille bande étroite )  pour ne pas agrandir de trop le code barre.
Autosize à true évidemment.

Qu'obtiens tu alors comme résultat avec ces paramètres ?

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 09:14
Il me dit "Largeur de barre doit être au moins 0.101999998092651".
Par défaut, la valeur est à 0.25400001, ca me surprenait, aussi, qu'il y ait tant de différence avec ce que tu me proposes.

Ce qui me surprenait le plus, c'est que la taille de l'étiquette rentre en compte dans ton calcul...
Sur 203 dpi, le code doit toujours être identique, quelle que soit la taille de l'étiquette.

Mais ton idée a du bon... Je penseque c'est là que tout se joue, reste à trouver le bon calcul.

Sur ReportBuilder (c'est lui que j'aimerais utiliser), il y a la propriété barWidth (à 0.25400001 par défaut) et la proporiété WideBarRation (à 3 par défaut).
Je pense que c'est uniquement barWidth, qui doit être modifiée.
Reste à trouver à quoi correspond exactement la valeur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 09:20
Ha oui, je travaille en mm.

Mais si je met tout mon plan en pouces, il me dit: "Largeur de barre doit être au moins 0.040000000189998981"
Et la valeur de barWidth est à 0.0099999998.

Mais je préfère garder les mm.
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 09:23
Et si ca peut t'aider, voici l'aide pour barWidth:
This property allows you to change the width of each bar. For barcodes that have a narrow to wide bar ratio, the wide BarWidth is calculated based on the WideBarRatio property. If you have the AutoSize property set to True, the component will resize when this property is changed.
The standard accepted BarWidth for each symbology is listed below.


Type Inches Millimeters Comment
Code 128 0.0070 to 0.015 0.1778 to 0.381 Varies based on use.
Code 39 0.010 0.254 
EAN-13 0.013 0.3302 
Int. 2 of 5 0.015 0.381 
Postnet 0.020 0.508 We strongly recommend using this value for Postnet.
UPC-A 0.013 0.3302 

These are only recommendations, you are free to use whatever BarWidth you choose.
Further Note: We have successfully printed a Code 128 barcode on a 300 dpi laser printer with a bar width of 0.0070 inches. That is an extremely efficient code!

Et pour WideBarRation:
This property effects the narrow-to-wide bar ratio for symbologies that have such elements. The value you give this property will be multiplied by the value of BarWidth to get the wide bar width. Most symbologies dictate a wide bar ratio in the 2.0 to 3.0 range. You will want a higher WideBarRatio if your BarWidth is very small. Most applications call for this ratio to be 3.0.

Mais perso, ca ne m'aide pas à en déduire le calcul.
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 09:35
Oups, en fait, pour un code 39, le barWidth ne peut être changé...

C'est donc uniquement le WideBarRatio qu'il faut calculer.
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
30 mars 2007 à 11:10
Tout d'abord les valeurs que je t'ai donné était pour Rave report !!! (Je ne t'ai pas donné des valeurs sans les tester au préalable) Donc il te faut les adapter pour ReportBuilder !!




"Ce qui me surprenait le plus, c'est que la taille de l'étiquette rentre en compte dans ton calcul..."

Il est normal de tenir compte de la résolution 203dpi et de la largeur de l'étiquette pour optimiser la taille d'une bande du code barre et ensuite savoir le nombre maximum de caractères imprimables.


Le WideBarRatio ReportBuilder correspond à priori au WideFactor de Rave. Donc il faudrait le mettre à la valeur de 2.0 comme je l'ai précisé précédemment.



"

Sur ReportBuilder (c'est lui que j'aimerais utiliser), il y a la propriété barWidth (à 0.25400001 par défaut) et la proporiété WideBarRation (à 3 par défaut).
Je pense que c'est uniquement barWidth, qui doit être modifiée."

Pour rappel, 1 inch 2.54 cm 25.4mm donc comme tu travailles en mm 0,245mm correspond à 0.01 inches. Tu retrouves tes différentes valeurs.


Donc avec une valeur de 0,245mm (0.01 inches) et une résolution de 203 dpi, on obtient une largeur de bande pour le code barre de 2.03 pixels (203*0.01)
Avec un WideBarRatio de 2.0, la taille de bande large sera de 4.06 pixels (2.0*2.03).


Sachant qu'un caractère en code 39 comporte 5 barres larges et 4 barres simples, soit 28.42 pixels (5*4.06+4*2.03=14*2.03) pour 1 caractère.


Sachant de plus, que ton étiquette fait 7.6cm=3 inches, c'est à dire 609 pixels, tu pourras, au maximum, mettre 21 caractères (609/28.42)


Pour avoir une taille plus petite, il faudrait modifié le barWidth pour qu'une largeur de bande simple soit de 1 pixel, c'est à dire deux fois plus petite que le 2.03 initial.




"Oups, en fait, pour un code 39, le barWidth ne peut être changé..."

Tu ne pourras donc pas égalé tes logiciels d'édition d'étiquette.


Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 11:34
Je me suis trompé en disant que le BarWidth ne pouvait être changé.
Il le peut et influe sur la taille du code à barres... J'avais dit ca car il n'y avait qu'un valeur d'affichée dans l'aide pour cette propriété.

Je met toujours WideBarRatio à 2, quoi qu'il advienne, donc.
J'ai bien essayé de suivre ta logique pour le barWidth, seulement, je me perds dans tes calculs... Je ne comprends pas très bien la définition exacte des ces 2 propriétés, en fait.
BarWidth := 2, veut dire qu'une barres fait 2 quoi ? Pixels ??? Ok, mais par rapport à quoi.
WideBarRatio := ???

En clair, je veux qu'une barre fine fasse 1 pixel sur mon imprimante 203 pdi... Ca ne me semblait pas si compliqué.
J'ai déjà utilisé des composants code barres sur des canvas que j'imprimait, il suffisait de mettre la propriété zoom (atom, ou autre selon constructeur) à 1 pour que la plus petite unité fasse 1.. J'imprimait sur le canvas de printer et c'était correct.

J'aimerais un calcul simple comprenant la résolution de mon imprimante, qui me permettra de savoir quelle valeur mettre.
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
30 mars 2007 à 12:07
"BarWidth := 2, veut dire qu'une barres fait 2 quoi ? Pixels ??? Ok, mais par rapport à quoi."


J'ai déjà répondu à ça  : " je le mettrais à 2 ( Taille bande large du code barre = 2 * taille bande étroite )"



"En clair, je veux qu'une barre fine fasse 1 pixel sur mon imprimante 203 pdi... Ca ne me semblait pas si compliqué."

Il me semblait pourtant avoir été clair  en détaillant les calculs  et en expliquant le raisonnement à avoir  !!!  

"J'aimerais un calcul simple comprenant la résolution de mon imprimante, qui me permettra de savoir quelle valeur mettre."
WideBarRatio := 0.127.
Comment on y arrive ? Heyyy !!! tu as dis au plus simple  !!

J'ai déjà utilisé des composants code barres sur des canvas que j'imprimait, il suffisait de mettre la propriété zoom (atom, ou autre selon constructeur) à 1 pour que la plus petite unité fasse 1.. J'imprimait sur le canvas de printer et c'était correct.
Tout dépend de la façon dont ils sont gérés au sein des logiciels qui les utilisent !! (Ce qui nous ramèrne à une de mes précédentes questions : "Ton code barre est du type image, vectoriel, ou bien TrueType ?")

P.S. Avec mes précédents posts et celui là,  tu as toutes les informations nécessaires pour comprendre et solutionner ton problème.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 12:32
WideBarRatio := 0.127. me donne un code barres non lisible par un lecteur.

Pour essayer, j'ai mis la valeur minimale (0.102), et ca marche... :-)
Mais normalement, je devrait laisser le ratio à 3, vu que c'est normalisé à 3 pour le code 39.

Par contre (je ne suis plus sur mon poste), pour faire un zoom de 2, je devrait mettre 0.2.4, ca me parrait logique... Bah, je verrais

Merci pour ton investissement, WhiteHyppo, désolé de ne pas avoir été à la hauteur de tes réponses, mais faut avouer que ce n'est pas ce qu'il y a de plus intuitif quand on n'a pas l'habitude de balancer entre les pixels, inchs, dpi et tout le tralala.
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
30 mars 2007 à 13:27
Pour info, dans mes projets j'ai toujours utilisé une police ttf (comme par exemple celle dispo ici http://www.barcodesinc.com/free-barcode-font/)
La gestion du code barre se résume alors uniquement au formattage de la taille de la police.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 13:31
J'y ai bien pensé, mais ce n'est pas complet (quer code 39 et difficilement 128) et pas portable.
Il faut que l'utilisateur ait installé ces polices.
0
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
30 mars 2007 à 13:50
Tout dépend de l'application et de ce que tu souhaites faire. Si tu as différents types de code barre à imprimer à de multiples et variées résolutions, alors il vaut mieux se retourner vers des produits spécifiques (librairie commerciale, GNU barcode, ...), qui te générent à partir d'un texte une image optimisée de ton code barre; ou si tu as le temps et le courage les créer toi même "à la main".

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_nitrique
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
30 mars 2007 à 14:08
C'est ce que j'avais commencé à faire, mais en touchant presque au but, les dernières étapes m'ont découragées.

J'avais d'ailleurs posté mon pb sur ce forum, un membre a essayé de m'aider sans résultat.

Si vous êtes interressé, je peux également vous l'envoyer.
En fait, je crée les codes barres sur un tImage32 correctement (j'était assez content de moi), mais c'est les scales que j'ai du mal à gérer (entre autres).
0