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 EAN13


Information sur la source

Catégorie :Chaîne de caratère Classé sous : codebarre, ean, ean13, générateur, code barre Niveau : Initié Date de création : 27/05/2005 Date de mise à jour : 09/01/2008 17:00:29 Vu : 23 510

Note :
8,75 / 10 - par 8 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (52)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
ce source n'est pas de moi, mais j'ai mis tellement de temps à le trouver que je vous en fait cadeau
ce script permet de générer des code barre EAN 13 en fabriquant chacune des barre, ça ne se base pas sur une police True Type (TTF)
Le site où je l'ai trouvée (NE FONCTIONNE PLUS): http://www.neokraft.net/articles/codes-barres-php/
voilà un autre site http://www.alaide.com/outils_generateur_ean13.php mais c'est du javascript

et en plus un site pour créer les images des codes barres (vient de GRenard : http://www.phpcs.com/codes/GENERATEUR-CODE-BARRE-BARCODE_23927.aspx):
http://other.lookstrike.com/barcode/1d/demo/html/ean13.php

j'ai créé aussi une source pour fabriquer un code barre code 39: http://www.phpcs.com/code.aspx?ID=31659
 

Source

  • <?php
  • // ce fichier s'appelle par exemple EAN13.php
  • // dans votre programme il suffit d'appeler l'image comme suit:
  • // <img src="EAN13.php?numero=3149025043092&dimension=5">
  • // et c'est tout
  • $form_numero='0123456789012'; //le code EAN13 à 13 chiffres
  • $form_dimension=4.5; // multiplicateur de la taille de l'image initiale (120 pixel x 70 pixel)
  • // ce qui donne avec la valeur de 4.5 une image en 300 dpi de 4.57 cm x 2.57 cm (540 pixel x 315 pixel)
  • import_request_variables("gP", "form_");
  • /* ***** BEGIN LICENSE BLOCK *****
  • * Version: MPL 1.1
  • *
  • * The contents of this file are subject to the Mozilla Public License Version
  • * 1.1 (the "License"); you may not use this file except in compliance with
  • * the License. You may obtain a copy of the License at
  • * http://www.mozilla.org/MPL/
  • *
  • * Software distributed under the License is distributed on an "AS IS" basis,
  • * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  • * for the specific language governing rights and limitations under the
  • * License.
  • *
  • * The Original Code is : Debora, un générateur de codes barre.
  • *
  • * The Initial Developer of the Original Code is
  • * Olivier Meunier.
  • * Portions created by the Initial Developer are Copyright (C) 2003
  • * the Initial Developer. All Rights Reserved.
  • *
  • * Contributor(s):
  • * Rémi Chéno (ajout des séparateurs gauche, centre et droite)
  • *
  • * ***** END LICENSE BLOCK ***** */
  • class debora
  • {
  • /**
  • * Déclaration des propriétés
  • */
  • var $arryGroup = array('A' => array(
  • 0 => "0001101", 1 => "0011001",
  • 2 => "0010011", 3 => "0111101",
  • 4 => "0100011", 5 => "0110001",
  • 6 => "0101111", 7 => "0111011",
  • 8 => "0110111", 9 => "0001011"
  • ),
  • 'B' => array(
  • 0 => "0100111", 1 => "0110011",
  • 2 => "0011011", 3 => "0100001",
  • 4 => "0011101", 5 => "0111001",
  • 6 => "0000101", 7 => "0010001",
  • 8 => "0001001", 9 => "0010111"
  • ),
  • 'C' => array(
  • 0 => "1110010", 1 => "1100110",
  • 2 => "1101100", 3 => "1000010",
  • 4 => "1011100", 5 => "1001110",
  • 6 => "1010000", 7 => "1000100",
  • 8 => "1001000", 9 => "1110100"
  • )
  • );
  • var $arryFamily = array(
  • 0 => array('A','A','A','A','A','A'),
  • 1 => array('A','A','B','A','B','B'),
  • 2 => array('A','A','B','B','A','B'),
  • 3 => array('A','A','B','B','B','A'),
  • 4 => array('A','B','A','A','B','B'),
  • 5 => array('A','B','B','A','A','B'),
  • 6 => array('A','B','B','B','A','A'),
  • 7 => array('A','B','A','B','A','B'),
  • 8 => array('A','B','A','B','B','A'),
  • 9 => array('A','B','B','A','B','A')
  • );
  • /**
  • * Constructeur
  • *
  • * Initialise la classe
  • *
  • * @EAN13 string code EAN13
  • *
  • * return void
  • */
  • function debora($EAN13)
  • {
  • settype($EAN13,'string');
  • //Transformation de la chaine EAN en tableau
  • for($i=0;$i<13;$i++)
  • {
  • $this->EAN13[$i] = substr($EAN13,$i,1);
  • }
  • $this->strCode = $this->makeCode();
  • }
  • /**
  • * Création du code binaire
  • *
  • * Crée une chaine contenant des 0 ou des 1 pour indiquer les espace blancs ou noir
  • *
  • * return string Chaine résultante
  • */
  • function makeCode()
  • {
  • //On récupère la classe de codage de la partie qauche
  • $arryLeftClass = $this->arryFamily[$this->EAN13[0]];
  • //Premier séparateur (101)
  • $strCode = '101';
  • //Codage partie gauche
  • for ($i=1; $i<7; $i++)
  • {
  • $strCode .= $this->arryGroup[$arryLeftClass[$i-1]][$this->EAN13[$i]];
  • }
  • //Séparateur central (01010)
  • $strCode .= '01010';
  • //Codage partie droite (tous de classe C)
  • for ($i=7; $i<13; $i++)
  • {
  • $strCode .= $this->arryGroup['C'][$this->EAN13[$i]];
  • }
  • //Dernier séparateur (101)
  • $strCode .= '101';
  • return $strCode;
  • }
  • /**
  • * Création de l'image
  • *
  • * Crée une image GIF ou PNG du code généré par giveCode
  • *
  • * return void
  • */
  • function makeImage($imageType="png")
  • {
  • global $form_dimension;
  • //Initialisation de l'image
  • //$img=imagecreate(120, 70);
  • $width=120;
  • $height=70;
  • $img=imagecreate($width, $height);
  • $color[0] = ImageColorAllocate($img, 255,255,255);
  • $color[1] = ImageColorAllocate($img, 0,0,0);
  • $coords[0] = 15;
  • $coords[1] = 10;
  • $coords[2] = 1;
  • $coords[3] = 40;
  • imagefilledrectangle($img, 0, 0, 95, 80, $color[0]);
  • for($i=0;$i<strlen($this->strCode);$i++)
  • {
  • $posX = $coords[0];
  • $posY = $coords[1];
  • $intL = $coords[2];
  • $intH = $coords[3];
  • $fill_color = substr($this->strCode,$i,1);
  • # Allongement des 3 bandes latérales et centrales
  • # sur une idée de Rémi Chéno
  • if ($i < 3 || ($i >= 46 && $i < 49) || $i >= 92) {
  • $intH = $intH + 8;
  • }
  • imagefilledrectangle($img, $posX, $posY, $posX, ($posY+$intH), $color[$fill_color]);
  • //Deplacement du pointeur
  • $coords[0] = $coords[0] + $coords[2];
  • }
  • # Affichage du code (Rémi Chéno)
  • imagestring($img, 3, 5, 50, $this->EAN13[0], $color[1]);
  • imagestring($img, 3, 19, 50, implode('', array_slice($this->EAN13,1, 6)), $color[1]);
  • imagestring($img, 3, 65, 50, implode('', array_slice($this->EAN13,7)), $color[1]);
  • // Calcul des nouvelles dimensions
  • $newwidth = $width* $form_dimension;
  • $newheight = $height * $form_dimension;
  • // Chargement
  • $thumb = imagecreatetruecolor($newwidth, $newheight);
  • // Redimensionnement
  • imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  • Header( "Content-type: image/".$imageType);
  • $func_name = 'image'.$imageType;
  • $func_name($thumb);
  • imagedestroy($img);
  • imagedestroy($thumb);
  • }
  • }//Fin de la classe
  • $ean13 = new debora($form_numero);
  • $ean13-> makeImage();
  • ?>
<?php
// ce fichier s'appelle par exemple EAN13.php
//    dans votre programme il suffit d'appeler l'image comme suit:
//    <img src="EAN13.php?numero=3149025043092&dimension=5">
//  et c'est tout


$form_numero='0123456789012'; //le code EAN13 à 13 chiffres
$form_dimension=4.5; // multiplicateur de la taille de l'image initiale (120 pixel x 70 pixel)
// ce qui donne avec la valeur de 4.5 une image en 300 dpi de 4.57 cm x 2.57 cm (540 pixel x 315 pixel)

import_request_variables("gP", "form_");


/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is : Debora, un générateur de codes barre.
*
* The Initial Developer of the Original Code is
* Olivier Meunier.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Rémi Chéno (ajout des séparateurs gauche, centre et droite)
*
* ***** END LICENSE BLOCK ***** */

class debora
{
  /**
  * Déclaration des propriétés
  */
  var $arryGroup = array('A' => array(
  0 => "0001101", 1 => "0011001",
  2 => "0010011",	3 => "0111101",
  4 => "0100011",	5 => "0110001",
  6 => "0101111",	7 => "0111011",
  8 => "0110111",	9 => "0001011"
  ),
  'B' => array(
  0 => "0100111",	1 => "0110011",
  2 => "0011011",	3 => "0100001",
  4 => "0011101",	5 => "0111001",
  6 => "0000101",	7 => "0010001",
  8 => "0001001",	9 => "0010111"
  ),
  'C' => array(
  0 => "1110010",	1 => "1100110",
  2 => "1101100",	3 => "1000010",
  4 => "1011100",	5 => "1001110",
  6 => "1010000",	7 => "1000100",
  8 => "1001000",	9 => "1110100"
  )
  );

  var $arryFamily = array(
  0 => array('A','A','A','A','A','A'),
  1 => array('A','A','B','A','B','B'),
  2 => array('A','A','B','B','A','B'),
  3 => array('A','A','B','B','B','A'),
  4 => array('A','B','A','A','B','B'),
  5 => array('A','B','B','A','A','B'),
  6 => array('A','B','B','B','A','A'),
  7 => array('A','B','A','B','A','B'),
  8 => array('A','B','A','B','B','A'),
  9 => array('A','B','B','A','B','A')
  );

  /**
  * Constructeur
  *
  * Initialise la classe
  *
  * @EAN13			string		code EAN13
  *
  * return			void
  */
  function debora($EAN13)
  {
    settype($EAN13,'string');

    //Transformation de la chaine EAN en tableau
    for($i=0;$i<13;$i++)
    {
      $this->EAN13[$i] = substr($EAN13,$i,1);
    }

    $this->strCode = $this->makeCode();
  }


  /**
  * Création du code binaire
  *
  * Crée une chaine contenant des 0 ou des 1 pour indiquer les espace blancs ou noir
  *
  * return			string		Chaine résultante
  */
  function makeCode()
  {
    //On récupère la classe de codage de la partie qauche
    $arryLeftClass = $this->arryFamily[$this->EAN13[0]];

    //Premier séparateur (101)
    $strCode = '101';

    //Codage partie gauche
    for ($i=1; $i<7; $i++)
    {
      $strCode .= $this->arryGroup[$arryLeftClass[$i-1]][$this->EAN13[$i]];
    }

    //Séparateur central (01010)
    $strCode .= '01010';

    //Codage partie droite (tous de classe C)
    for ($i=7; $i<13; $i++)
    {
      $strCode .= $this->arryGroup['C'][$this->EAN13[$i]];
    }

    //Dernier séparateur (101)
    $strCode .= '101';

    return $strCode;
  }


  /**
  * Création de l'image
  *
  * Crée une image GIF ou PNG du code généré par giveCode
  *
  * return			void
  */
  function makeImage($imageType="png")
  {
  global $form_dimension;
    //Initialisation de l'image
    //$img=imagecreate(120, 70);

    $width=120;
    $height=70;
    $img=imagecreate($width, $height);

    $color[0] = ImageColorAllocate($img, 255,255,255);
    $color[1] = ImageColorAllocate($img, 0,0,0);

    $coords[0] = 15;
    $coords[1] = 10;
    $coords[2] = 1;
    $coords[3] = 40;

    imagefilledrectangle($img, 0, 0, 95, 80, $color[0]);

    for($i=0;$i<strlen($this->strCode);$i++)
    {
      $posX = $coords[0];
      $posY = $coords[1];
      $intL = $coords[2];
      $intH = $coords[3];

      $fill_color = substr($this->strCode,$i,1);

      # Allongement des 3 bandes latérales et centrales
      # sur une idée de Rémi Chéno
      if ($i < 3 || ($i >= 46 && $i < 49) || $i >= 92) {
        $intH = $intH + 8;
      }

      imagefilledrectangle($img, $posX, $posY, $posX, ($posY+$intH), $color[$fill_color]);

      //Deplacement du pointeur
      $coords[0] = $coords[0] + $coords[2];
    }

    # Affichage du code (Rémi Chéno)
    imagestring($img, 3, 5, 50, $this->EAN13[0], $color[1]);
    imagestring($img, 3, 19, 50, implode('', array_slice($this->EAN13,1, 6)), $color[1]);
    imagestring($img, 3, 65, 50, implode('', array_slice($this->EAN13,7)), $color[1]);

    // Calcul des nouvelles dimensions
    $newwidth = $width* $form_dimension;
    $newheight = $height * $form_dimension;

    // Chargement
    $thumb = imagecreatetruecolor($newwidth, $newheight);

    // Redimensionnement
    imagecopyresized($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    Header( "Content-type: image/".$imageType);

    $func_name = 'image'.$imageType;

    $func_name($thumb);
    imagedestroy($img);
    imagedestroy($thumb);
  }


}//Fin de la classe
$ean13 = new debora($form_numero);
$ean13-> makeImage();

?>

Conclusion

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

Historique

06 décembre 2007 12:42:57 :
le site de neokraft ne fonctionne plus j'en ai trouvé un autre mais en javascript où il est difficile de copier l'image ! dès que j'ai le temps je le mettrait sur mon site
09 janvier 2008 13:04:16 :
ajout d'une adresse de site qui permet de créer les images des codes barre pour ceux qui ne veulent pas programmer !
09 janvier 2008 13:06:58 :
j'avais oublié de préciser où j'avais trouvé ce lien...
09 janvier 2008 16:56:49 :
la source a été modifiée avec : - explications d'utilisation - possibilitée de redimmensionner l'image pour pouvoir l'imprimer en 300 dpi (imprimerie)
09 janvier 2008 16:59:12 :
source modifiée : - ajout d'explications claires - ajout redimensionnement de l'image pour pouvoir l'imprimer à 300 dpi
09 janvier 2008 17:00:29 :
modification de la capture

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 28/05/2005 08:35:11

Salut,

idem que pour l'autre source, 9/10 c'est pas mal ;-)

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

Ton tableau C est le même que le A mais inversé (1 en 0) et le B c'est l'inverse de gauche à droite et les 1 en 0...
Alors normalement tu n'est pas vraiment obliger de faire alors 3 tableaux.
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 fyav le 29/05/2005 01:04:17

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

oui, comme pour le code 39,: dans une pharmacie !!!!
et ça fonctionne à la perfection

signaler à un administrateur
Commentaire de INFODIG le 11/10/2005 14:59:14

je vais peut-etre passer pour un nul mais j'ai cette erreur

Fatal error: Call to undefined function: imagecreate() in c:\program files\easyphp1-7\www\materiels\class.debora.php on line 138

qqu peut m'aider mailto: infocomut.free.fr merki!!

signaler à un administrateur
Commentaire de GRenard le 11/10/2005 17:07:51

Tu dois activer GD2.

signaler à un administrateur
Commentaire de INFODIG le 11/10/2005 17:11:20

koi ca GD2

signaler à un administrateur
Commentaire de Anthomicro le 11/10/2005 17:29:19

si t'as easyphp, clic droit, extensions php, tu coches "GD2"

signaler à un administrateur
Commentaire de Salve le 10/11/2005 11:36:51

Salut,
   je suis en train de travailler sur le code EAN13 et j'utilise la classe Debora que je dérive à ma façon. Mais attention elle ne fait qu'imprimer le code que l'on lui passe si l'on veut générer son propre code ne pas oublier que le dernier chiffre à droite c'est le checksum il est donc calculé. un chiffre bidon du style 55555 sera imprimé par la classe mais pas reconnu par la douchette.
Voilà c'était pour info (je me suis fait moi-même avoir ;)) )
  Sinon concernant la classe Debora elle est trés bien.

signaler à un administrateur
Commentaire de rafarel le 28/01/2007 19:05:11

Bonjour, est ce que quelqu'un pourrais m'expliquer comment générer une image avec ce code d'apres un ean13?
J'ai bien entendu activer gd2 sous easy php.
mais je ne sais pas comment utilisé cette fonction, je ne travaille jamais avec les classes.
Merci de votre aide

signaler à un administrateur
Commentaire de fyav le 29/01/2007 00:14:17

si tu n'est pas habitué aux classes, tu vires :

class debora
{

et le "}" à la fin

et tu ajoutes à la fin :

debora("7313467106011"); //remplace par le code EAN13 de ton choix
makeCode();
makeImage("png"); //pour créer une image de type PNG de ton EAN13

et le résultat sera une image avec ton code EAN13

signaler à un administrateur
Commentaire de rafarel le 29/01/2007 10:56:25

Bonjour, merci pour ta réponse FYAV.
Entre temps j'ai fais comme ceci:

$ean13 = new debora("7313467106011");
$ean13-> makeImage();

Par contre j'ai deux autres questions:
Est ce que je peut enregistrer le fichier png générer sans forcement l'afficher?
Mon code EAN est composé de 12 chiffres, je sais que le 13eme est un checkdigit, est ce que vous auriez une fonction php pour obtenir le checkdigit a partir d'une série de 12 chiffres?

J'ai trouvé ca en javascript que j'ai adapté en php mais ca ne fonctionne pas... :/

// -----------------calcul du CheckDigit d'un EAN13  (MON ADAPTATION PHP)
function ccd13($code)
{
  $facteur = 3;
  $somme = 0;
  
  // prendre les 12 premiers caractères du code pour calculer le CD
  $code = substr ($code, 0 , 12 );
  

  for ($i = strlen($code); $i > 0; --$i) {
    $somme = $somme + substr ($code, $i-1, $i) * $facteur;
    $facteur = 4 - $facteur;
      }

   // le CD est rajouté au code
   $code += ((1000 - $somme) % 10);
  

    return ( $code ) ;

}

///////////////////////////////////////////////
// -----------------calcul du CheckDigit d'un EAN13  (SOURCE JAVASCRIPT QUE JAI TROUVÉ)
function ccd13($code)
{
  facteur = 3;
  somme = 0;
  
  // prendre les 12 premiers caractères du code pour calculer le CD
  $code = $code.substring ( 0 , 12 );
  

  for (i = $code.length; i > 0; --i) {
    somme = somme + $code.substring (i-1, i) * facteur;
    facteur = 4 - facteur;
      }

   // le CD est rajouté au code
   $code += ((1000 - somme) % 10);
  

    return ( $code ) ;

}

Merci encore

signaler à un administrateur
Commentaire de rafarel le 29/01/2007 11:11:40

Coucou c'est encore moi !
Finalement j'ai trouvé une fonction qui marche bien pour le Check Digit à cet adresse :
http://www.koders.com/php/fid042021EAD689DAC3BB5065A3DAEFD0ABF96FF779.aspx
C'est une fonction perdue au beau milieu d'une page de code cela vous interessera surement, je ne sais pas a quoi sert l'integralité du code.
Reste encore la qustion pour enregister les images.
Merci.

signaler à un administrateur
Commentaire de fyav le 29/01/2007 11:46:54

remplace :
function makeImage($imageType="png")
par :
  function makeImage($imageType="png", $filename)

et remplace :
  $func_name($img);
par :
  $func_name($img,$filename);

où $filename est le nom du fichier (avec le chemin complet)

pourrais-tu poster la fonction que tu as trouvée, ça en interressera surement d'autres,

Merci

signaler à un administrateur
Commentaire de rafarel le 29/01/2007 13:19:52

Merci pour ton aide !
Voici la fonction qui renvoie le code barre($barcode à 12 chiffre) avec le check digit ($r le 13eme chiffre):

function GetCheckDigit($barcode){
//Calcule le chiffre de controle
$sum=0;
for($i=1;$i<=11;$i+=2)
$sum+=3*$barcode{$i};
for($i=0;$i<=10;$i+=2)
$sum+=$barcode{$i};
$r=$sum%10;
if($r>0)
$r=10-$r;
return $barcode.$r;
}

J'ai trouvé cette fonction ici elle fait partie d'un autre code pour les code barre il y a certainement d'autre fonctions interessantes!
http://www.koders.com/php/fid042021EAD689DAC3BB5065A3DAEFD0ABF96FF779.aspx

Merci

signaler à un administrateur
Commentaire de Alpha911 le 15/03/2007 23:31:30

Bonjour,
Je n'arrive pas a afficher quoi que ce soit quand je fait appel à la page ou j'ai copié collé le code j'arrive sur une page blanche. Comment faire ? (librarie GD2 activé) easy php 1.6.0.0

signaler à un administrateur
Commentaire de Ashitaka99 le 02/04/2007 14:29:04

Bonjour.

J'ai finalisé mon programme de facturation avec Base de donnée. Le seul "hic" est que je ne vais pas programmer moi-même l'affichage des codes barres :P

J'ai donc décidé d'utiliser cette class Débora, qui a l'air de fonctionner parfaitement .... Sur une page vierge ^^ Lorsque je la fait fonction avec le reste de mon code, elle m'affiche un charabia (même pas une erreur) incompréhensible.

[Charabia : ‰PNG  IHDRxF=ÚÂLPLTEÿÿÿUÂÓ~œIDATxœc`ì€1nv’¨´iÉD§²3WFù£üæ;€R%+8mŠ`òúËÕUHµ©øüù0H^2rsÂË£igg³¥ƒø†Ž›kTùÍϲÁ|æ´7ަU~6HñûØÎÎ8jwv†áaÛÙGbÆÌ þÉ ig$Í3cÙy€ßÞ¦BúƒMÅÇçïP!¿Q« ¹$ ¦IEND®B`‚]

J'avoue n'avoir jamais utilisé de class PHP, et peut etre que je l'utilise inadéquatement :(

Pourriez-vous me donnez une solution ou un petit tuto pour l'utiliser idéalement ?

signaler à un administrateur
Commentaire de fyav le 02/04/2007 14:52:40

c'est tout à fait normal, dans ton programme de facturation, il ne faut pas inclure cette class :
  - il faut créer un prog php avec en paramètre le numéro, ce prog permettra d'afficher le code barre
  - dans ton programme de facturation tu affiche une image qui appel le prog php ...
ex dans programme de facturation :
<img src="codebarre.phph?numero=7313467106011">

signaler à un administrateur
Commentaire de Ashitaka99 le 02/04/2007 18:16:30

Yes sa gere. Maintenant que tu me le dis, sa me parait normal ^^ Jespere que sa marchera :P

Merci bien ;)

signaler à un administrateur
Commentaire de kowalska le 29/05/2007 11:28:13

Bonjour,

j'ai un petit soucis d'affichage! j'ai toujours une page blanche. Pourriez vous m'indiquer la démarche a suivre svp ! Merci.

signaler à un administrateur
Commentaire de fyav le 29/05/2007 22:29:20

comment tu fais ? explique merci.

signaler à un administrateur
Commentaire de kowalska le 30/05/2007 11:54:07

bonjour, j'utilise depuis ce matin cette classe qui est superbe! je reviens de chez un commercant pour pouvoir test le code barre et ca marche.
Par contre, je ne peux pas faire echo $var; apres car il m'affiche un code louche comme  Ashitaka99.

En faite, le code barre est généré par rapport a l'id d'un client dans ma base de donne puis une génération de 13 chiffre apres l'id.
ensuite je fais un substr pour gardé les 13 premiere valeur tout en gardant l'id du client en debut de chaine.

voila si vous pouviez me dire comment faire.
Merci d'avance.

signaler à un administrateur
Commentaire de kowalska le 30/05/2007 12:19:28

c'est bon j'ai trouvé merci. Comme d'hab je fait mon boulet lol. En vous remerciant.

signaler à un administrateur
Commentaire de fyav le 30/05/2007 12:20:17

le code EAN13 a des caractères de contrôle et donc ne peux pas être utilisé n'importe comment !!!
je te conseil de faire tes codes barre en code39 qui est beaucoup plus souple
(nbre de caractère non limité, pas de caractère de contrôle, etc... )
http://www.phpcs.com/code.aspx?ID=31659

signaler à un administrateur
Commentaire de kowalska le 30/05/2007 13:17:54

Merci du conseil mais je suis obliger de faire du code EAn13 (obligé).
Mais c'est bon j'ai fait certaine modification et ca marche correctement maintenant.
Je te remercie pour ton code.

signaler à un administrateur
Commentaire de exeforever le 12/09/2007 17:16:51

j'essaie de modifier le code pour que makeImage puisse prendre également en paramètre la longueur et la hauteur de l'image. Seulement le souci est que la génération de l'image dépend d'autres parametres telle que la largeur de la barre ou l'espace entre les deux barres. Est-ce que vous auriez une idée ? sinon on peut toujours faire un resize de l'image apres génération du code barre, mais le probleme est qu'on perd en qualité, et le code barre ne sera pas forcément reconnu par les douchettes en magasin...

signaler à un administrateur
Commentaire de fyav le 13/09/2007 00:01:03

essaye de faire 1 code barre avec le programme actuel,
ensuite tu peux essayer de diminuer la largeur de l'image ainsi créée avec un logiciel,
ensuite tu imprime et tu test la lecture avec un lecteur
(la hauteur n'est pas un critère important, sauf pour des lecteurs peux précis)

bons tests....

signaler à un administrateur
Commentaire de santiago69 le 23/12/2007 11:15:35 10/10

Salut a tous,
J'ai un peu le meme probleme qu'Ashitaka99. Sauf que je ne comprend pas bien la reponse. Je suis encore un peu debutant en php. Donc voila ce que j'ai fait :
- copie/colle le script dans un fichier 'ean13.php'
- dans ma page 'index.php' j'ai ecrit
  <?php
    $ean13 = new debora('3149025043092');
    $ean13->makeImage()
  ?>

Non seulement j'ai du charabia, mais en plus il m'envoit l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at f:\mydocs\lab\[html]\index.php:42) in f:\mydocs\lab\[html]\scripts\ean13.php on line 142

Voila si quelqu'un a une idee pour resoudre le probleme...
Merci d'avance
Santiago

Et bien sur je donne un 10/10 au code de fyav.

signaler à un administrateur
Commentaire de fyav le 23/12/2007 11:38:36

normal : dan ton fichier ean13.php tu doit mettre (pas dans index.php)

au tout début:
  import_request_variables("gP", "form_");

et après ta classe :
  $ean13 = new debora($form_numero);
  $ean13->makeImage()

et dans ton fichier index.php tu met:
  <img src="ean13.phph?numero=3149025043092">

le principe est simple tu appel ton programme ean13.php qui va te renvoyer une image correspondante au numéro demandé

signaler à un administrateur
Commentaire de jpescarres le 09/01/2008 12:49:55 10/10

Bonjour à tous,

tout d'abord félicitation pour ce code, c'est vraiment excellent!

J'aurais une question car j'aurais besoin d'imprimer des codebares ean13 mais j'aurais voulu les imprimer en 300 dpi.
Y-at-il moyen à partir de votre code de "grossir" le codebar obtenu (pour ensuite le repasser en 300dpi sous un logiciel tel que photoshop)?

Merci d'avance

signaler à un administrateur
Commentaire de kowalska le 09/01/2008 13:09:09

Salut oui tu peux l'agrandir. je me rapel pas comment car ca fait un moment que j'ai utilisé ce code. mais pour le passer en 300 dpi je sais pas si c'est necessaire. et je pense pas qu'on puisse le faire. pour agrandir regarde dans la fonction makeImage();

signaler à un administrateur
Commentaire de jpescarres le 09/01/2008 14:09:38

Disons que j'ai déjà fouillé dans le code, les seuls parametres que j'ai trouvé sont ceux ci :

$coords[0] = 15; ////// DECALLAGE GAUCHE
$coords[1] = 10; ////// DECALLAGE HAUT
$coords[2] = 1; ////// ESPACE ENTRE LES BARRES?
$coords[3] = 40; ////// HAUTEUR DES BARRES

En gros pour expliquer le contexte je dois generer des codes bars pour l'impression d'un catalogue.
Avec ce code je peux trés simplement generer des images que je place dans un repertoire.
Par contre ces images ont une résolution ecran et non pas pour l'impression. Le rendu est donc relativement dégueulasse si on laisse les image à la taille actuelle.
C'est pourquoi il faudrait que je puisse agrandir ces code bars.

signaler à un administrateur
Commentaire de fyav le 09/01/2008 14:39:44

en fait pour agrandir l'image tu doit reprendre toute la programmation de la fonction "makeImage".

il ne suffit pas de multiplier !
il faut faire en sorte de garder le principe des largeurs des barres et des espaces

signaler à un administrateur
Commentaire de jpescarres le 09/01/2008 15:18:38

C'est bien ce que je pensais...
Avant de me lancer la dedans, je préférais demander s'il n'y avait pas + simple.
Merci pour vos réponses!

signaler à un administrateur
Commentaire de fyav le 09/01/2008 15:40:52

je suis en pleine réflexion
j'ai pour l'instant réussi à redimmensionner le code barre mais pas les chiffres...
je pense toucher au but

signaler à un administrateur
Commentaire de pgu83 le 21/02/2008 11:25:34

Bonjour,
Je voudrais utiliser ce script pour imprimer le code dans un document pdf(facture) téléchargé en ligne par les clients.
Je ne vois pas bien comment intégrer le <img src="EAN13.php?numero=3149025043092&dimension=5">
dans la génération de monfichier pdf

signaler à un administrateur
Commentaire de fyav le 21/02/2008 12:38:32

je n'ai jamais essayé de faire des pdf en php et d'y intégrer des images,
mais dans ton code où tu doit mettre l'image tu met comme lien vers l'image :
'www.tonsite.com/EAN13.php?numero=3149025043092&dimension=5&f=image.jpg'

signaler à un administrateur
Commentaire de pgu83 le 22/02/2008 09:22:01

<mais dans ton code où tu doit mettre l'image tu met comme lien vers l'image :
'www.tonsite.com/EAN13.php?numero=3149025043092&dimension=5&f=image.jpg'
>
C'est ce que j'ai fait mais pour l'instant ça ne marche pas.
J'ai une erreur :
FPDF error: Missing or incorrect image file: ean13.php?numero=0123456789012&dimension=5&f=image.jpg

signaler à un administrateur
Commentaire de fyav le 22/02/2008 09:36:10

alors essaye d'abord de lancer le lien dans ton navigateur, copier l'image obtenue dans un dossier et essayer d'intégrer l'image dans ton pdf, comme ça tu verras si ça vient du pdf ou de l'image !

signaler à un administrateur
Commentaire de pgu83 le 22/02/2008 11:31:22

C'est ce que j'ai essayé de faire mais le résultat du lien n'est pas une image mais ça :
?PNG  IHDRX^Öµö ÂIDATx½íÝA´>0@Ѧ¨û_Tn«,P©1þ{»Ñ´Á$f¾-óÙ¶íTý¾{p'! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤´¾»0ÝçóùûÇmÛþý·û/õåÐÿÆ]£Ú7ïÝ?С-:t,#ÿxßÈd~÷'Íä¼a²È~¹¬N½Þóþ¸]Æ!iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤ !iB@¨&"¤}¶m»{ s}>¾¿ü:ßýßÂõÌX¸å3Ö!iB@¨&"¤ !iB@¨&"¤ !i?ó^úkCCÖÜ}àËþ ^v #øì3zÁF^yä¸#Ö¼ÍØwè?Ü&"¤ !iB@ÚT±#¯|â_.ߺ5¯Á}/~üûÜ&"¤ !iB@ÚÄÅ2½eÞóó'õ-÷»q<Âe§ÿ^WYsùÏ!.îHBÒ"¤4! íÌÅ2k>¼}Äv!#ÃxÄ? ó\vFwíþ3ï@#ÌØÿfÆ.È!iB@¨&"¤}îÚãcß"ÏWÙÒeßÈ#ñË>£yºë3zÄô^sñ{ÙñçkîHBÒ"¤4! mâbX¾;BÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHBÒ"¤4! MHûÕÿ"íf°.+IEND®B`,

Pour info je travaille sous linux

signaler à un administrateur
Commentaire de fyav le 22/02/2008 11:35:31

attention le code fourni une image PNG pas JPEG !

signaler à un administrateur
Commentaire de pgu83 le 22/02/2008 11:58:14

J'ai mis le lien sans préciser jpg ou png :
http://www.monsite.com/ean13.php?numero=3149025043092&dimension=5

signaler à un administrateur
Commentaire de fyav le 22/02/2008 12:21:04

à mon avis tu as un truc qui ne fonctionne pas dans le script ou dans ton serveur, ...

signaler à un administrateur
Commentaire de pgu83 le 22/02/2008 14:54:43

J'ai vérifié que la gd2 est bien activé sur mon serveur.

Je pense que c'est la façon dont j'utilise le script qui ne va pas. voilà ce que j'ai fait :

La classe ean13.php est dans mon répertoire : includes/classes

J'ai créé pour tester un script php ean.php avec :
<?php
require('includes/classes/ean13.php');
  $debora = new debora($HTTP_GET_VARS['EAN13']);
  ?>

J'ai créé un fichier html avec:
<body>
<p>Code ean13 :</p>
<p><img src="ean.php?numero=7313467106011">
</p></body>

Quand j'appel mon fichier htm j'ai la représentation d'une image absente.
Quand j'appel le scripte php j'obtiens toujours le même charabia à l'exécution.

signaler à un administrateur
Commentaire de fyav le 22/02/2008 16:04:35

essaye :
tu vires au début:

class debora
{

et à la fin

}//Fin de la classe
$ean13 = new debora($form_numero);
$ean13-> makeImage();


et tu ajoutes à la fin :

debora("7313467106011"); //remplace par le code EAN13 de ton choix
makeCode();
makeImage("png"); //pour créer une image de type PNG de ton EAN13

signaler à un administrateur
Commentaire de pgu83 le 22/02/2008 17:19:47

dans ce cas mon script php qui appel la classe n'est plus utile.
c'est mon ean13.htm qui appel directement le ean13.php avec les modifications que tu viens d'indiquer. J'utilise le script comme fonction plutôt que comme classe si je comprends bien.
j'ai essayé mais ça ne marche toujours pas.
maintenant quand j'exécute mon ean13.php j'ai une page blanche.
La fonction ne génère rien. Le code source généré est vide entre les balises<body>

signaler à un administrateur
Commentaire de fyav le 22/02/2008 18:02:11

pour ma part, le script recopié à l'identique (fichier nomé EAN13.php),
lorsque j'appel EAN13.php?numero=0123456789012
sur mon navigateur l'image apparait et dans le code source html voici le résultat :

?PNG

???
IHDR????;???ÝÏ8??@IDATx½íÝÑ´>0??ÁRõÿT¾F'Yf ?μE×pàs´²íûþ ?
¿ïÞ?ÞCT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q óçîÈlÛöùrß÷'odâ]ã?¿ÿìÀß{°ófÇõÃù¾û]sÇ5npF%óðÓÜ´IæáÁ»ä½¹-½¾lãïºtÎç3êjÎT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2Û¾ïwïCcÛ¶Ï-¾Çuð#~`²ñ5>lÎT?È^
?Q #*?dD¤¼¨??2¢@æO¾Å÷ã
Zä¶O2··WÌ"#?8ns{{àà@ÖT97ò¥Ûÿæßëqóõ9S #*?dD¤¼¨? êçVº~¼ëóåkVùRêùÁFéÄÆ#ÿÍõçq-´ü½«?÷Ñ"í>¯g}ÌÇT
?Q #*?dú>¾eî"ò"Þ´ø4·ñ|¹-ß'÷¾{ôÇüq½©??2¢@FT?È|u¡~Á5±«-=¿¹¬z×fcÇïb;¿KÉ>f{ø¸%ñfõç×ò¨Ï?^ܾÉT
?Q #*?d®]SqÏÑü2÷ÜêHþ¼¿A7^?^ðÉP_úXÃf¹qõgyn¦.â5«Y㽩??2¢@FT?È\»Pÿ¦Õ§óÞôèÙõH¹Ôù{fóßµ^7}Ìç8S #*?dD¤Ì{¾ùñàzå¨ßx~¯®¾z;·'ÁËè¾ô½L¶gÀ³ööËîºMxÍ'w¦@FT?È^
?Q ³åK=k~5Û¿ä7ñ]ýÕñoE<¿Á9ç¾.;îÒ[ð®¸"wý'´ù·gÎm?ßø>>æës¦@FT?È^
?T~M¤ÿ-3?2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨??2¢@FT?È^
?Q #*?dD¤¼¨?ù »g'~_ϼ????IEND®B`,

signaler à un administrateur
Commentaire de pgu83 le 26/02/2008 10:07:13

Bonjour,
Le script ean13.php fonctionne sur mon serveur de dev mais pas en prod.
Sur les 2 gd est activé. Normalement les 2 serveurs sont configurés pareil, mais manifestement ce n'est pas le cas. En dehors de la gd y at-il autre chose à activer côté serveur (systeme Linux).