Bonjour,
désormais j'arrive à enregistrer mon code barre dans un fichier .png temporaire. Pour cela j'ai un peu suivi ce topic:
http://www.developpez.net/forums/showthread.php?p=3255401
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.