Générer un code barre
19 messages • Page 2 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
-

xdeslandes - WRInaute impliqué

- Messages: 314
- Inscription: Mer Déc 29, 2004 20:17
L'exemple qu'il montre en ligne fonctionne pour EAN13, mais pas pour le code 39 !
C'est toujours la même chose : il semble que générer un EAN13 soit fréquent et facile, mais pour les autres codes, ce ne sont que des exécutables ou des trucs pas faciles d'emploi.
Il est clair que sous forme de classe (comme Debora), l'intégration de l'image générée est faisable dans mon appli.
J'envisage deux solutions au choix :
1- développer une fonction qui traduit mes chaines alphanumériques en chaines de 13 chiffres, qui seront ensuite codées par Debora
2- transformer en classe php (suivant le modèle de Debora) le code suivant qui fonctionne pour le code 39 :
Qu'en pensez-vous ?
C'est toujours la même chose : il semble que générer un EAN13 soit fréquent et facile, mais pour les autres codes, ce ne sont que des exécutables ou des trucs pas faciles d'emploi.
Il est clair que sous forme de classe (comme Debora), l'intégration de l'image générée est faisable dans mon appli.
J'envisage deux solutions au choix :
1- développer une fonction qui traduit mes chaines alphanumériques en chaines de 13 chiffres, qui seront ensuite codées par Debora
2- transformer en classe php (suivant le modèle de Debora) le code suivant qui fonctionne pour le code 39 :
- Code: Tout sélectionner
<?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);
}
?>
Qu'en pensez-vous ?
-

xdeslandes - WRInaute impliqué

- Messages: 314
- Inscription: Mer Déc 29, 2004 20:17
Ce code est effectivement excellent, mais difficilement exploitable. Il est bien lorsque l'on veut l'appeler directement avec les paramètres, mais j'aimerais bien pouvoir appeler qqch du genre :
Il faudrait, je pense, créer à partir de ce script une classe php. Qu'en pensez-vous ?
(merci de vos coups de mains et avis
!)
- Code: Tout sélectionner
<img src="code39.php?texte=1234567890123qsderty&h=50&L=1" border="0">
Il faudrait, je pense, créer à partir de ce script une classe php. Qu'en pensez-vous ?
(merci de vos coups de mains et avis
-

xdeslandes - WRInaute impliqué

- Messages: 314
- Inscription: Mer Déc 29, 2004 20:17
Je retombe sur ce topic après quelque temps. Juste pour vous dire que finalement, j'ai utilisé la classe php FPDF qui génère des fichiers pdf, et qui est implémentée pour générer des codes barres. Bref, tout ce qu'il me fallait, et super souple, facilement adaptable. Merci FPDF, et merci à vous (un peu tard). 
19 messages • Page 2 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- PR Weaver en test en avant-première
- Comment gérer simplement les sitemaps de plusieurs sites au même endroit
- Trouver son checksum Google avec la toolbar (barre d'outils)
- Trouver son PageRank sans la toolbar
- Hébergement de projets open source sur Google Code
- La toolbar pour Firefox de Google
- Windows Live Toolbar Beta
- Google ajoute la Navigation par nom dans sa Toolbar
- Gérer l'entête HTTP en PHP
- Faille de sécurité dans la Google Toolbar
- Fin de la barre grise dans la google barre ?
- Problème pour coller le code dans le code source d'1 page
- Cacher le code client adsense dans son code source
- [CSS] Comment simplifier ce code ? (code pas compliqué)
- Comment convertir un code HTML en code PHP ?
- Code php avec code <iframe src=
- [???] php code en 1 ligne dans le code source
- code 404 au lieu de code 200
- Extrait de code : résultats Code Search dans Web Search
- texte barré
- Barre psychologique?
- PR Google barre différent PR ff
- Barre de dédicasses
- barre de defilement
- Actualisation de la barre PR
Consultez la description détaillée des produits ou services de Google suivants : Google Code, Google Toolbar API
- Test du code HTTP d'une page
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


le forum