ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
2dbarcodes.php
Go to the documentation of this file.
1 <?php
2 //============================================================+
3 // File name : 2dbarcodes.php
4 // Version : 1.0.007
5 // Begin : 2009-04-07
6 // Last Update : 2010-08-08
7 // Author : Nicola Asuni - Tecnick.com S.r.l - Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
8 // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
9 // -------------------------------------------------------------------
10 // Copyright (C) 2009-2010 Nicola Asuni - Tecnick.com S.r.l.
11 //
12 // This file is part of TCPDF software library.
13 //
14 // TCPDF is free software: you can redistribute it and/or modify it
15 // under the terms of the GNU Lesser General Public License as
16 // published by the Free Software Foundation, either version 3 of the
17 // License, or (at your option) any later version.
18 //
19 // TCPDF is distributed in the hope that it will be useful, but
20 // WITHOUT ANY WARRANTY; without even the implied warranty of
21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22 // See the GNU Lesser General Public License for more details.
23 //
24 // You should have received a copy of the GNU Lesser General Public License
25 // along with TCPDF. If not, see <http://www.gnu.org/licenses/>.
26 //
27 // See LICENSE.TXT file for more information.
28 // -------------------------------------------------------------------
29 //
30 // Description : PHP class to creates array representations for
31 // 2D barcodes to be used with TCPDF.
32 //
33 //============================================================+
34 
56 
61  protected $barcode_array = false;
62 
73  public function __construct($code, $type) {
74  $this->setBarcode($code, $type);
75  }
76 
81  public function getBarcodeArray() {
82  return $this->barcode_array;
83  }
84 
91  public function setBarcode($code, $type) {
92  $mode = explode(',', $type);
93  $qrtype = strtoupper($mode[0]);
94  switch ($qrtype) {
95  case 'QRCODE': { // QR-CODE
96  require_once(dirname(__FILE__).'/qrcode.php');
97  if (!isset($mode[1]) OR (!in_array($mode[1],array('L','M','Q','H')))) {
98  $mode[1] = 'L'; // Ddefault: Low error correction
99  }
100  $qrcode = new QRcode($code, strtoupper($mode[1]));
101  $this->barcode_array = $qrcode->getBarcodeArray();
102  break;
103  }
104  case 'PDF417': { // PDF417 (ISO/IEC 15438:2006)
105  require_once(dirname(__FILE__).'/pdf417.php');
106  if (!isset($mode[1]) OR ($mode[1] === '')) {
107  $aspectratio = 2; // default aspect ratio (width / height)
108  } else {
109  $aspectratio = floatval($mode[1]);
110  }
111  if (!isset($mode[2]) OR ($mode[2] === '')) {
112  $ecl = -1; // default error correction level (auto)
113  } else {
114  $ecl = intval($mode[2]);
115  }
116  // set macro block
117  $macro = array();
118  if (isset($mode[3]) AND ($mode[3] !== '') AND isset($mode[4]) AND ($mode[4] !== '') AND isset($mode[5]) AND ($mode[5] !== '')) {
119  $macro['segment_total'] = intval($mode[3]);
120  $macro['segment_index'] = intval($mode[4]);
121  $macro['file_id'] = strtr($mode[5], "\xff", ',');
122  for ($i = 0; $i < 7; ++$i) {
123  $o = $i + 6;
124  if (isset($mode[$o]) AND ($mode[$o] !== '')) {
125  // add option
126  $macro['option_'.$i] = strtr($mode[$o], "\xff", ',');
127  }
128  }
129  }
130  $qrcode = new PDF417($code, $ecl, $aspectratio, $macro);
131  $this->barcode_array = $qrcode->getBarcodeArray();
132  break;
133  }
134  case 'RAW':
135  case 'RAW2': { // RAW MODE
136  // remove spaces
137  $code = preg_replace('/[\s]*/si', '', $code);
138  if (strlen($code) < 3) {
139  break;
140  }
141  if ($qrtype == 'RAW') {
142  // comma-separated rows
143  $rows = explode(',', $code);
144  } else { // RAW2
145  // rows enclosed in square parentheses
146  $code = substr($code, 1, -1);
147  $rows = explode('][', $code);
148  }
149  $this->barcode_array['num_rows'] = count($rows);
150  $this->barcode_array['num_cols'] = strlen($rows[0]);
151  $this->barcode_array['bcode'] = array();
152  foreach ($rows as $r) {
153  $this->barcode_array['bcode'][] = str_split($r, 1);
154  }
155  break;
156  }
157  case 'TEST': { // TEST MODE
158  $this->barcode_array['num_rows'] = 5;
159  $this->barcode_array['num_cols'] = 15;
160  $this->barcode_array['bcode'] = array(
161  array(1,1,1,0,1,1,1,0,1,1,1,0,1,1,1),
162  array(0,1,0,0,1,0,0,0,1,0,0,0,0,1,0),
163  array(0,1,0,0,1,1,0,0,1,1,1,0,0,1,0),
164  array(0,1,0,0,1,0,0,0,0,0,1,0,0,1,0),
165  array(0,1,0,0,1,1,1,0,1,1,1,0,0,1,0));
166  break;
167  }
168  default: {
169  $this->barcode_array = false;
170  }
171  }
172  }
173 } // end of class
174 
175 //============================================================+
176 // END OF FILE
177 //============================================================+