From e411599ab65851c2e81cf035a2996eb44a066cb6 Mon Sep 17 00:00:00 2001 From: tomit Date: Tue, 10 Oct 2017 14:33:00 +0300 Subject: [PATCH] Uusi ean128 laajennus --- tilauskasittely/osoitelappu_intrade_pdf.inc | 6 +- viivakoodi/Barcode/ean128.php | 357 ++++++++++++++++++++ 2 files changed, 360 insertions(+), 3 deletions(-) create mode 100644 viivakoodi/Barcode/ean128.php diff --git a/tilauskasittely/osoitelappu_intrade_pdf.inc b/tilauskasittely/osoitelappu_intrade_pdf.inc index 2bc0093ddf..5d965d7d87 100755 --- a/tilauskasittely/osoitelappu_intrade_pdf.inc +++ b/tilauskasittely/osoitelappu_intrade_pdf.inc @@ -229,8 +229,8 @@ else { system("rm -f $nimi"); $nimi = "/tmp/".md5(uniqid(rand(), true)).".jpg"; - - imagejpeg(Image_Barcode::draw($sscc, 'code128', 'jpg', false, 3, 170), $nimi); + //$sscc = chr(234).$sscc; + imagejpeg(Image_Barcode::draw($sscc, 'ean128', 'jpg', false, 3, 170), $nimi); $fh = fopen($nimi, "r"); $data = fread($fh, filesize($nimi)); @@ -239,7 +239,7 @@ else { $image = $pdf->jfif_embed($data); $logoparam['scale'] = 102/282; - $pdf->image_place($image, mm_pt(40), mm_pt(24), $firstpage, $logoparam); + $pdf->image_place($image, mm_pt(40), mm_pt(22), $firstpage, $logoparam); system("rm -f $nimi"); } diff --git a/viivakoodi/Barcode/ean128.php b/viivakoodi/Barcode/ean128.php new file mode 100644 index 0000000000..4d87b2821e --- /dev/null +++ b/viivakoodi/Barcode/ean128.php @@ -0,0 +1,357 @@ + + * @copyright 2005 The PHP Group + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version CVS: $Id: code128.php,v 1.3 2006/12/13 19:29:30 cweiske Exp $ + * @link http://pear.php.net/package/Image_Barcode + */ + + +require_once "viivakoodi/Barcode.php"; + +class Image_Barcode_ean128 extends Image_Barcode +{ + var $_type = 'ean128'; + var $_font = 1; + var $code; + + + /** + * Draws a Code128 image barcode + * + * @param string $text A text that should be in the image barcode + * @param string $imgtype The image type that will be generated + * + * @return image The corresponding interleaved 2 of 5 image barcode + * + * @access public + * + * @author Jeffrey K. Brown + * + * @internal + * The draw() method is broken into three sections. First, we take + * the input string and convert it to a string of barcode widths. + * Then, we size and allocate the image. Finally, we print the bars to + * the image along with the barcode text and display it to the beholder. + * + */ + function &draw($text, $imgtype = 'png', $barwidth, $barcodeheight, $noText) { + + // We start with the Code128 Start Code character. We + // initialize checksum to 104, rather than calculate it. + // We then add the startcode to $allbars, the main string + // containing the bar sizes for the entire code. + $startcode= $this->getStartCode(); + $checksum = 104; + $allbars = $startcode; + + $fnc1 = $this->getFncCode(); + $checksum += 102; + $allbars = $allbars . $fnc1; + + + // Next, we read the $text string that was passed to the + // method and for each character, we determine the bar + // pattern and add it to the end of the $allbars string. + // In addition, we continually add the character's value + // to the checksum + $bars = ''; + for ($i=0; $i < strlen($text); ++$i) { + $char = $text[$i]; + $val = $this->getCharNumber($char); + + $checksum += ($val * ($i + 2)); + + $bars = $this->getCharCode($char); + $allbars = $allbars . $bars; + } + + + // Then, Take the Mod 103 of the total to get the index + // of the Code128 Check Character. We get its bar + // pattern and add it to $allbars in the next section. + $checkdigit = $checksum % 103; + $bars = $this->getNumCode($checkdigit); + + + // Finally, we get the Stop Code pattern and put the + // remaining pieces together. We are left with the + // string $allbars containing all of the bar widths + // and can now think about writing it to the image. + + $stopcode = $this->getStopCode(); + $allbars = $allbars . $bars . $stopcode; + + //------------------------------------------------------// + // Next, we will calculate the width of the resulting + // bar code and size the image accordingly. + + // 10 Pixel "Quiet Zone" in front, and 10 Pixel + // "Quiet Zone" at the end. + $barcodewidth = 20; + + + // We will read each of the characters (1,2,3,or 4) in + // the $allbars string and add its width to the running + // total $barcodewidth. The height of the barcode is + // calculated by taking the bar height plus the font height. + + for ($i=0; $i < strlen($allbars); ++$i) { + $nval = $allbars[$i]; + $barcodewidth += ($nval * $barwidth); + } + $barcodelongheight = $barcodeheight; + + + // Then, we create the image, allocate the colors, and fill + // the image with a nice, white background, ready for printing + // our black bars and the text. + + $img = imagecreate($barcodewidth, $barcodelongheight); + $black = imagecolorallocate($img, 0, 0, 0); + $white = imagecolorallocate($img, 255, 255, 255); + imagefill($img, 0, 0, $white); + + + //------------------------------------------------------// + // Finally, we write our text line centered across the + // bottom and the bar patterns and display the image. + + + // First, print the image, centered across the bottom. + /* + imagestring( + $img, + $this->_font, + $barcodewidth / 2 - strlen($text) / 2 * (imagefontwidth($this->_font)), + $barcodeheight + imagefontheight($this->_font) / 2, + $text, + $black + ); + */ + + // We set $xpos to 10 so we start bar printing after + // position 10 to simulate the 10 pixel "Quiet Zone" + $xpos = 10; + + // We will now process each of the characters in the $allbars + // array. The number in each position is read and then alternating + // black bars and spaces are drawn with the corresponding width. + $bar = 1; + for ($i=0; $i < strlen($allbars); ++$i) { + $nval = $allbars[$i]; + $width = $nval * $barwidth; + + if ($bar==1) { + imagefilledrectangle($img, $xpos, 0, $xpos + $width-1, $barcodelongheight, $black); + $xpos += $width; + $bar = 0; + } else { + $xpos += $width; + $bar = 1; + } + } + + return $img; + } // function draw() + + + /** + * + * @internal + * In the Image_Barcode_code128 constructor, we initialize + * the $code array, containing the bar and space pattern + * for the Code128 B character set. + */ + function Image_Barcode_ean128() { + $this->code[0] = "212222"; // " " + $this->code[1] = "222122"; // "!" + $this->code[2] = "222221"; // "{QUOTE}" + $this->code[3] = "121223"; // "#" + $this->code[4] = "121322"; // "$" + $this->code[5] = "131222"; // "%" + $this->code[6] = "122213"; // "&" + $this->code[7] = "122312"; // "'" + $this->code[8] = "132212"; // "(" + $this->code[9] = "221213"; // ")" + $this->code[10] = "221312"; // "*" + $this->code[11] = "231212"; // "+" + $this->code[12] = "112232"; // "," + $this->code[13] = "122132"; // "-" + $this->code[14] = "122231"; // "." + $this->code[15] = "113222"; // "/" + $this->code[16] = "123122"; // "0" + $this->code[17] = "123221"; // "1" + $this->code[18] = "223211"; // "2" + $this->code[19] = "221132"; // "3" + $this->code[20] = "221231"; // "4" + $this->code[21] = "213212"; // "5" + $this->code[22] = "223112"; // "6" + $this->code[23] = "312131"; // "7" + $this->code[24] = "311222"; // "8" + $this->code[25] = "321122"; // "9" + $this->code[26] = "321221"; // ":" + $this->code[27] = "312212"; // ";" + $this->code[28] = "322112"; // "<" + $this->code[29] = "322211"; // "=" + $this->code[30] = "212123"; // ">" + $this->code[31] = "212321"; // "?" + $this->code[32] = "232121"; // "@" + $this->code[33] = "111323"; // "A" + $this->code[34] = "131123"; // "B" + $this->code[35] = "131321"; // "C" + $this->code[36] = "112313"; // "D" + $this->code[37] = "132113"; // "E" + $this->code[38] = "132311"; // "F" + $this->code[39] = "211313"; // "G" + $this->code[40] = "231113"; // "H" + $this->code[41] = "231311"; // "I" + $this->code[42] = "112133"; // "J" + $this->code[43] = "112331"; // "K" + $this->code[44] = "132131"; // "L" + $this->code[45] = "113123"; // "M" + $this->code[46] = "113321"; // "N" + $this->code[47] = "133121"; // "O" + $this->code[48] = "313121"; // "P" + $this->code[49] = "211331"; // "Q" + $this->code[50] = "231131"; // "R" + $this->code[51] = "213113"; // "S" + $this->code[52] = "213311"; // "T" + $this->code[53] = "213131"; // "U" + $this->code[54] = "311123"; // "V" + $this->code[55] = "311321"; // "W" + $this->code[56] = "331121"; // "X" + $this->code[57] = "312113"; // "Y" + $this->code[58] = "312311"; // "Z" + $this->code[59] = "332111"; // "[" + $this->code[60] = "314111"; // "\" + $this->code[61] = "221411"; // "]" + $this->code[62] = "431111"; // "^" + $this->code[63] = "111224"; // "_" + $this->code[64] = "111422"; // "`" + $this->code[65] = "121124"; // "a" + $this->code[66] = "121421"; // "b" + $this->code[67] = "141122"; // "c" + $this->code[68] = "141221"; // "d" + $this->code[69] = "112214"; // "e" + $this->code[70] = "112412"; // "f" + $this->code[71] = "122114"; // "g" + $this->code[72] = "122411"; // "h" + $this->code[73] = "142112"; // "i" + $this->code[74] = "142211"; // "j" + $this->code[75] = "241211"; // "k" + $this->code[76] = "221114"; // "l" + $this->code[77] = "413111"; // "m" + $this->code[78] = "241112"; // "n" + $this->code[79] = "134111"; // "o" + $this->code[80] = "111242"; // "p" + $this->code[81] = "121142"; // "q" + $this->code[82] = "121241"; // "r" + $this->code[83] = "114212"; // "s" + $this->code[84] = "124112"; // "t" + $this->code[85] = "124211"; // "u" + $this->code[86] = "411212"; // "v" + $this->code[87] = "421112"; // "w" + $this->code[88] = "421211"; // "x" + $this->code[89] = "212141"; // "y" + $this->code[90] = "214121"; // "z" + $this->code[91] = "412121"; // "{" + $this->code[92] = "111143"; // "|" + $this->code[93] = "111341"; // "}" + $this->code[94] = "131141"; // "~" + $this->code[95] = "114113"; // 95 + $this->code[96] = "114311"; // 96 + $this->code[97] = "411113"; // 97 + $this->code[98] = "411311"; // 98 + $this->code[99] = "113141"; // 99 + $this->code[100] = "114131"; // 100 + $this->code[101] = "311141"; // 101 + $this->code[102] = "411131"; // 102 + } + + + /** + * Return the Code128 code for a character + */ + function getCharCode($c) { + $retval = $this->code[ord($c) - 32]; + return $retval; + } + + + /** + * Return the Start Code for Code128 + */ + function getStartCode() { + return '211214'; + } + + /** + * Return the FNC1 code for GS1 128 + */ + function getFncCode() { + return '411131'; + } + + /** + * Return the Stop Code for Code128 + */ + function getStopCode() { + return '2331112'; + } + + + /** + * Return the Code128 code equivalent of a character number + */ + function getNumCode($index) { + $retval = $this->code[$index]; + return $retval; + } + + + /** + * Return the Code128 numerical equivalent of a character. + */ + function getCharNumber($c) { + $retval = ord($c) - 32; + return $retval; + } + +} // class