'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['company'] = $this->CI->Appconfig->get('company'); $data['barcode_content'] = $this->CI->Appconfig->get('barcode_content'); $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; } private function get_barcode_instance($barcode_type) { switch($barcode_type) { case '1': return new emberlabs\Barcode\Code39(); break; case '2': default: return new emberlabs\Barcode\Code128(); break; case '3': return new emberlabs\Barcode\Ean8(); break; case '4': return new emberlabs\Barcode\Ean13(); break; } } private function generate_barcode($item, $barcode_config) { try { $barcode = $this->get_barcode_instance($barcode_config['barcode_type']); $barcode_content = $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id']; $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"; } } public function generate_receipt_barcode($barcode_content) { try { // Code128 is used for the receipts $barcode = $this->get_barcode_instance(2); // set the receipt number to generate the barcode for $barcode->setData($barcode_content); // image quality 100 $barcode->setQuality(100); // width: 200, height: 30 $barcode->setDimensions(200, 30); // draw the image $barcode->draw(); return $barcode->base64(); } catch(Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } } public function get_barcode($item, $barcode_config) { try { $barcode = $this->get_barcode_instance($barcode_config['barcode_type']); $barcode_content = $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) ? $item['item_number'] : $item['item_id']; $barcode->setData($barcode_content); $code = $barcode->getData(); // in case no new code is generated like in Code39 and Code128 return an empty string because we don't want to override it with a pure item_id if( $code == $item['item_id'] ) { $code = null; } return $code; } catch(Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } } public function create_display_barcode($item, $barcode_config) { $display_table = "
| " . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . " |
| " . $this->manage_display_layout($barcode_config['barcode_second_row'], $item, $barcode_config) . " |
| " . $this->manage_display_layout($barcode_config['barcode_third_row'], $item, $barcode_config) . " |