public static function render($barcode) { $width = $barcode->width ? $barcode->width : 0.4; $height = $barcode->height ? $barcode->height : 20; xml2pdf_barcode_code39::Code39($barcode->x, $barcode->y, $barcode->barcode, true, false, $width, $height, true, $barcode->pdf); }
/** * * @param float $x * @param float $y * @param string $code * @param boolean $ext * @param boolean $cks * @param float $w * @param float $h * @param boolean $wide * @param object $pdf * @return void */ public static function Code39($x, $y, $code, $ext = true, $cks = false, $w = 0.4, $h = 20, $wide = true, $pdf) { if ($code == '') { return; } //suppression des accents $code = strtr($code, 'àâäéèêëìîïòôöùûü', 'aaaeeeeiiiooouuu'); //affichage du code $pdf->SetFont('Arial', '', 10); $pdf->Text($x, $y + $h + 4, $code); if ($ext) { //encodage étendu $code = xml2pdf_barcode_code39::encode_code39_ext($code); } else { //passage en majuscules $code = strtoupper($code); //contrôle validité if (!preg_match('|^[0-9A-Z. $/+%-]*$|', $code)) { $pdf->Error('Invalid barcode value: ' . $code); } } //calcul du checksum if ($cks) { $code .= xml2pdf_barcode_code39::checksum_code39($code); } //ajout des caractères début / fin $code = '*' . $code . '*'; //tableaux de correspondance caractères / barres $narrow_encoding = array('0' => '101001101101', '1' => '110100101011', '2' => '101100101011', '3' => '110110010101', '4' => '101001101011', '5' => '110100110101', '6' => '101100110101', '7' => '101001011011', '8' => '110100101101', '9' => '101100101101', 'A' => '110101001011', 'B' => '101101001011', 'C' => '110110100101', 'D' => '101011001011', 'E' => '110101100101', 'F' => '101101100101', 'G' => '101010011011', 'H' => '110101001101', 'I' => '101101001101', 'J' => '101011001101', 'K' => '110101010011', 'L' => '101101010011', 'M' => '110110101001', 'N' => '101011010011', 'O' => '110101101001', 'P' => '101101101001', 'Q' => '101010110011', 'R' => '110101011001', 'S' => '101101011001', 'T' => '101011011001', 'U' => '110010101011', 'V' => '100110101011', 'W' => '110011010101', 'X' => '100101101011', 'Y' => '110010110101', 'Z' => '100110110101', '-' => '100101011011', '.' => '110010101101', ' ' => '100110101101', '*' => '100101101101', '$' => '100100100101', '/' => '100100101001', '+' => '100101001001', '%' => '101001001001'); $wide_encoding = array('0' => '101000111011101', '1' => '111010001010111', '2' => '101110001010111', '3' => '111011100010101', '4' => '101000111010111', '5' => '111010001110101', '6' => '101110001110101', '7' => '101000101110111', '8' => '111010001011101', '9' => '101110001011101', 'A' => '111010100010111', 'B' => '101110100010111', 'C' => '111011101000101', 'D' => '101011100010111', 'E' => '111010111000101', 'F' => '101110111000101', 'G' => '101010001110111', 'H' => '111010100011101', 'I' => '101110100011101', 'J' => '101011100011101', 'K' => '111010101000111', 'L' => '101110101000111', 'M' => '111011101010001', 'N' => '101011101000111', 'O' => '111010111010001', 'P' => '101110111010001', 'Q' => '101010111000111', 'R' => '111010101110001', 'S' => '101110101110001', 'T' => '101011101110001', 'U' => '111000101010111', 'V' => '100011101010111', 'W' => '111000111010101', 'X' => '100010111010111', 'Y' => '111000101110101', 'Z' => '100011101110101', '-' => '100010101110111', '.' => '111000101011101', ' ' => '100011101011101', '*' => '100010111011101', '$' => '100010001000101', '/' => '100010001010001', '+' => '100010100010001', '%' => '101000100010001'); //le code barre est déterminé en version large ou étroite (meilleure lisibilité) //large observe un rapport 3:1 pour le rapport barre large / barre etroite //etroit 2:1 $encoding = $wide ? $wide_encoding : $narrow_encoding; //espace inter-caractère $gap = $w > 0.29 ? '00' : '0'; //encodage $encode = ''; for ($i = 0; $i < strlen($code); $i++) { $encode .= $encoding[$code[$i]] . $gap; } //dessin xml2pdf_barcode_code39::draw_code39($encode, $x, $y, $w, $h, $pdf); }