com-tecnick-tcpdf
[ class tree: com-tecnick-tcpdf ] [ index: com-tecnick-tcpdf ] [ all elements ]

Source for file 2dbarcodes.php

Documentation is available at 2dbarcodes.php

  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.  
  35. /**
  36.  * PHP class to creates array representations for 2D barcodes to be used with TCPDF.
  37.  * @package com.tecnick.tcpdf
  38.  * @abstract Functions for generating string representation of 2D barcodes.
  39.  * @author Nicola Asuni
  40.  * @copyright 2009-2009 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
  41.  * @link http://www.tcpdf.org
  42.  * @license http://www.gnu.org/copyleft/lesser.html LGPL
  43.  * @version 1.0.007
  44.  */
  45.  
  46.     /**
  47.     * PHP class to creates array representations for 2D barcodes to be used with TCPDF (http://www.tcpdf.org).<br>
  48.     * @name TCPDFBarcode
  49.     * @package com.tecnick.tcpdf
  50.     * @version 1.0.007
  51.     * @author Nicola Asuni
  52.     * @link http://www.tcpdf.org
  53.     * @license http://www.gnu.org/copyleft/lesser.html LGPL
  54.     */
  55. class TCPDF2DBarcode {
  56.  
  57.     /**
  58.      * @var array representation of barcode.
  59.      * @access protected
  60.      */
  61.     protected $barcode_array = false;
  62.  
  63.     /**
  64.      * This is the class constructor.
  65.      * Return an array representations for 2D barcodes:<ul>
  66.      * <li>$arrcode['code'] code to be printed on text label</li>
  67.      * <li>$arrcode['num_rows'] required number of rows</li>
  68.      * <li>$arrcode['num_cols'] required number of columns</li>
  69.      * <li>$arrcode['bcode'][$r][$c] value of the cell is $r row and $c column (0 = transparent, 1 = black)</li></ul>
  70.      * @param string $code code to print
  71.       * @param string $type type of barcode: <ul><li>RAW: raw mode - comma-separad list of array rows</li><li>RAW2: raw mode - array rows are surrounded by square parenthesis.</li><li>QRCODE : QR-CODE Low error correction</li><li>QRCODE,L : QR-CODE Low error correction</li><li>QRCODE,M : QR-CODE Medium error correction</li><li>QRCODE,Q : QR-CODE Better error correction</li><li>QRCODE,H : QR-CODE Best error correction</li><li>PDF417 : PDF417 (ISO/IEC 15438:2006)</li><li>PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".</li></ul>
  72.      */
  73.     public function __construct($code$type{
  74.         $this->setBarcode($code$type);
  75.     }
  76.  
  77.     /**
  78.      * Return an array representations of barcode.
  79.       * @return array 
  80.      */
  81.     public function getBarcodeArray({
  82.         return $this->barcode_array;
  83.     }
  84.  
  85.     /**
  86.      * Set the barcode.
  87.      * @param string $code code to print
  88.       * @param string $type type of barcode: <ul><li>RAW: raw mode - comma-separad list of array rows</li><li>RAW2: raw mode - array rows are surrounded by square parenthesis.</li><li>QRCODE : QR-CODE Low error correction</li><li>QRCODE,L : QR-CODE Low error correction</li><li>QRCODE,M : QR-CODE Medium error correction</li><li>QRCODE,Q : QR-CODE Better error correction</li><li>QRCODE,H : QR-CODE Best error correction</li><li>PDF417 : PDF417 (ISO/IEC 15438:2006)</li><li>PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".</li></ul>
  89.       * @return array 
  90.      */
  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($codestrtoupper($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_'.$istrtr($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($code3{
  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($code1-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($r1);
  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. //============================================================+

Documentation generated on Sun, 27 Feb 2011 16:26:40 -0800 by phpDocumentor 1.4.3