mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-24 16:28:40 -04:00
Centred barcode image
Moved $data to base class and added getData Fixed indentation
This commit is contained in:
@@ -9,43 +9,43 @@ require APPPATH.'/views/barcodes/Ean8.php';
|
||||
|
||||
class Barcode_lib
|
||||
{
|
||||
var $CI;
|
||||
var $supported_barcodes = array(1 => 'Code 39', 2 => 'Code 128', 3 => 'EAN 8', 4 => 'EAN 13');
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->CI =& get_instance();
|
||||
}
|
||||
|
||||
function get_list_barcodes()
|
||||
{
|
||||
return $this->supported_barcodes;
|
||||
}
|
||||
|
||||
function get_barcode_config()
|
||||
{
|
||||
$data['barcode_type'] = $this->CI->Appconfig->get('barcode_type');
|
||||
$data['barcode_font'] = $this->CI->Appconfig->get('barcode_font');
|
||||
$data['barcode_font_size'] = $this->CI->Appconfig->get('barcode_font_size');
|
||||
$data['barcode_height'] = $this->CI->Appconfig->get('barcode_height');
|
||||
$data['barcode_width'] = $this->CI->Appconfig->get('barcode_width');
|
||||
$data['barcode_quality'] = $this->CI->Appconfig->get('barcode_quality');
|
||||
$data['barcode_first_row'] = $this->CI->Appconfig->get('barcode_first_row');
|
||||
$data['barcode_second_row'] = $this->CI->Appconfig->get('barcode_second_row');
|
||||
$data['barcode_third_row'] = $this->CI->Appconfig->get('barcode_third_row');
|
||||
$data['barcode_num_in_row'] = $this->CI->Appconfig->get('barcode_num_in_row');
|
||||
$data['barcode_page_width'] = $this->CI->Appconfig->get('barcode_page_width');
|
||||
$data['barcode_page_cellspacing'] = $this->CI->Appconfig->get('barcode_page_cellspacing');
|
||||
private $CI = null;
|
||||
private $supported_barcodes = array(1 => 'Code 39', 2 => 'Code 128', 3 => 'EAN 8', 4 => 'EAN 13');
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->CI =& get_instance();
|
||||
}
|
||||
|
||||
public function get_list_barcodes()
|
||||
{
|
||||
return $this->supported_barcodes;
|
||||
}
|
||||
|
||||
public function get_barcode_config()
|
||||
{
|
||||
$data['barcode_type'] = $this->CI->Appconfig->get('barcode_type');
|
||||
$data['barcode_font'] = $this->CI->Appconfig->get('barcode_font');
|
||||
$data['barcode_font_size'] = $this->CI->Appconfig->get('barcode_font_size');
|
||||
$data['barcode_height'] = $this->CI->Appconfig->get('barcode_height');
|
||||
$data['barcode_width'] = $this->CI->Appconfig->get('barcode_width');
|
||||
$data['barcode_quality'] = $this->CI->Appconfig->get('barcode_quality');
|
||||
$data['barcode_first_row'] = $this->CI->Appconfig->get('barcode_first_row');
|
||||
$data['barcode_second_row'] = $this->CI->Appconfig->get('barcode_second_row');
|
||||
$data['barcode_third_row'] = $this->CI->Appconfig->get('barcode_third_row');
|
||||
$data['barcode_num_in_row'] = $this->CI->Appconfig->get('barcode_num_in_row');
|
||||
$data['barcode_page_width'] = $this->CI->Appconfig->get('barcode_page_width');
|
||||
$data['barcode_page_cellspacing'] = $this->CI->Appconfig->get('barcode_page_cellspacing');
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function generate_barcode($barcode_content, $barcode_config)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch($barcode_config['barcode_type'])
|
||||
{
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function generate_barcode($barcode_content, $barcode_config)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch($barcode_config['barcode_type'])
|
||||
{
|
||||
case '1':
|
||||
$barcode = new emberlabs\Barcode\Code39();
|
||||
break;
|
||||
@@ -62,87 +62,92 @@ class Barcode_lib
|
||||
default:
|
||||
$barcode = new emberlabs\Barcode\Ean13();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$barcode->setData($barcode_content);
|
||||
$barcode->setQuality($barcode_config['barcode_quality']);
|
||||
$barcode->setDimensions($barcode_config['barcode_width'], $barcode_config['barcode_height']);
|
||||
$barcode->draw();
|
||||
$barcode->setData($barcode_content);
|
||||
$barcode->setQuality($barcode_config['barcode_quality']);
|
||||
$barcode->setDimensions($barcode_config['barcode_width'], $barcode_config['barcode_height']);
|
||||
$barcode->draw();
|
||||
|
||||
return $barcode->base64();
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
}
|
||||
|
||||
function create_display_barcode($item, $barcode_config)
|
||||
{
|
||||
|
||||
$display_table = "<table>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$barcode_content = $this->CI->Appconfig->get('barcode_content') === "id" ? $item['item_id'] : $item['item_number'];
|
||||
$barcode = $this->generate_barcode($barcode_content,$barcode_config);
|
||||
$display_table .= "<tr><td align='center'><img src='data:image/png;base64,$barcode' /></td></tr>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_second_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_third_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$display_table .= "</table>";
|
||||
return $barcode->base64();
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
}
|
||||
|
||||
public function create_display_barcode($item, $barcode_config)
|
||||
{
|
||||
$display_table = "<table>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$barcode_content = $this->CI->Appconfig->get('barcode_content') === "id" ? $item['item_id'] : $item['item_number'];
|
||||
$barcode = $this->generate_barcode($barcode_content, $barcode_config);
|
||||
$display_table .= "<tr><td align='center'><img src='data:image/png;base64,$barcode' /></td></tr>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_second_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$display_table .= "<tr><td align='center'>" . $this->manage_display_layout($barcode_config['barcode_third_row'], $item, $barcode_config) . "</td></tr>";
|
||||
$display_table .= "</table>";
|
||||
|
||||
return $display_table;
|
||||
}
|
||||
|
||||
private function manage_display_layout($layout_type, $item, $barcode_config)
|
||||
{
|
||||
$result = '';
|
||||
|
||||
if($layout_type == 'name')
|
||||
{
|
||||
$result = $this->CI->lang->line('items_name') . " " . $item['name'];
|
||||
}
|
||||
else if($layout_type == 'category' && isset($item['category']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_category') . " " . $item['category'];
|
||||
}
|
||||
else if($layout_type == 'cost_price' && isset($item['cost_price']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_cost_price') . " " . to_currency($item['cost_price']);
|
||||
}
|
||||
else if($layout_type == 'unit_price' && isset($item['unit_price']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_unit_price') . " " . to_currency($item['unit_price']);
|
||||
}
|
||||
else if($layout_type == 'company_name')
|
||||
{
|
||||
$result = $this->CI->Appconfig->get('company');
|
||||
}
|
||||
else if($layout_type == 'item_code')
|
||||
{
|
||||
$result = $this->CI->Appconfig->get('barcode_content') !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id'];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function listfonts($folder)
|
||||
{
|
||||
$array = array();
|
||||
if (($handle = opendir($folder)) !== false) {
|
||||
while (($file = readdir($handle)) !== false) {
|
||||
if(substr($file, -4, 4) === '.ttf') {
|
||||
$array[$file] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
|
||||
array_unshift($array, 'No Label');
|
||||
|
||||
return $array;
|
||||
}
|
||||
return $display_table;
|
||||
}
|
||||
|
||||
private function manage_display_layout($layout_type, $item, $barcode_config)
|
||||
{
|
||||
$result = '';
|
||||
|
||||
if($layout_type == 'name')
|
||||
{
|
||||
$result = $this->CI->lang->line('items_name') . " " . $item['name'];
|
||||
}
|
||||
else if($layout_type == 'category' && isset($item['category']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_category') . " " . $item['category'];
|
||||
}
|
||||
else if($layout_type == 'cost_price' && isset($item['cost_price']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_cost_price') . " " . to_currency($item['cost_price']);
|
||||
}
|
||||
else if($layout_type == 'unit_price' && isset($item['unit_price']))
|
||||
{
|
||||
$result = $this->CI->lang->line('items_unit_price') . " " . to_currency($item['unit_price']);
|
||||
}
|
||||
else if($layout_type == 'company_name')
|
||||
{
|
||||
$result = $this->CI->Appconfig->get('company');
|
||||
}
|
||||
else if($layout_type == 'item_code')
|
||||
{
|
||||
$result = $this->CI->Appconfig->get('barcode_content') !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id'];
|
||||
}
|
||||
|
||||
function get_font_name($font_file_name)
|
||||
{
|
||||
return substr($font_file_name, 0, -4);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function listfonts($folder)
|
||||
{
|
||||
$array = array();
|
||||
|
||||
if (($handle = opendir($folder)) !== false)
|
||||
{
|
||||
while (($file = readdir($handle)) !== false)
|
||||
{
|
||||
if(substr($file, -4, 4) === '.ttf')
|
||||
{
|
||||
$array[$file] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir($handle);
|
||||
|
||||
array_unshift($array, 'No Label');
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
public function get_font_name($font_file_name)
|
||||
{
|
||||
return substr($font_file_name, 0, -4);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -143,7 +143,7 @@ class Item extends CI_Model
|
||||
$this->db->from('items');
|
||||
$this->db->join('suppliers', 'suppliers.person_id = items.supplier_id', 'left');
|
||||
$this->db->where('item_number',$item_number);
|
||||
$this->db->where('items.deleted',0); // Parq 131226
|
||||
$this->db->where('items.deleted',0); // Parq 131226
|
||||
|
||||
$query = $this->db->get();
|
||||
|
||||
@@ -162,7 +162,7 @@ class Item extends CI_Model
|
||||
{
|
||||
$this->db->from('items');
|
||||
$this->db->join('suppliers', 'suppliers.person_id = items.supplier_id', 'left');
|
||||
$this->db->where_in('item_id',$item_ids);
|
||||
$this->db->where_in('item_id', $item_ids);
|
||||
$this->db->order_by('item_id', 'asc');
|
||||
return $this->db->get();
|
||||
}
|
||||
|
||||
@@ -22,12 +22,11 @@
|
||||
$count = 0;
|
||||
foreach($items as $item)
|
||||
{
|
||||
|
||||
if ($count % $barcode_config['barcode_num_in_row'] ==0 and $count!=0)
|
||||
if ($count % $barcode_config['barcode_num_in_row'] == 0 and $count != 0)
|
||||
{
|
||||
echo '</tr><tr>';
|
||||
}
|
||||
echo "<td>". $this->barcode_lib->create_display_barcode($item,$barcode_config)."</td>";
|
||||
echo "<td>" . $this->barcode_lib->create_display_barcode($item, $barcode_config) . "</td>";
|
||||
$count++;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -27,6 +27,11 @@ abstract class BarcodeBase
|
||||
*/
|
||||
protected $img = null;
|
||||
|
||||
/*
|
||||
* @var data - to be set
|
||||
*/
|
||||
protected $data = '';
|
||||
|
||||
/*
|
||||
* @var int x (width)
|
||||
*/
|
||||
@@ -58,6 +63,18 @@ abstract class BarcodeBase
|
||||
*/
|
||||
abstract public function setData($data);
|
||||
|
||||
/*
|
||||
* Get the data
|
||||
*
|
||||
* @param mixed data - (int or string) Data to be encoded
|
||||
* @return instance of \emberlabs\Barcode\BarcodeInterface
|
||||
* @return throws \OverflowException
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/*
|
||||
* (Abstract) Draw the image
|
||||
*
|
||||
|
||||
@@ -21,11 +21,6 @@ namespace emberlabs\Barcode;
|
||||
*/
|
||||
class Code128 extends BarcodeBase
|
||||
{
|
||||
/*
|
||||
* @var data - to be set
|
||||
*/
|
||||
private $data = '';
|
||||
|
||||
/*
|
||||
* Sub Type encoding
|
||||
* @var int (should be a class constant)
|
||||
@@ -252,7 +247,7 @@ class Code128 extends BarcodeBase
|
||||
// Calc scaling
|
||||
// Bars is in reference to a single, 1-level bar
|
||||
$numBarsRequired = ($this->type != self::TYPE_C) ? (sizeof($charAry) * 11) + 35 : ((sizeof($charAry)/2) * 11) + 35;
|
||||
$this->x = ($this->x == 0) ? $numBarsRequired : $this->x;
|
||||
$this->x = ($this->x == 0) ? $numBarsRequired : $this->x;
|
||||
$pxPerBar = (int) ($this->x / $numBarsRequired);
|
||||
$currentX = ($this->x - ($numBarsRequired * $pxPerBar)) / 2;
|
||||
|
||||
@@ -292,6 +287,12 @@ class Code128 extends BarcodeBase
|
||||
$checkSumCollector = $this->getKey($this->getStartChar());
|
||||
|
||||
$this->img = @imagecreate($this->x, $this->y);
|
||||
|
||||
if (!$this->img)
|
||||
{
|
||||
throw new \RuntimeException("Code128: Image failed to initialize");
|
||||
}
|
||||
|
||||
$white = imagecolorallocate($this->img, 255, 255, 255);
|
||||
$black = imagecolorallocate($this->img, 0, 0, 0);
|
||||
|
||||
|
||||
@@ -21,12 +21,6 @@ namespace emberlabs\Barcode;
|
||||
*/
|
||||
class Code39 extends BarcodeBase
|
||||
{
|
||||
/*
|
||||
* Data to be set
|
||||
* @var data
|
||||
*/
|
||||
private $data = '';
|
||||
|
||||
/*
|
||||
* Binary map
|
||||
* @var array binMap
|
||||
@@ -95,8 +89,7 @@ class Code39 extends BarcodeBase
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
// I know, lots of junk.
|
||||
$this->data = '*' . strtoupper(ltrim(rtrim(trim($data), '*'), '*')) . '*';
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -118,24 +111,19 @@ class Code39 extends BarcodeBase
|
||||
*/
|
||||
public function draw()
|
||||
{
|
||||
$this->img = @imagecreate($this->x, $this->y);
|
||||
|
||||
if (!$this->img)
|
||||
{
|
||||
throw new \RuntimeException("Code39: Image failed to initialize");
|
||||
}
|
||||
|
||||
// I know, lots of junk.
|
||||
$data = '*' . strtoupper(ltrim(rtrim(trim($this->data), '*'), '*')) . '*';
|
||||
|
||||
// Length of data X [ 6 narrow bars + 3 wide bars + A single Quiet stop ] - a single quiet stop
|
||||
$pxPerChar = (strlen($this->data) * ((6 * self::NARROW_BAR) + (3 * self::WIDE_BAR) + self::QUIET_BAR)) - self::QUIET_BAR;
|
||||
$pxPerChar = (strlen($data) * ((6 * self::NARROW_BAR) + (3 * self::WIDE_BAR) + self::QUIET_BAR)) - self::QUIET_BAR;
|
||||
$widthQuotient = $this->x / $pxPerChar;
|
||||
|
||||
// Lengths per type
|
||||
$narrowBar = (int) (self::NARROW_BAR * $widthQuotient);
|
||||
$wideBar = (int) (self::WIDE_BAR * $widthQuotient);
|
||||
$quietBar = (int) (self::QUIET_BAR * $widthQuotient);
|
||||
|
||||
|
||||
$imageWidth = (strlen($this->data) * ((6 * $narrowBar) + (3 * $wideBar) + $quietBar)) - $quietBar;
|
||||
$imageWidth = (strlen($data) * ((6 * $narrowBar) + (3 * $wideBar) + $quietBar)) - $quietBar;
|
||||
|
||||
// Do we have degenerate rectangles?
|
||||
if ($narrowBar < 1 || $wideBar < 1 || $quietBar < 1 || $narrowBar == $quietBar || $narrowBar == $wideBar || $wideBar == $quietBar)
|
||||
@@ -144,8 +132,15 @@ class Code39 extends BarcodeBase
|
||||
}
|
||||
|
||||
$currentBarX = (int)(($this->x - $imageWidth) / 2);
|
||||
$charAry = str_split($this->data);
|
||||
$charAry = str_split($data);
|
||||
|
||||
$this->img = @imagecreate($this->x, $this->y);
|
||||
|
||||
if (!$this->img)
|
||||
{
|
||||
throw new \RuntimeException("Code39: Image failed to initialize");
|
||||
}
|
||||
|
||||
// Grab our colors
|
||||
$white = imagecolorallocate($this->img, 255, 255, 255);
|
||||
$black = imagecolorallocate($this->img, 0, 0, 0);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Barcode Creator
|
||||
* @copyright (c) 2011 emberlabs.org
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
* @package Barcode Creator
|
||||
* @copyright (c) 2011 emberlabs.org
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
*
|
||||
* Minimum Requirement: PHP 5.3.0
|
||||
*/
|
||||
@@ -34,92 +34,87 @@ namespace emberlabs\Barcode;
|
||||
|
||||
/**
|
||||
* emberlabs Barcode Creator - Ean13
|
||||
* Generate Ean13 Barcodes
|
||||
* Generate Ean13 Barcodes
|
||||
*
|
||||
*
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
*/
|
||||
class Ean13 extends BarcodeBase
|
||||
{
|
||||
/*
|
||||
* @var data - to be set
|
||||
* Coding map
|
||||
* @var array
|
||||
*/
|
||||
private $data = '';
|
||||
|
||||
/*
|
||||
* Coding map
|
||||
* @var array
|
||||
*/
|
||||
private $_codingmap = array(
|
||||
'0' => array(
|
||||
'A' => array(0,0,0,1,1,0,1),
|
||||
'B' => array(0,1,0,0,1,1,1),
|
||||
'C' => array(1,1,1,0,0,1,0)
|
||||
),
|
||||
'1' => array(
|
||||
'A' => array(0,0,1,1,0,0,1),
|
||||
'B' => array(0,1,1,0,0,1,1),
|
||||
'C' => array(1,1,0,0,1,1,0)
|
||||
),
|
||||
'2' => array(
|
||||
'A' => array(0,0,1,0,0,1,1),
|
||||
'B' => array(0,0,1,1,0,1,1),
|
||||
'C' => array(1,1,0,1,1,0,0)
|
||||
),
|
||||
'3' => array(
|
||||
'A' => array(0,1,1,1,1,0,1),
|
||||
'B' => array(0,1,0,0,0,0,1),
|
||||
'C' => array(1,0,0,0,0,1,0)
|
||||
),
|
||||
'4' => array(
|
||||
'A' => array(0,1,0,0,0,1,1),
|
||||
'B' => array(0,0,1,1,1,0,1),
|
||||
'C' => array(1,0,1,1,1,0,0)
|
||||
),
|
||||
'5' => array(
|
||||
'A' => array(0,1,1,0,0,0,1),
|
||||
'B' => array(0,1,1,1,0,0,1),
|
||||
'C' => array(1,0,0,1,1,1,0)
|
||||
),
|
||||
'6' => array(
|
||||
'A' => array(0,1,0,1,1,1,1),
|
||||
'B' => array(0,0,0,0,1,0,1),
|
||||
'C' => array(1,0,1,0,0,0,0)
|
||||
),
|
||||
'7' => array(
|
||||
'A' => array(0,1,1,1,0,1,1),
|
||||
'B' => array(0,0,1,0,0,0,1),
|
||||
'C' => array(1,0,0,0,1,0,0)
|
||||
),
|
||||
'8' => array(
|
||||
'A' => array(0,1,1,0,1,1,1),
|
||||
'B' => array(0,0,0,1,0,0,1),
|
||||
'C' => array(1,0,0,1,0,0,0)
|
||||
),
|
||||
'9' => array(
|
||||
'A' => array(0,0,0,1,0,1,1),
|
||||
'B' => array(0,0,1,0,1,1,1),
|
||||
'C' => array(1,1,1,0,1,0,0)
|
||||
)
|
||||
);
|
||||
private $_codingmap = array(
|
||||
'0' => array(
|
||||
'A' => array(0,0,0,1,1,0,1),
|
||||
'B' => array(0,1,0,0,1,1,1),
|
||||
'C' => array(1,1,1,0,0,1,0)
|
||||
),
|
||||
'1' => array(
|
||||
'A' => array(0,0,1,1,0,0,1),
|
||||
'B' => array(0,1,1,0,0,1,1),
|
||||
'C' => array(1,1,0,0,1,1,0)
|
||||
),
|
||||
'2' => array(
|
||||
'A' => array(0,0,1,0,0,1,1),
|
||||
'B' => array(0,0,1,1,0,1,1),
|
||||
'C' => array(1,1,0,1,1,0,0)
|
||||
),
|
||||
'3' => array(
|
||||
'A' => array(0,1,1,1,1,0,1),
|
||||
'B' => array(0,1,0,0,0,0,1),
|
||||
'C' => array(1,0,0,0,0,1,0)
|
||||
),
|
||||
'4' => array(
|
||||
'A' => array(0,1,0,0,0,1,1),
|
||||
'B' => array(0,0,1,1,1,0,1),
|
||||
'C' => array(1,0,1,1,1,0,0)
|
||||
),
|
||||
'5' => array(
|
||||
'A' => array(0,1,1,0,0,0,1),
|
||||
'B' => array(0,1,1,1,0,0,1),
|
||||
'C' => array(1,0,0,1,1,1,0)
|
||||
),
|
||||
'6' => array(
|
||||
'A' => array(0,1,0,1,1,1,1),
|
||||
'B' => array(0,0,0,0,1,0,1),
|
||||
'C' => array(1,0,1,0,0,0,0)
|
||||
),
|
||||
'7' => array(
|
||||
'A' => array(0,1,1,1,0,1,1),
|
||||
'B' => array(0,0,1,0,0,0,1),
|
||||
'C' => array(1,0,0,0,1,0,0)
|
||||
),
|
||||
'8' => array(
|
||||
'A' => array(0,1,1,0,1,1,1),
|
||||
'B' => array(0,0,0,1,0,0,1),
|
||||
'C' => array(1,0,0,1,0,0,0)
|
||||
),
|
||||
'9' => array(
|
||||
'A' => array(0,0,0,1,0,1,1),
|
||||
'B' => array(0,0,1,0,1,1,1),
|
||||
'C' => array(1,1,1,0,1,0,0)
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Coding map left
|
||||
* @var array
|
||||
*/
|
||||
private $_codingmapleft = array(
|
||||
'0' => array('A','A','A','A','A','A'),
|
||||
'1' => array('A','A','B','A','B','B'),
|
||||
'2' => array('A','A','B','B','A','B'),
|
||||
'3' => array('A','A','B','B','B','A'),
|
||||
'4' => array('A','B','A','A','B','B'),
|
||||
'5' => array('A','B','B','A','A','B'),
|
||||
'6' => array('A','B','B','B','A','A'),
|
||||
'7' => array('A','B','A','B','A','B'),
|
||||
'8' => array('A','B','A','B','B','A'),
|
||||
'9' => array('A','B','B','A','B','A')
|
||||
);
|
||||
/*
|
||||
* Coding map left
|
||||
* @var array
|
||||
*/
|
||||
private $_codingmapleft = array(
|
||||
'0' => array('A','A','A','A','A','A'),
|
||||
'1' => array('A','A','B','A','B','B'),
|
||||
'2' => array('A','A','B','B','A','B'),
|
||||
'3' => array('A','A','B','B','B','A'),
|
||||
'4' => array('A','B','A','A','B','B'),
|
||||
'5' => array('A','B','B','A','A','B'),
|
||||
'6' => array('A','B','B','B','A','A'),
|
||||
'7' => array('A','B','A','B','A','B'),
|
||||
'8' => array('A','B','A','B','B','A'),
|
||||
'9' => array('A','B','B','A','B','A')
|
||||
);
|
||||
|
||||
/*
|
||||
* Generate EAN13 code out of a provided number
|
||||
@@ -130,21 +125,21 @@ class Ean13 extends BarcodeBase
|
||||
*/
|
||||
private function generateEAN($number)
|
||||
{
|
||||
$code = '200' . str_pad($number, 9, '0');
|
||||
$this->data = '200' . str_pad($number, 9, '0');
|
||||
$weightflag = true;
|
||||
$sum = 0;
|
||||
|
||||
// Weight for a digit in the checksum is 3, 1, 3.. starting from the last digit.
|
||||
// loop backwards to make the loop length-agnostic. The same basic functionality
|
||||
// will work for codes of different lengths.
|
||||
for ($i = strlen($code) - 1; $i >= 0; $i--)
|
||||
for ($i = strlen($this->data) - 1; $i >= 0; $i--)
|
||||
{
|
||||
$sum += (int)$code[$i] * ($weightflag?3:1);
|
||||
$sum += (int)$this->data[$i] * ($weightflag?3:1);
|
||||
$weightflag = !$weightflag;
|
||||
}
|
||||
$code .= (10 - ($sum % 10)) % 10;
|
||||
$this->data .= (10 - ($sum % 10)) % 10;
|
||||
|
||||
return $code;
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -156,7 +151,7 @@ class Ean13 extends BarcodeBase
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
$this->data = $data;
|
||||
$this->data = $this->generateEAN($data);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -166,17 +161,15 @@ class Ean13 extends BarcodeBase
|
||||
*/
|
||||
public function draw()
|
||||
{
|
||||
$code = $this->generateEAN($this->data);
|
||||
|
||||
// Bars is in reference to a single, 1-level bar
|
||||
$pxPerBar = 2.5;
|
||||
$pxPerBar = 2;
|
||||
|
||||
// Calculate the barcode width
|
||||
$barcodewidth = (strlen($code)) * (7 * $pxPerBar)
|
||||
+ 3 * $pxPerBar // left
|
||||
+ 5 * $pxPerBar // center
|
||||
+ 3 * $pxPerBar // right
|
||||
;
|
||||
// Calculate the barcode width
|
||||
$barcodewidth = (strlen($this->data)) * (7 * $pxPerBar)
|
||||
+ 3 * $pxPerBar // left
|
||||
+ 5 * $pxPerBar // center
|
||||
+ 3 * $pxPerBar // right
|
||||
;
|
||||
|
||||
$this->x = ($this->x == 0) ? $barcodewidth : $this->x;
|
||||
|
||||
@@ -190,110 +183,53 @@ class Ean13 extends BarcodeBase
|
||||
$white = imagecolorallocate($this->img, 255, 255, 255);
|
||||
$black = imagecolorallocate($this->img, 0, 0, 0);
|
||||
|
||||
// Fill image with white color
|
||||
imagefill($this->img, 0, 0, $white);
|
||||
// Fill image with white color
|
||||
imagefill($this->img, 0, 0, $white);
|
||||
|
||||
// get the first digit which is the key for creating the first 6 bars
|
||||
$key = substr($code, 0, 1);
|
||||
// get the first digit which is the key for creating the first 6 bars
|
||||
$key = substr($this->data, 0, 1);
|
||||
|
||||
// Initiate x position
|
||||
$xpos = 0;
|
||||
// Initiate x position centering the bar
|
||||
$xpos = ($this->x - $barcodewidth) / 2;
|
||||
|
||||
// Draws the left guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
// Draws the left guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// Draw left $code contents
|
||||
$set_array = $this->_codingmapleft[$key];
|
||||
|
||||
for ($idx = 1; $idx < 7; $idx ++)
|
||||
{
|
||||
$value = substr($code, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value][$set_array[$idx - 1]] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the center pattern (space-bar-space-bar-space)
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
// Draw left $this->data contents
|
||||
$set_array = $this->_codingmapleft[$key];
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// Draw right $code contents
|
||||
for ($idx = 7; $idx < 13; $idx ++)
|
||||
for ($idx = 1; $idx < 7; $idx ++)
|
||||
{
|
||||
$value = substr($code, $idx, 1);
|
||||
$value = substr($this->data, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value]['C'] as $bar)
|
||||
foreach ($this->_codingmap[$value][$set_array[$idx - 1]] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
@@ -302,38 +238,95 @@ class Ean13 extends BarcodeBase
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the right guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
// Draws the center pattern (space-bar-space-bar-space)
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// Draw right $this->data contents
|
||||
for ($idx = 7; $idx < 13; $idx ++)
|
||||
{
|
||||
$value = substr($this->data, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value]['C'] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the right guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package Barcode Creator
|
||||
* @copyright (c) 2011 emberlabs.org
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
* @package Barcode Creator
|
||||
* @copyright (c) 2011 emberlabs.org
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
*
|
||||
* Minimum Requirement: PHP 5.3.0
|
||||
*/
|
||||
@@ -34,129 +34,124 @@ namespace emberlabs\Barcode;
|
||||
|
||||
/**
|
||||
* emberlabs Barcode Creator - Ean8
|
||||
* Generate Ean8 Barcodes
|
||||
* Generate Ean8 Barcodes
|
||||
*
|
||||
*
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
* @license http://opensource.org/licenses/mit-license.php The MIT License
|
||||
* @link https://github.com/samt/barcode
|
||||
*/
|
||||
class Ean8 extends BarcodeBase
|
||||
{
|
||||
/*
|
||||
* @var data - to be set
|
||||
* Coding map
|
||||
* @var array
|
||||
*/
|
||||
private $data = '';
|
||||
|
||||
/*
|
||||
* Coding map
|
||||
* @var array
|
||||
*/
|
||||
private $_codingmap = array(
|
||||
'0' => array(
|
||||
'A' => array(0,0,0,1,1,0,1),
|
||||
'C' => array(1,1,1,0,0,1,0)
|
||||
),
|
||||
'1' => array(
|
||||
'A' => array(0,0,1,1,0,0,1),
|
||||
'C' => array(1,1,0,0,1,1,0)
|
||||
),
|
||||
'2' => array(
|
||||
'A' => array(0,0,1,0,0,1,1),
|
||||
'C' => array(1,1,0,1,1,0,0)
|
||||
),
|
||||
'3' => array(
|
||||
'A' => array(0,1,1,1,1,0,1),
|
||||
'C' => array(1,0,0,0,0,1,0)
|
||||
),
|
||||
'4' => array(
|
||||
'A' => array(0,1,0,0,0,1,1),
|
||||
'C' => array(1,0,1,1,1,0,0)
|
||||
),
|
||||
'5' => array(
|
||||
'A' => array(0,1,1,0,0,0,1),
|
||||
'C' => array(1,0,0,1,1,1,0)
|
||||
),
|
||||
'6' => array(
|
||||
'A' => array(0,1,0,1,1,1,1),
|
||||
'C' => array(1,0,1,0,0,0,0)
|
||||
),
|
||||
'7' => array(
|
||||
'A' => array(0,1,1,1,0,1,1),
|
||||
'C' => array(1,0,0,0,1,0,0)
|
||||
),
|
||||
'8' => array(
|
||||
'A' => array(0,1,1,0,1,1,1),
|
||||
'C' => array(1,0,0,1,0,0,0)
|
||||
),
|
||||
'9' => array(
|
||||
'A' => array(0,0,0,1,0,1,1),
|
||||
'C' => array(1,1,1,0,1,0,0)
|
||||
)
|
||||
);
|
||||
private $_codingmap = array(
|
||||
'0' => array(
|
||||
'A' => array(0,0,0,1,1,0,1),
|
||||
'C' => array(1,1,1,0,0,1,0)
|
||||
),
|
||||
'1' => array(
|
||||
'A' => array(0,0,1,1,0,0,1),
|
||||
'C' => array(1,1,0,0,1,1,0)
|
||||
),
|
||||
'2' => array(
|
||||
'A' => array(0,0,1,0,0,1,1),
|
||||
'C' => array(1,1,0,1,1,0,0)
|
||||
),
|
||||
'3' => array(
|
||||
'A' => array(0,1,1,1,1,0,1),
|
||||
'C' => array(1,0,0,0,0,1,0)
|
||||
),
|
||||
'4' => array(
|
||||
'A' => array(0,1,0,0,0,1,1),
|
||||
'C' => array(1,0,1,1,1,0,0)
|
||||
),
|
||||
'5' => array(
|
||||
'A' => array(0,1,1,0,0,0,1),
|
||||
'C' => array(1,0,0,1,1,1,0)
|
||||
),
|
||||
'6' => array(
|
||||
'A' => array(0,1,0,1,1,1,1),
|
||||
'C' => array(1,0,1,0,0,0,0)
|
||||
),
|
||||
'7' => array(
|
||||
'A' => array(0,1,1,1,0,1,1),
|
||||
'C' => array(1,0,0,0,1,0,0)
|
||||
),
|
||||
'8' => array(
|
||||
'A' => array(0,1,1,0,1,1,1),
|
||||
'C' => array(1,0,0,1,0,0,0)
|
||||
),
|
||||
'9' => array(
|
||||
'A' => array(0,0,0,1,0,1,1),
|
||||
'C' => array(1,1,1,0,1,0,0)
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
* Calculate EAN8 or EAN13 automatically
|
||||
* set $len = 8 for EAN8, $len = 13 for EAN13
|
||||
*
|
||||
* @param number is the internal code you want to have EANed. The prefix, zero-padding and checksum are added by the function.
|
||||
* @return string with complete EAN13 code
|
||||
* @return string with complete EAN code
|
||||
*/
|
||||
private function generateEAN($number, $len = 8)
|
||||
{
|
||||
$code = null;
|
||||
$this->data = null;
|
||||
|
||||
if($number > -1)
|
||||
{
|
||||
$data_len = $len - 1;
|
||||
$code = $number;
|
||||
$this->data = $number;
|
||||
|
||||
//Padding
|
||||
$code = str_pad($code, $data_len, '0', STR_PAD_LEFT);
|
||||
$code_len = strlen($code);
|
||||
$this->data = str_pad($this->data, $data_len, '0', STR_PAD_LEFT);
|
||||
$this->data_len = strlen($this->data);
|
||||
|
||||
// calculate check digit
|
||||
$sum_a = 0;
|
||||
for ($i = 1; $i < $data_len; $i += 2)
|
||||
{
|
||||
$sum_a += $code{$i};
|
||||
$sum_a += $this->data{$i};
|
||||
}
|
||||
|
||||
if ($len > 12)
|
||||
{
|
||||
$sum_a *= 3;
|
||||
$sum_a *= 3;
|
||||
}
|
||||
|
||||
$sum_b = 0;
|
||||
for ($i = 0; $i < $data_len; $i += 2)
|
||||
{
|
||||
$sum_b += ($code{$i});
|
||||
$sum_b += ($this->data{$i});
|
||||
}
|
||||
|
||||
if ($len < 13)
|
||||
{
|
||||
$sum_b *= 3;
|
||||
$sum_b *= 3;
|
||||
}
|
||||
|
||||
$r = ($sum_a + $sum_b) % 10;
|
||||
|
||||
if($r > 0)
|
||||
{
|
||||
$r = (10 - $r);
|
||||
$r = (10 - $r);
|
||||
}
|
||||
|
||||
if ($code_len == $data_len)
|
||||
if ($this->data_len == $data_len)
|
||||
{
|
||||
// add check digit
|
||||
$code .= $r;
|
||||
// add check digit
|
||||
$this->data .= $r;
|
||||
}
|
||||
elseif ($r !== intval($code{$data_len}))
|
||||
elseif ($r !== intval($this->data{$data_len}))
|
||||
{
|
||||
// wrong checkdigit
|
||||
$code = null;
|
||||
// wrong checkdigit
|
||||
$this->data = null;
|
||||
}
|
||||
}
|
||||
|
||||
return $code;
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -168,7 +163,7 @@ class Ean8 extends BarcodeBase
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
$this->data = $data;
|
||||
$this->data = $this->generateEAN($data);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -178,17 +173,15 @@ class Ean8 extends BarcodeBase
|
||||
*/
|
||||
public function draw()
|
||||
{
|
||||
$code = $this->generateEAN($this->data);
|
||||
|
||||
// Bars is in reference to a single, 1-level bar
|
||||
$pxPerBar = 2.5;
|
||||
$pxPerBar = 2;
|
||||
|
||||
// Calculate the barcode width
|
||||
$barcodewidth = (strlen($code)) * (7 * $pxPerBar)
|
||||
+ 3 * $pxPerBar // left
|
||||
+ 5 * $pxPerBar // center
|
||||
+ 3 * $pxPerBar // right
|
||||
;
|
||||
// Calculate the barcode width
|
||||
$barcodewidth = (strlen($this->data)) * (7 * $pxPerBar)
|
||||
+ 3 * $pxPerBar // left
|
||||
+ 5 * $pxPerBar // center
|
||||
+ 3 * $pxPerBar // right
|
||||
;
|
||||
|
||||
$this->x = ($this->x == 0) ? $barcodewidth : $this->x;
|
||||
|
||||
@@ -196,113 +189,56 @@ class Ean8 extends BarcodeBase
|
||||
|
||||
if (!$this->img)
|
||||
{
|
||||
throw new \RuntimeException("Ean13: Image failed to initialize");
|
||||
throw new \RuntimeException("Ean8: Image failed to initialize");
|
||||
}
|
||||
|
||||
$white = imagecolorallocate($this->img, 255, 255, 255);
|
||||
$black = imagecolorallocate($this->img, 0, 0, 0);
|
||||
|
||||
// Fill image with white color
|
||||
imagefill($this->img, 0, 0, $white);
|
||||
// Fill image with white color
|
||||
imagefill($this->img, 0, 0, $white);
|
||||
|
||||
// get the first digit which is the key for creating the first 6 bars
|
||||
$key = substr($code, 0, 1);
|
||||
// get the first digit which is the key for creating the first 6 bars
|
||||
$key = substr($this->data, 0, 1);
|
||||
|
||||
// Initiate x position
|
||||
$xpos = 0;
|
||||
// Initiate x position centering the bar
|
||||
$xpos = ($this->x - $barcodewidth) / 2;
|
||||
|
||||
// Draws the left guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
// Draws the left guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
for ($idx = 0; $idx < 4; $idx ++)
|
||||
{
|
||||
$value = substr($code, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value]['A'] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the center pattern (space-bar-space-bar-space)
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// Draw right $code contents
|
||||
for ($idx = 4; $idx < 8; $idx ++)
|
||||
for ($idx = 0; $idx < 4; $idx ++)
|
||||
{
|
||||
$value = substr($code, $idx, 1);
|
||||
$value = substr($this->data, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value]['C'] as $bar)
|
||||
foreach ($this->_codingmap[$value]['A'] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
@@ -311,38 +247,95 @@ class Ean8 extends BarcodeBase
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the right guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
// Draws the center pattern (space-bar-space-bar-space)
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// Draw right $this->data contents
|
||||
for ($idx = 4; $idx < 8; $idx ++)
|
||||
{
|
||||
$value = substr($this->data, $idx, 1);
|
||||
|
||||
foreach ($this->_codingmap[$value]['C'] as $bar)
|
||||
{
|
||||
if ($bar)
|
||||
{
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
}
|
||||
}
|
||||
|
||||
// Draws the right guard pattern (bar-space-bar)
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// space
|
||||
$xpos += $pxPerBar;
|
||||
|
||||
// bar
|
||||
imagefilledrectangle(
|
||||
$this->img,
|
||||
$xpos,
|
||||
0,
|
||||
$xpos + $pxPerBar - 1,
|
||||
$this->y,
|
||||
$black
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user