Skip to content

Commit

Permalink
Uusi ean128 laajennus
Browse files Browse the repository at this point in the history
  • Loading branch information
tomit committed Oct 10, 2017
1 parent bd75aac commit e411599
Show file tree
Hide file tree
Showing 2 changed files with 360 additions and 3 deletions.
6 changes: 3 additions & 3 deletions tilauskasittely/osoitelappu_intrade_pdf.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -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");
}

Expand Down
357 changes: 357 additions & 0 deletions viivakoodi/Barcode/ean128.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,357 @@
<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */

/**
* Image_Barcode_code128 class
*
* Renders Code128 barcodes
* Code128 is a high density encoding for alphanumeric strings.
* This module prints the Code128B representation of the most common
* ASCII characters (32 to 134).
*
* These are the components of a Code128 Bar code:
* - 10 Unit Quiet Zone
* - 6 Unit Start Character
* - (n * 6) Unit Message
* - 6 Unit "Check Digit" Character
* - 7 Unit Stop Character
* - 10 Unit Quiet Zone
*
* I originally wrote this algorithm in Visual Basic 6 for a Rapid
* Software Development class, where we printed Code128 B bar codes
* to read using Cue Cat bar code readers. I rewrote the algorithm
* using PHP for inclusion in the PEAR Image_Barcode project.
*
* The Code128B bar codes produced by the algorithm have been validated
* using my trusty Cue-Cat bar code reader.
*
* PHP versions 4
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to [email protected] so we can mail you a copy immediately.
*
* @category Image
* @package Image_Barcode
* @author Jeffrey K. Brown <[email protected]>
* @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 <[email protected]>
*
* @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

0 comments on commit e411599

Please sign in to comment.