[PHP] classe code barre
Résolu/Fermé
Tantor8
Messages postés
46
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
-
16 juin 2008 à 09:54
titou38 - 4 juin 2014 à 15:32
titou38 - 4 juin 2014 à 15:32
A voir également:
- [PHP] classe code barre
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Windows 11 barre des taches a gauche - Guide
3 réponses
Tantor8
Messages postés
46
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
2
16 juin 2008 à 11:01
16 juin 2008 à 11:01
Re,
J'ai un peu modifier mon code. Pur créer l'image j'utilise cette fois:
imagecreatefrompng créer l'image a partir d'une source, soit le fichier contenant la classe. Puis imagepng l'enregistre dans un repertoire.
Mais j'ai les même problème qu'avant:
Warning: imagecreatefrompng(pi_barcode.php?type=EAN&code=124578569854&height=12): failed to open stream: Invalid argument in c:\program files\easyphp1-8\www\toutpack\format_pdf.php on line 171
Warning: imagepng(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\toutpack\format_pdf.php on line 172
Warning: fopen(./CodeBarre/.png): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\toutpack\classfpdf\fpdf.php on line 1522
FPDF error: Can't open image file: ./CodeBarre/.png
Merci de votre aide
J'ai un peu modifier mon code. Pur créer l'image j'utilise cette fois:
$im = imagecreatefrompng("pi_barcode.php?type=EAN&code=124578569854&height=$hcode&readable=Y"); imagepng($im,$file);
imagecreatefrompng créer l'image a partir d'une source, soit le fichier contenant la classe. Puis imagepng l'enregistre dans un repertoire.
Mais j'ai les même problème qu'avant:
Warning: imagecreatefrompng(pi_barcode.php?type=EAN&code=124578569854&height=12): failed to open stream: Invalid argument in c:\program files\easyphp1-8\www\toutpack\format_pdf.php on line 171
Warning: imagepng(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\toutpack\format_pdf.php on line 172
Warning: fopen(./CodeBarre/.png): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\toutpack\classfpdf\fpdf.php on line 1522
FPDF error: Can't open image file: ./CodeBarre/.png
Merci de votre aide
Tantor8
Messages postés
46
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
2
18 juin 2008 à 12:20
18 juin 2008 à 12:20
Bonjour,
désormais j'arrive à enregistrer mon code barre dans un fichier .png temporaire. Pour cela j'ai un peu suivi ce topic:
https://www.developpez.net/forums/d546949/php/bibliotheques-frameworks/fpdf-fpdf-generateur-code-barres/#post3255401
Il faut reprendre ce qui ce strouve en dessous de la classe dans pi_barcode, et l'incorporer à une méthode du pdf dans le fichier php qui creer le pdf:
Puis je l'appelle au moment ou je désire le mettre dans le pdf:
De plus il à donc fallu modifie la méthode makeImage dans la classe pi_barcode comme suit:
Je met le header en commentaire car il pause problème autrement et l'image étant tout de même générer je le trouve alors inutile.
Le problème maintenant est le fait que je n'ai rien qui apparait dans le pdf généré. Puis depuis peu il me fait en plus l'erreur suivante:
Notice: Undefined property: HR in c:\program files\easyphp1-8\www\toutpack\pi_barcode.php on line 469
je ne comprend pas pourquoi elle n'est pas définie alors que cela marchait auparavant.
Sur ce si quelqu'un a une solution à mon problème merci de m'aider, autrement j'espère que cela servira à d'autres dans le même cas que moi.
désormais j'arrive à enregistrer mon code barre dans un fichier .png temporaire. Pour cela j'ai un peu suivi ce topic:
https://www.developpez.net/forums/d546949/php/bibliotheques-frameworks/fpdf-fpdf-generateur-code-barres/#post3255401
Il faut reprendre ce qui ce strouve en dessous de la classe dans pi_barcode, et l'incorporer à une méthode du pdf dans le fichier php qui creer le pdf:
<?php include('pdf.php'); class PDF extends FPDF{ ... //génère le code barre function genCode($type, $code, $height, $readable, $width, $showtype){ include('pi_barcode.php'); $type = strtoupper($type); switch( $type ) { case "C128C" : if (preg_match("/^[0-9]{2,48}$/", $code)){ $tmp = strlen("$code"); if(($tmp%2)!=0) $code = "0$code"; } else { $type = "ERR"; $code = "CODE 128C REQUIRES DIGITS ONLY"; } case "C128" : $carok = true; for($i=0;$i<strlen($code);$i++) { $tmp = ord(substr($code,$i,1)) ; if($tmp < 32 OR $tmp > 126) $carok = false; } if( !$carok ) { $type = "ERR"; $code = "UNAUTHORIZED CHARS IN 128 CODE"; } break; case "UPC" : $code = "0$code"; case "EAN" : $long = strlen( $code ) ; $factor = 3; $sum = 0; if (preg_match("/^[0-9]{8}$/", $code) OR preg_match("/^[0-9]{13}$/", $code)){ // if ($long==13){ for ($index = ($long - 1); $index > 0; $index--) { $sum += substr( $code, $index - 1, 1 ) * $factor ; $factor = 4 - $factor ; } $cc = ( ( 1000 - $sum ) % 10 ) ; if ( substr( $code, -1, 1) != $cc ) { $type = "ERR"; $code = "CHECKSUM ERROR IN EAN/UPC CODE"; } } elseif (preg_match("/^[0-9]{7}$/", $code) OR preg_match("/^[0-9]{12}$/", $code)){ // } elseif ($long==12){ for ($index = ($long ); $index > 0; $index--) { $sum += substr( $code, $index - 1, 1 ) * $factor ; $factor = 4 - $factor ; } $cc = ( ( 1000 - $sum ) % 10 ) ; $code .= "$cc" ; } else { $type = "ERR"; $code = "THIS CODE IS NOT EAN/UPC TYPE"; } break; case "C25I" : $tmp = strlen("$code"); if(($tmp%2)==0) { $code = "0$code"; $tmp++; } case "C25" : if (preg_match("/^[0-9]{1,48}$/", $code)){ $checksum = 0; $factor = 3; $tmp = strlen("$code"); for($i=$tmp-1; $i>=0; $i--) { $checksum += (intval(substr($code,$i,1))*$factor); $factor = 4-$factor; } $checksum = 10-($checksum%10); if($checksum==10) $checksum = 0; $code .= "$checksum"; } else { $type = "ERR"; $code = "CODE C25 REQUIRES DIGITS ONLY"; } break; case "C39" : if(preg_match("/^[0-9A-Z\-\.\$\/+% ]{1,48}$/i", $code)) { $code = "*$code*"; } else { $type = "ERR"; $code = "UNAUTHORIZED CHARS IN CODE 39"; } break; case "CODABAR" : if(!preg_match("/^(A|B|C|D)[0-9\-\$:\/\.\+]{1,48}(A|B|C|D)$/i", $code)) { $type = "ERR"; $code = "CODABAR START/STOP : ABCD"; } break; case "MSI" : if (preg_match("/^[0-9]{1,48}$/", $code)){ $checksum = 0; $factor = 1; $tmp = strlen("$code"); for($i=0; $i<$tmp; $i++) { $checksum += (intval(substr($code,$i,1))*$factor); $factor++; if($factor > 10) $factor = 1; } $checksum = (1000-$checksum)%10; $code .= "$checksum"; } else { $type = "ERR"; $code = "CODE MSI REQUIRES DIGITS ONLY"; } break; case "C11" : if (preg_match("/^[0-9\-]{1,48}$/", $code)){ $checksum = 0; $factor = 1; $tmp = strlen("$code"); for($i=$tmp-1; $i>=0; $i--) { $tmp = substr($code,$i,1); if($tmp == "-") $tmp=10; else $tmp = intval($tmp); $checksum += ($tmp*$factor); $factor++; if($factor>10) $factor=1; } $checksum = $checksum%11; if($checksum==10) $code .= $checksum . "-"; else $code .= "$checksum"; } else { $type = "ERR"; $code = "UNAUTHORIZED CHARS IN CODE 11"; } break; case "POSTNET" : if (preg_match("/^[0-9]{5}$/", $code) OR preg_match("/^[0-9]{9}$/", $code) OR preg_match("/^[0-9]{11}$/", $code)){ $checksum = 0; $tmp = strlen("$code"); for($i=$tmp-1; $i>=0; $i--) { $checksum += intval(substr($code,$i,1)); } $checksum = 10-($checksum%10); if($checksum==10) $checksum=0; $code .= "$checksum"; } else { $type = "ERR"; $code = "POSTNET MUST BE 5/9/11 DIGITS"; } break; case "KIX" : if (preg_match("/^[A-Z0-9]{1,50}$/", $code)){ // ***** LE CODE KIX n'a pas de checksum (correction V2.02) // $checksum = 0; // $tmp = strlen("$code"); // for($i=$tmp-1; $i>=0; $i--) { // $checksum += intval(substr($code,$i,1)); // } // $checksum = 10-($checksum%10); // if($checksum==10) $checksum=0; // $code .= "$checksum"; } else { $type = "ERR"; $code = "UNAUTHORIZED CHARS IN KIX CODE"; } break; case "CMC7" : if(!preg_match("/^[0-9A-E]{1,48}$/", $code)) { $type = "ERR"; $code = "CMC7 MUST BE NUMERIC or ABCDE"; } break; default : $type = "ERR"; $code = "UNKWOWN BARCODE TYPE"; break; } // ***** Largeur par défaut if( isset( $width ) && ( $width >= 10 ) ) { $hw = $width ; } else { $hw = 10 ; } // ***** Hauteur par défaut if( isset( $height ) && ( $height > 0 ) ) { $hh = $height ; } else { $hh = 10 ; } // ***** Autres valeurs par défaut if( isset( $readable ) && ( $readable == "Y" ) ) { $hr = "Y" ; } else{ $hr = "N" ; } if( !isset( $showtype ) ) { $showtype = "N" ; } // ***** Création de l'objet $objCode = new pi_barcode( $type, $code, $hh, $hr, $hw, $showtype ) ; $objCode -> makeImage() ; } } ?>
Puis je l'appelle au moment ou je désire le mettre dans le pdf:
/*choix d'afficher ou non les chiffres*/ if(isset($_POST['chiffre'])){ $pdf->genCode('EAN',$codebarre12, $hcode, 'Y', '', ''); }else{ $pdf->genCode('EAN',$codebarre12, $hcode, '', '', ''); } /*on insère l'image dans le pdf*/ $file="codebarre.png"; $x=$pdf->setX(30); $y=$pdf->getY(); $pdf->SetFillColor(255,187,255); $pdf->Cell(100,$hcode+10,"codebarre",1,0,'C',$pdf->Image($file,$x,$y,0,$hcode,'PNG'));
De plus il à donc fallu modifie la méthode makeImage dans la classe pi_barcode comme suit:
//Header( "Content-type: image/png"); /*il affiche l'image imagepng($img);*/ //il enregistre l'image imagepng($img,"codebarre.png"); //il la détruit imagedestroy($img); }//fin méthode makeImage()
Je met le header en commentaire car il pause problème autrement et l'image étant tout de même générer je le trouve alors inutile.
Le problème maintenant est le fait que je n'ai rien qui apparait dans le pdf généré. Puis depuis peu il me fait en plus l'erreur suivante:
Notice: Undefined property: HR in c:\program files\easyphp1-8\www\toutpack\pi_barcode.php on line 469
je ne comprend pas pourquoi elle n'est pas définie alors que cela marchait auparavant.
Sur ce si quelqu'un a une solution à mon problème merci de m'aider, autrement j'espère que cela servira à d'autres dans le même cas que moi.
Tantor8
Messages postés
46
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
2
23 juin 2008 à 10:38
23 juin 2008 à 10:38
Je commence et termine alors se topic! lol
Donc pour l'erreur HR j'ai mi les paramètre readable à Y, comme cela il affiche toujours le code barre (les chiffres + les lignes).
Pour ce qui est de l'image, j'ai ajouter un paramètre dans makeImage avec le nom du fichier de detination. Comme cela chaque code à un fichier. Or auparavant c'était un fichier commun que je pensait pouvoir utiliser directement en l'insérant dans le pdf. Le problème c'est que le pdf semble être généré à la fin de l'execution de la page lorsqu'on fait le output. Du coup à ce moment la il n'avait plus que la dernière image.
a+
Donc pour l'erreur HR j'ai mi les paramètre readable à Y, comme cela il affiche toujours le code barre (les chiffres + les lignes).
Pour ce qui est de l'image, j'ai ajouter un paramètre dans makeImage avec le nom du fichier de detination. Comme cela chaque code à un fichier. Or auparavant c'était un fichier commun que je pensait pouvoir utiliser directement en l'insérant dans le pdf. Le problème c'est que le pdf semble être généré à la fin de l'execution de la page lorsqu'on fait le output. Du coup à ce moment la il n'avait plus que la dernière image.
a+