Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉNÉRATEUR DE CODE BARRE CODE 39


Information sur la source

Description

Cliquez pour voir la capture en taille normale
J'ai déjà trouvé des sources qui reprennent despolices True Type (TTF) afin de les mettres en images: ce n'est pas paramétrable et les essais que j'ai fait sont souvent infructueux
En fait ce petit script permet de générer un code barre code 39 sous une forme graphique en dessinant chacune des barres, de ce fait sont paramétrables: la  largeur et hauteur du code barre et aussi l'affichage du texte en clair en dessous du code barre
en espérant avoir été utile à ceux qui en ont besoin, pour ma part, j'ai développé ce code pour que les internautes puissent imprimer une feuille A4 qu'ils doivent faire tamponer par un partenaire et me la retourner par fax (participation gratuite à un jeux concours): ça me permet d'automatiser la réception des fax en mettant un scanner de code barre au dessus de la sortie du fax !!!!!!!!! Rapide, pas cher et entièrement automatisé (traitement par lot en recevant les fax sur une email)

obligatoire: la librairie GD !
 

Source

  • <?php
  • // code barre Code 39
  • // Le 27/05/2005
  • //Chacun des 43 caractères du mode simple se compose d'un motif fixe constitué de 5 barres noires et de 4 barres blanches (espace).
  • //Les barres peuvent être fines ou larges (Les larges font 2,2 à 3 fois la largeur des fines)
  • //Il y a toujours 3 barres larges parmi les 9 barres.
  • //Une barre blanche fine ajoutée à la fin permet l'espacement avec le caractère suivant.
  • //Un caractère spécial (Affecté au symbole *) sert de délimiteur de début et de fin.
  • //Une clé de contrôle peut être ajoutée; elle est calculée en totalisant les valeurs de chaque caractère tirées du tableau suivant, puis en prenant le reste de la division de cette somme par 43.
  • //Dans le tableau suivant les barres noires étroites sont symbolisées par "1", les larges par "111", les barres blanches étroites par "0" et les larges par "000".
  • //Exemple de clé de contrôle pour : ZB65732
  • //35 + 11 + 6 +5 +7 +3 +2 = 69
  • //69 / 43 = 1, reste 26 qui correspond à la lettre Q
  • //Nouveau code avec la clé : ZB65732Q
  • // Merci à http://grandzebu.net/informatique/codbar/code39.htm pour l'explication ci-dessus
  • //il suffit d'appeler le script: codebarre.php?texte=0123456789&h=80&L=2
  • if(isset($_GET['texte'])) {
  • $text = $_GET['texte'];
  • function str_split( $str ) {
  • $arr = array();
  • for ($j = 0; $j < strlen($str); $j++) {
  • $arr[] = substr($str,$j,1);
  • }
  • return $arr;
  • }
  • //echo $text;
  • //putenv('GDFONTPATH=' . realpath($_GET['prof'].'../images/'));
  • //putenv('GDFONTPATH='/home/.sites/143/site40/web/images/');
  • putenv('GDFONTPATH=' . realpath('.'));
  • //echo realpath('.');
  • if(!isset($_GET['h'])) {$barcode_hauteur = 80; } else {$barcode_hauteur = $_GET['h'];}
  • $tab['0']=' 101000111011101'; $tab2[0]='0'; $tab3['0']=0; $tab['F']='101110111000101'; $tab2[15]='F'; $tab3['F']=15; $tab['U']='111000101010111'; $tab2[30]='U'; $tab3['U']=30;
  • $tab['1']=' 111010001010111'; $tab2[1]='1'; $tab3['1']=1; $tab['G']=' 101010001110111'; $tab2[16]='G'; $tab3['G']=16; $tab['V']='100011101010111'; $tab2[31]='V'; $tab3['V']=31;
  • $tab['2']=' 101110001010111'; $tab2[2]='2'; $tab3['2']=2; $tab['H']=' 111010100011101'; $tab2[17]='H'; $tab3['H']=17; $tab['W']='111000111010101'; $tab2[32]='W'; $tab3['W']=32;
  • $tab['3']=' 111011100010101'; $tab2[3]='3'; $tab3['3']=3; $tab['I']=' 101110100011101'; $tab2[18]='I'; $tab3['I']=18; $tab['X']='100010111010111'; $tab2[33]='X'; $tab3['X']=33;
  • $tab['4']=' 101000111010111'; $tab2[4]='4'; $tab3['4']=4; $tab['J']=' 101011100011101'; $tab2[19]='J'; $tab3['J']=19; $tab['Y']='111000101110101'; $tab2[34]='Y'; $tab3['Y']=34;
  • $tab['5']=' 111010001110101'; $tab2[5]='5'; $tab3['5']=5; $tab['K']=' 111010101000111'; $tab2[20]='K'; $tab3['K']=20; $tab['Z']='100011101110101'; $tab2[35]='Z'; $tab3['Z']=35;
  • $tab['6']=' 101110001110101'; $tab2[6]='6'; $tab3['6']=6; $tab['L']=' 101110101000111'; $tab2[21]='L'; $tab3['L']=21; $tab['-']='100010101110111'; $tab2[36]='-'; $tab3['-']=36;
  • $tab['7']='101000101110111'; $tab2[7]='7'; $tab3['7']=7; $tab['M']=' 111011101010001'; $tab2[22]='M'; $tab3['M']=22; $tab['.']='111000101011101'; $tab2[37]='.'; $tab3['.']=37;
  • $tab['8']=' 111010001011101'; $tab2[8]='8'; $tab3['8']=8; $tab['N']=' 101011101000111'; $tab2[23]='N'; $tab3['N']=23; $tab[' ']='100011101011101'; $tab2[38]=' '; $tab3[' ']=38;
  • $tab['9']=' 101110001011101'; $tab2[9]='9'; $tab3['9']=9; $tab['O']=' 111010111010001'; $tab2[24]='O'; $tab3['O']=24; $tab['$']='100010001000101'; $tab2[39]='$'; $tab3['$']=39;
  • $tab['A']=' 111010100010111'; $tab2[10]='A'; $tab3['A']=10; $tab['P']=' 101110111010001'; $tab2[25]='P'; $tab3['P']=25; $tab['/']='100010001010001'; $tab2[40]='/'; $tab3['/']=40;
  • $tab['B']='101110100010111'; $tab2[11]='B'; $tab3['B']=11; $tab['Q']='101010111000111'; $tab2[26]='Q'; $tab3['Q']=26; $tab['+']='100010100010001'; $tab2[41]='+'; $tab3['+']=41;
  • $tab['C']='111011101000101'; $tab2[12]='C'; $tab3['C']=12; $tab['R']='111010101110001'; $tab2[27]='R'; $tab3['R']=27; $tab['%']='101000100010001'; $tab2[42]='%'; $tab3['%']=42;
  • $tab['D']='101011100010111'; $tab2[13]='D'; $tab3['D']=13; $tab['S']='101110101110001'; $tab2[28]='S'; $tab3['S']=28;
  • $tab['E']='111010111000101'; $tab2[14]='E'; $tab3['E']=14; $tab['T']='101011101110001'; $tab2[29]='T'; $tab3['T']=29; $tab['*']='100010111011101';
  • $j=0;
  • $barcode= $tab['*'].'0';
  • foreach ( str_split( $text ) as $caractere ) {
  • $barcode.= $tab[$caractere].'0';
  • $j+=$tab3[$caractere];
  • }
  • // calcul du code de contôle
  • $taille_police=5;
  • $j=fmod($j, 43);
  • $barcode.=$tab[$tab2[$j]].'0';
  • $barcode.=$tab['*'].'0';
  • $text='*'.$text.$tab2[$j].'*';
  • //barre détermine le nombre de pixel d'une barre
  • //le coef est la différence de largeur entre les barres fines et les épaisse, il doit être entre 2,2 et 3
  • //mais vu qu'on travail avec de barres de 1 pixels les couples possibles sont
  • // dimension 0 1 2 3 4 5 6 7 8
  • $tab=array(
  • "barre"=>array(1, 2, 3, 4, 5, 6, 8, 9, 10),
  • "coef"=> array(3, 3, 3, 3, 3, 3, 3, 3, 3));
  • //dimension permet de sélectionner une taille (largeur) dans le tableau ci-dessus
  • if(!isset($_GET['L'])) {$dimension = 2; } else {$dimension = $_GET['L'];}
  • $barre=$tab["barre"][$dimension];
  • $coef=$tab["coef"][$dimension];
  • //le nombre total de barre : 3 barres larges pour 6 fines plus 1 barre fine d'espacement
  • $nbre=(3*$coef+6+1)*$barre;
  • //le nombre de barre d'1 pixel (avec le code de contôle et le "*" à chaque extrémité)
  • $barcode_longueur=strlen($barcode)*$barre;
  • //creation de l'image
  • $im = imagecreate($barcode_longueur,$barcode_hauteur);
  • $white = imagecolorallocate($im, 255,255,255);
  • $black = imagecolorallocate($im, 0,0,0);
  • $font_hauteur = imagefontheight( $taille_police );
  • $font_largeur = imagefontwidth( $taille_police );
  • //détermination de la hauteur des barre
  • $barcode_hauteur=$barcode_hauteur-$font_hauteur;
  • //on construit chaque barre
  • $xpos=0;
  • foreach ( str_split($barcode) as $caractere ) {
  • for($a=0; $a<$barre; $a++) {
  • if ( $caractere == 0 ) {
  • imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $white );
  • } else {
  • imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $black );
  • }
  • $xpos++;
  • }
  • }
  • //on ajoute le texte lisible en dessous
  • imagestring( $im, $taille_police,($barcode_longueur-$font_largeur*strlen($text))/2,$barcode_hauteur,$text,$black);
  • //on finalise l'image
  • header("Content-type: image/png");
  • imagepng($im);
  • imagedestroy($im);
  • }
  • ?>
<?php
// code barre Code 39
// Le 27/05/2005

//Chacun des 43 caractères du mode simple se compose d'un motif fixe constitué de 5 barres noires et de 4 barres blanches (espace).
//Les barres peuvent être fines ou larges (Les larges font 2,2 à 3 fois la largeur des fines)
//Il y a toujours 3 barres larges parmi les 9 barres.
//Une barre blanche fine ajoutée à la fin permet l'espacement avec le caractère suivant.
//Un caractère spécial (Affecté au symbole *) sert de délimiteur de début et de fin.
//Une clé de contrôle peut être ajoutée; elle est calculée en totalisant les valeurs de chaque caractère tirées du tableau suivant, puis en prenant le reste de la division de cette somme par 43.
//Dans le tableau suivant les barres noires étroites sont symbolisées par "1", les larges par "111", les barres blanches étroites par "0" et les larges par "000".

//Exemple de clé de contrôle pour : ZB65732
//35 + 11 + 6 +5 +7 +3 +2 = 69
//69 / 43 = 1, reste 26 qui correspond à la lettre Q
//Nouveau code avec la clé : ZB65732Q

// Merci à http://grandzebu.net/informatique/codbar/code39.htm pour l'explication ci-dessus

//il suffit d'appeler le script: codebarre.php?texte=0123456789&h=80&L=2

if(isset($_GET['texte'])) {
  $text = $_GET['texte'];
  function str_split( $str ) {
    $arr = array();
    for ($j = 0; $j < strlen($str); $j++) {
      $arr[] = substr($str,$j,1);
    }
    return $arr;
  }
  //echo $text;
  //putenv('GDFONTPATH=' . realpath($_GET['prof'].'../images/'));
  //putenv('GDFONTPATH='/home/.sites/143/site40/web/images/');
  putenv('GDFONTPATH=' . realpath('.'));
  //echo realpath('.');
  if(!isset($_GET['h'])) {$barcode_hauteur = 80; } else {$barcode_hauteur = $_GET['h'];}
  $tab['0']=' 101000111011101';	$tab2[0]='0';	$tab3['0']=0;	$tab['F']='101110111000101';	$tab2[15]='F';	$tab3['F']=15;	$tab['U']='111000101010111';	$tab2[30]='U';	$tab3['U']=30;
  $tab['1']=' 111010001010111';	$tab2[1]='1';	$tab3['1']=1;	$tab['G']=' 101010001110111';	$tab2[16]='G';	$tab3['G']=16;	$tab['V']='100011101010111';	$tab2[31]='V';	$tab3['V']=31;
  $tab['2']=' 101110001010111';	$tab2[2]='2';	$tab3['2']=2;	$tab['H']=' 111010100011101';	$tab2[17]='H';	$tab3['H']=17;	$tab['W']='111000111010101';	$tab2[32]='W';	$tab3['W']=32;
  $tab['3']=' 111011100010101';	$tab2[3]='3';	$tab3['3']=3;	$tab['I']=' 101110100011101';	$tab2[18]='I';	$tab3['I']=18;	$tab['X']='100010111010111';	$tab2[33]='X';	$tab3['X']=33;
  $tab['4']=' 101000111010111';	$tab2[4]='4';	$tab3['4']=4;	$tab['J']=' 101011100011101';	$tab2[19]='J';	$tab3['J']=19;	$tab['Y']='111000101110101';	$tab2[34]='Y';	$tab3['Y']=34;
  $tab['5']=' 111010001110101';	$tab2[5]='5';	$tab3['5']=5;	$tab['K']=' 111010101000111';	$tab2[20]='K';	$tab3['K']=20;	$tab['Z']='100011101110101';	$tab2[35]='Z';	$tab3['Z']=35;
  $tab['6']=' 101110001110101';	$tab2[6]='6';	$tab3['6']=6;	$tab['L']=' 101110101000111';	$tab2[21]='L';	$tab3['L']=21;	$tab['-']='100010101110111';	$tab2[36]='-';	$tab3['-']=36;
  $tab['7']='101000101110111';	$tab2[7]='7';	$tab3['7']=7;	$tab['M']=' 111011101010001';	$tab2[22]='M';	$tab3['M']=22;	$tab['.']='111000101011101';	$tab2[37]='.';	$tab3['.']=37;
  $tab['8']=' 111010001011101';	$tab2[8]='8';	$tab3['8']=8;	$tab['N']=' 101011101000111';	$tab2[23]='N';	$tab3['N']=23;	$tab[' ']='100011101011101';	$tab2[38]=' ';	$tab3[' ']=38;
  $tab['9']=' 101110001011101';	$tab2[9]='9';	$tab3['9']=9;	$tab['O']=' 111010111010001';	$tab2[24]='O';	$tab3['O']=24;	$tab['$']='100010001000101';	$tab2[39]='$';	$tab3['$']=39;
  $tab['A']=' 111010100010111';	$tab2[10]='A';	$tab3['A']=10;	$tab['P']=' 101110111010001';	$tab2[25]='P';	$tab3['P']=25;	$tab['/']='100010001010001';	$tab2[40]='/';	$tab3['/']=40;
  $tab['B']='101110100010111';	$tab2[11]='B';	$tab3['B']=11;	$tab['Q']='101010111000111';	$tab2[26]='Q';	$tab3['Q']=26;	$tab['+']='100010100010001';	$tab2[41]='+';	$tab3['+']=41;
  $tab['C']='111011101000101';	$tab2[12]='C';	$tab3['C']=12;	$tab['R']='111010101110001';	$tab2[27]='R';	$tab3['R']=27;	$tab['%']='101000100010001';	$tab2[42]='%';	$tab3['%']=42;
  $tab['D']='101011100010111';	$tab2[13]='D';	$tab3['D']=13;	$tab['S']='101110101110001';	$tab2[28]='S';	$tab3['S']=28;
  $tab['E']='111010111000101';	$tab2[14]='E';	$tab3['E']=14;	$tab['T']='101011101110001';	$tab2[29]='T';	$tab3['T']=29;	$tab['*']='100010111011101';

  $j=0;
  $barcode= $tab['*'].'0';
  foreach ( str_split( $text ) as $caractere ) {
    $barcode.= $tab[$caractere].'0';
    $j+=$tab3[$caractere];
  }
  // calcul du code de contôle
  $taille_police=5;
  $j=fmod($j, 43);
  $barcode.=$tab[$tab2[$j]].'0';
  $barcode.=$tab['*'].'0';
  $text='*'.$text.$tab2[$j].'*';
  //barre détermine le nombre de pixel d'une barre
  //le coef est la différence de largeur entre les barres fines et les épaisse, il doit être entre 2,2 et 3
  //mais vu qu'on travail avec de barres de 1 pixels les couples possibles sont
  // dimension 0  1  2  3  4  5  6  7  8 
  $tab=array(
"barre"=>array(1, 2, 3, 4, 5, 6, 8, 9, 10),
"coef"=> array(3, 3, 3, 3, 3, 3, 3, 3, 3));
  //dimension permet de sélectionner une taille (largeur) dans le tableau ci-dessus
  if(!isset($_GET['L'])) {$dimension = 2; } else {$dimension = $_GET['L'];}
  $barre=$tab["barre"][$dimension];
  $coef=$tab["coef"][$dimension];
  //le nombre total de barre : 3 barres larges pour 6 fines plus 1 barre fine d'espacement
  $nbre=(3*$coef+6+1)*$barre;
  //le nombre de barre d'1 pixel (avec le code de contôle et le "*" à chaque extrémité)
  $barcode_longueur=strlen($barcode)*$barre;
  //creation de l'image
  $im = imagecreate($barcode_longueur,$barcode_hauteur);
  $white = imagecolorallocate($im, 255,255,255);
  $black = imagecolorallocate($im, 0,0,0);
  $font_hauteur = imagefontheight( $taille_police );
  $font_largeur = imagefontwidth( $taille_police );
  //détermination de la hauteur des barre
  $barcode_hauteur=$barcode_hauteur-$font_hauteur;
  //on construit chaque barre
  $xpos=0;
  foreach ( str_split($barcode) as $caractere ) {
    for($a=0;  $a<$barre; $a++) {
      if ( $caractere == 0 ) {
        imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $white );
      } else {
        imageline( $im, $xpos, 0, $xpos, $barcode_hauteur, $black );
      }
      $xpos++;
    }
  }
  //on ajoute le texte lisible en dessous
  imagestring( $im, $taille_police,($barcode_longueur-$font_largeur*strlen($text))/2,$barcode_hauteur,$text,$black);
  //on finalise l'image
  header("Content-type: image/png");
  imagepng($im);
  imagedestroy($im);
}
?>

Conclusion

Si vous avez des améliorations ou des commentaire et même des critiques, tout est bienvenue
 

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 28/05/2005 08:33:48

Salut,

bah très bonne source et très intéressante. Je te mets 9/10.

Tu peux enlever les quotes dans les tableaux à indices numériques :

$tab['1'] devient $tab[1]

c'est légèrement plus rapide.

a +

signaler à un administrateur
Commentaire de troudbal le 28/05/2005 09:48:57

Salut, chez moi j'ai une erreur fatale à l'exécution:

Fatal error: Cannot redeclare str_split() in c:\Root\Web\untitled-1.php on line 22

Ca serait bien de mettre le code dans un zip, ca évite de virer tous les n° de ligne aprés le copier-coller.

signaler à un administrateur
Commentaire de malalam le 28/05/2005 10:55:04 administrateur CS

Hello,

tu m'etonnes : cela veut dire que tu as php5, et que ce code n'a pas ete prevu pour php5.
La fonction str-split() existe deja en php5. Donne lui juste un autre nom dans ce code.

signaler à un administrateur
Commentaire de GRenard le 28/05/2005 20:40:47

Il ne faut pas effectuer le changement qu'a dit anthomicro... les chiffres sont entre ' car c'est des caractères et c'est correct. Par contre, pourquoi avoir 3 tableaux de la sorte ? Je ne pense pas que cela soit utile...
$tab3 c'est un index tout bête et $tab2 c'est un array_flip de $tab... donc tu peux virer tout ca...
En passant, tu les as testé tes codes avec un lecteur ?

Générateur de codes barres :
http://www.phpcs.com/code.aspx?ID=23927

signaler à un administrateur
Commentaire de Anthomicro le 28/05/2005 21:14:00

"Il ne faut pas effectuer le changement qu'a dit anthomicro... les chiffres sont entre ' car c'est des caractères et c'est correct"

Je dis pas que c'est incorrect, je dis que de mettre des quotes est débile vu qu'elles seront analysées par PHP comme étant des chaînes ce qui est plus lent...

Vérifie tes sources...

signaler à un administrateur
Commentaire de Anthomicro le 28/05/2005 21:26:24

J'avais du temps à perdre, j'ai donc fait un petit benchmark :

//---------------------------------------------
$var[1]='1';

while($i<10000000)
{
$test=$var['1'];
$i++;
}
Temps de génération minimum : 0.750 secondes
//---------------------------------------------

$var[1]='1';

while($i<10000000)
{
$test=$var[1];
$i++;
}

Temps de génération minimum : 0.633 secondes

//------------------------------------------
T'es convaincu ?

signaler à un administrateur
Commentaire de fyav le 29/05/2005 01:01:11

"En passant, tu les as testé tes codes avec un lecteur ?"

OUI dans une pharmacie
les différentes "tailles" sont entièrement reconnue par le scanner de la pharmacie
En passant, le pharmacien m'a signalé que pour la taille supérieure à 3 il fallait un énooorme emballage!
je lui ai répondu que c'était pour imprimer sur des feuille A4...pas sur des emballages comme il avait l'habitude !!!!
Maintenant il m'appel "l'homme aux code barre" en référence au nombre de fois que je suis venu tester mes différents essais

signaler à un administrateur
Commentaire de GRenard le 29/05/2005 22:10:04

Yé gentil ton pharmacien... moi j'ai fait le code pdf417 mais je ne peux pas le tester ! je ne connais pas de pharmaciens qui lient ces codes !
En passant anthomicro, je n'ai pas dit que c'était mieux ou pas le [1] et ['1'], c'est que si tu suis la logique de la table $var['a'] alors $var['1'] est logique...

Tk, tu dois avoir raison, comme d'habitude ?

signaler à un administrateur
Commentaire de Anthomicro le 29/05/2005 22:18:39

"Tk, tu dois avoir raison, comme d'habitude ?"

Tiens, j'allais te dire la même chose...

Je vois pas en quoi mettre ['1'] est plus logique que [1]...

Ce qui est le plus logique c'est de mettre des quotes ou non en fonction du type de donnée se trouvant à l'intérieur du tableau (comme dans tout le reste d'un code PHP d'ailleurs)...

Enfin bon ce n'est que mon avis hein...

signaler à un administrateur
Commentaire de GRenard le 29/05/2005 22:46:12

Regarde la logique de $tab
Tu vois plus logique mettre ceci :
$tab[1]
$tab[2]
$tab['A']
$tab['B']

ou cela
$tab['1']
$tab['2']
$tab['A']
$tab['B']

On voit tout de suite la logique dans le 2e exemple, explique-moi ce qui est mieux dans le 1. Moi aussi je prone le 1 lorsqu'il n'y a pas de logique derrière mais la ca vient d'une string ! donc c'est mieux le 2 !!

signaler à un administrateur
Commentaire de Anthomicro le 29/05/2005 22:58:32

Y'a pas de "c'est mieux"...

Tu dis que je crois toujours avoir raison, seulement moi je dis que ce qui est mieux selon moi (et je le dis pas "c'est mieux", je ne dis pas non plus sans savoir "c'est incorrect") c'est de faire le plus optimisé tout en restant dans une rigueur de codage.

Tout dépend de ce que tu entends par rigueur de codage. Pour moi le plus logique c'est de mettre des quotes pour entourer des chaînes et de ne rien mettre pour entourer des chiffres...

Après tu codes commme tu veux, mais vient pas dire "FAUT PAS" d'un ton hautain et complètement déplacé sans savoir pourquoi je conseille cela...

signaler à un administrateur
Commentaire de alixe07 le 25/07/2005 19:13:50

Bonjour,
J'ai collé ce script sur mon site, seulement je récolte un beau message d'erreur, et je ne sais pas ce qui coince, et du coup pas non plus comment régler le problème.
Est-ce que vous pourriez m'aider ? Pour info, voici le message d'erreur : "The image “http://www.jarjille.com/debora.php?texte=0123456789&h=80&L=2” cannot be displayed, because it contains errors." Mon hébergement inclut PHP5 et la librairie GD, et j'ai beau remplacer le nom de la fonction str_split, ça ne marche pas. Y aurait-il une âme charitable pour dme dépanner ?

signaler à un administrateur
Commentaire de darkduck le 19/01/2006 11:33:14

Bonjour,
J'ai rencontré le même problème :-( aussi bien avec cette source, qu'avec celle pour créer des CODE BARRE EAN13

signaler à un administrateur
Commentaire de Gally le 03/11/2006 21:49:32

Bonjour,

Pas de problème pour ma part le code 3 de 9 est correcte, bonne source et merci pour ton aide pour que je l'adapte a ce que je voulais faire...

J'ai 9 sur 10, Bonne continuation
[Gally Home Corp]

signaler à un administrateur
Commentaire de killeroffish le 15/12/2006 15:32:43

hug,

moi j'ai ca comme erreur:
Fatal error: Call to undefined function: imagecreate() in C:\wamp\www\exemples\code.php on line 81

pourtant en mettant des echo avant j'ai bien les dimmensions.

signaler à un administrateur
Commentaire de fyav le 15/12/2006 15:44:38

obligatoire: la librairie GD !

signaler à un administrateur
Commentaire de killeroffish le 15/12/2006 15:52:44

oups j'etais persuader de l'avoir et ba non lol :p

par contre entre le code affiche par le script et celui genre pas une imprimente speciale code 39 j'ai pas la meme chose normale?

signaler à un administrateur
Commentaire de fyav le 15/12/2006 16:27:49

hein ?
toi y'en a parler la france ?

"oups j'etais persuader de l'avoir et ba non lol :p
par contre entre le code affiche par le script et celui genre pas une imprimente speciale code 39 j'ai pas la meme chose normale?"

je comprends (au bout de 10mn de lecture intensive):
"oups j'etais persuadé de l'avoir et bien non lol :p
par contre entre le code affiché par le script et celui affiché par une imprimante speciale code 39, je n'ai pas la meme chose, est-ce normal?

signaler à un administrateur
Commentaire de killeroffish le 15/12/2006 16:34:32

ptdr dsl mais je suis sur 50 truc en meme temps.

Alors voila je t'explique. Je suis en train de chercher a retirer la clé de controle qui me serre pas.
Le truc c'est que ca me donne un code faux en la retirant.

Voila, j'espere avoir ete plus clair ce coup ci :p dsl pour toute a l'heure.

signaler à un administrateur
Commentaire de fyav le 15/12/2006 16:41:55

pas de problème, moi aussi, mais je m'applique pour éviter de dire 2 fois la même chose

oui mais la clef de contrôle est un élément nécessaire pour les lecteurs de code barre : ça leur permet de "contrôler" et vérifier la validité de leur lecture
(comme dirait Lapalisse)

signaler à un administrateur
Commentaire de killeroffish le 15/12/2006 16:50:53

Je suis dsl mais ceci est tout a fait faux car quand tu va sur le site :
http://grandzebu.net/informatique/codbar/code39.htm
qui est sité dans le scipt montre bien dans le logiciel a telechager que cela fonction sans la clé.
et meme fait un essaie avec mon lecteur cela fonction, deplus nous avons actuellement quelque 1200
etiquette code barre sans cette clé qui fonctionne. mais je trouverais comment faire :p

signaler à un administrateur
Commentaire de killeroffish le 15/12/2006 17:00:37

et pour preuve j'ai trouver :
// calcul du code de contôle
$taille_police=5;
//$j=fmod($j, 43);
//$barcode.=$tab[$tab2[$j]].'0';
$barcode.=$tab['*'].'0';
//$text='*'.$text.$tab2[$j].'*';
$text='*'.$text.'*';

et mon lecteur de code barre li tres bien le code.

signaler à un administrateur
Commentaire de Gally le 16/02/2007 00:52:20

La checksum de controle n'est pas obligatoire sur un code 3 de 9 mais elle est ogligatoire par exemple sur un code 128...

Par moment en fonction du paramètrage du lecteur de code-barre elle peut même etre assez embetente, car il ecrit le caractere de controle.

Bonne continuation
GallyHC

signaler à un administrateur
Commentaire de Gally le 07/08/2007 13:46:27

bonjour,

Comme je te l'avais dit j'ai mis ma source utilisant la tienne en la modifiant pour les Code 128B

http://www.phpcs.com/codes/GENERATEUR-CODE-BARRE-CODE-128B_43670.aspx

j'espere qu'elle sera aussi utile que la tienne ;-)

bonne continuation

signaler à un administrateur
Commentaire de 9onmail le 07/09/2007 12:01:43

C'est excellent, ça marche (c'est magique), mais... ça sert à quoi ? Je veux dire, si je veux vendre une bouteille de piquette que j'ai faite dans mon cellier, est-ce que ça va me transformer "Piquette 2007 Grand cru / Maison Poudlard" en un code barre du genre "1598674589857" ? Que n'importe quel lecteur de code barre puisse retraduire en "Piquette 2007 Grand cru..." ?

Je comprend pas et pourtant ça me serait extrêment utile :-(

signaler à un administrateur
Commentaire de Gally le 07/09/2007 12:23:57

Bonjour 9onmail>

Deja il ne faut pas confondre un code39 et un ean13, pour la vente c'st un code ean13. Ce code a plus d'utiliter sur les documents ou en entreprise.

Bonne continuation,
Gally Home Corp

signaler à un administrateur
Commentaire de fyav le 07/09/2007 12:47:23

à 9onmail :
le code barre permet de rendre 'lisible' par un ordinateur une réfrence (par l'intermediaire d'un "lecteur de code barre")
en fait ça évite de taper la réfrence.

ensuite tu peux associer cette référence à n'importe quoi dans une base de donnée.

Les codes EAN13 sont utilisés par les fabricant de produits destinés à la vente, il existe une organisation à laquelle ces fabricants achètent une référence afin de l'associer à un de leurs produits. (ça permet que 1 produit unique=1 référence unique)

pour plus d'info va sur google et tape "code barre"

signaler à un administrateur
Commentaire de 9onmail le 10/09/2007 14:55:19

Je rajoute ce que j'en déduis (dès fois qu'un novice arrive ici comme moi) : dans un magasin le codebarre d'un produit n'affichera l'intitulé du produit que si l'intitulé a été rempli dans l'ordinateur du magasin, c'est ça ?

Je suis déçu, je croyais que c'était un algoritme mondial qui permettait de convertir : chaine de caractère -> chiffres et ainsi permettre à n'importe quel lecteur de code barre de retrouver l'intitulé en décryptant :-)

Je me goure ?

signaler à un administrateur
Commentaire de fyav le 10/09/2007 17:26:57

tu as tout a fait raison : dans un magasin le codebarre d'un produit n'affichera l'intitulé du produit que si l'intitulé a été rempli dans l'ordinateur du magasin

En fait le code barre évite simplememnt, mais très efficacement, de taper le code de chaque référence  des produits (passés en caisse pour le supermarché ou qui est sur la chaine de montage dans l'industrie)

Par contre la nouvelle technologie : la puce RFID qui envoi par radio ce qu'on lui a stocké (idem qu'une clef USB mais en wifi et d'une dimmension ridicule !)
pour cela il faut faire passer le produit sous un portique qui envoi permet de recevoir les infos de la puce.
En concret : au supermarché, il n'y aura plus de tapis et de lecteur code barre, tu passera juste un portique avec ton caddie et la caissière saura immédiatement tous les produits qui sont dans ton caddié et tu n'auras plus qu'à payer (ça, ça ne change pas !!!)

De surcroit la puce RFID aura non pas une référence unique pour chaque type de produit mais une référence unique pour chacun des produits !!!! c'est à dire 2 flacons de shampoing identiques auront un code dont la fin sera différente...

signaler à un administrateur
Commentaire de gglegrateu le 14/11/2007 10:54:24

Salut a tous ça marche bien, j'ai donc choper une boite avec un code barre, je l'ai tapper ca me donne sensiblement la meme chose (au niveau de la taille des barres noirs), c'est normal ?

Ce que j'ai tapé : 5414428146748
Résultat : *5414428146748F*

y a moyen de virer les etoiles et la lettre qui ne sont pas dans l'originie
D'avance merci ;)

signaler à un administrateur
Commentaire de fyav le 14/11/2007 11:38:55

je ne comprend pas ce que tu dit,
un code barre doit avoir un début, une fin (les *) et une clef de controle
(la lettre de fin est la clef de contrôle qui est un élément nécessaire pour les lecteurs de code barre : ça leur permet de "contrôler" et vérifier la validité de leur lecture)

signaler à un administrateur
Commentaire de gglegrateu le 16/11/2007 09:00:03

Je sais bien mais j'ai contacter une société qui distribu des douchette, et il m'a dit que si il y a une lettre ou un symbole, la douchette la prendra en compte lors du scanage.

J'ai donc modifier ça :

  $text='*'.$text.$tab2[$j].'*';

Par :

  $text=''.$text.'';

Il m'affiche le meme code barre, sans les étoiles et sans la lettre, en faite cela ne chagera rien avec ou sans la modif, car le code barre est le même, a savoir si la douchette me ramenera l'etoile et la lettre ?

Merci ;)

signaler à un administrateur
Commentaire de fyav le 16/11/2007 09:10:31

Non : la douchette ne fera que te lire ce que tu as mis.

Par contre sans les étoiles et la clef, tu risque d'avoir des erreurs de scan (peu mais possible)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,094 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.