Changeset 1189 for trunk/lib/tcpdf
- Timestamp:
- 12/01/08 13:45:10 (1 month ago)
- Files:
-
- trunk/lib/tcpdf/barcodes.php (modified) (31 diffs)
- trunk/lib/tcpdf/CHANGELOG.TXT (modified) (29 diffs)
- trunk/lib/tcpdf/config/lang (deleted)
- trunk/lib/tcpdf/config/tcpdf_config.php (modified) (5 diffs)
- trunk/lib/tcpdf/htmlcolors.php (modified) (2 diffs)
- trunk/lib/tcpdf/README.TXT (modified) (1 diff)
- trunk/lib/tcpdf/tcpdf.php (modified) (483 diffs)
- trunk/lib/tcpdf/unicode_data.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/tcpdf/barcodes.php
r1148 r1189 3 3 // File name : barcodes.php 4 4 // Begin : 2008-06-09 5 // Last Update : 2008- 07-166 // Version : 1.0.00 25 // Last Update : 2008-11-17 6 // Version : 1.0.003 7 7 // License : GNU LGPL (http://www.gnu.org/copyleft/lesser.html) 8 8 // ---------------------------------------------------------------------------- 9 9 // Copyright (C) 2008 Nicola Asuni - Tecnick.com S.r.l. 10 // 10 // 11 11 // This program is free software: you can redistribute it and/or modify 12 12 // it under the terms of the GNU Lesser General Public License as published by 13 13 // the Free Software Foundation, either version 2.1 of the License, or 14 14 // (at your option) any later version. 15 // 15 // 16 16 // This program is distributed in the hope that it will be useful, 17 17 // but WITHOUT ANY WARRANTY; without even the implied warranty of 18 18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 19 // GNU Lesser General Public License for more details. 20 // 20 // 21 21 // You should have received a copy of the GNU Lesser General Public License 22 22 // along with this program. If not, see <http://www.gnu.org/licenses/>. 23 // 23 // 24 24 // See LICENSE.TXT file for more information. 25 25 // ---------------------------------------------------------------------------- 26 26 // 27 // Description : PHP class to creates array representations for 27 // Description : PHP class to creates array representations for 28 28 // common 1D barcodes to be used with TCPDF. 29 29 // … … 61 61 */ 62 62 class TCPDFBarcode { 63 63 64 64 /** 65 65 * @var array representation of barcode. … … 67 67 */ 68 68 protected $barcode_array; 69 70 /** 71 * This is the class constructor. 69 70 /** 71 * This is the class constructor. 72 72 * Return an array representations for common 1D barcodes:<ul> 73 * <li>$arrcode[ "code"] code to be printed on text label</li>74 * <li>$arrcode[ "maxh"] max bar height</li>75 * <li>$arrcode[ "maxw"] max bar width</li>76 * <li>$arrcode[ "bcode"][$k] single bar or space in $k position</li>77 * <li>$arrcode[ "bcode"][$k]["t"] bar type: true = bar, false = space.</li>78 * <li>$arrcode[ "bcode"][$k]["w"] bar width in units.</li>79 * <li>$arrcode[ "bcode"][$k]["h"] bar height in units.</li>80 * <li>$arrcode[ "bcode"][$k]["p"] bar top position (0 = top, 1 = middle)</li></ul>73 * <li>$arrcode['code'] code to be printed on text label</li> 74 * <li>$arrcode['maxh'] max bar height</li> 75 * <li>$arrcode['maxw'] max bar width</li> 76 * <li>$arrcode['bcode'][$k] single bar or space in $k position</li> 77 * <li>$arrcode['bcode'][$k]['t'] bar type: true = bar, false = space.</li> 78 * <li>$arrcode['bcode'][$k]['w'] bar width in units.</li> 79 * <li>$arrcode['bcode'][$k]['h'] bar height in units.</li> 80 * <li>$arrcode['bcode'][$k]['p'] bar top position (0 = top, 1 = middle)</li></ul> 81 81 * @param string $code code to print 82 82 * @param string $type type of barcode: <ul><li>C39 : CODE 39</li><li>C39+ : CODE 39 with checksum</li><li>C39E : CODE 39 EXTENDED</li><li>C39E+ : CODE 39 EXTENDED with checksum</li><li>I25 : Interleaved 2 of 5</li><li>C128A : CODE 128 A</li><li>C128B : CODE 128 B</li><li>C128C : CODE 128 C</li><li>EAN13 : EAN 13</li><li>UPCA : UPC-A</li><li>POSTNET : POSTNET</li><li>CODABAR : CODABAR</li></ul> … … 85 85 $this->setBarcode($code, $type); 86 86 } 87 88 /** 87 88 /** 89 89 * Return an array representations of barcode. 90 90 * @return array … … 93 93 return $this->barcode_array; 94 94 } 95 96 /** 95 96 /** 97 97 * Set the barcode. 98 98 * @param string $code code to print … … 102 102 public function setBarcode($code, $type) { 103 103 switch (strtoupper($type)) { 104 case "C39": { // CODE 39104 case 'C39': { // CODE 39 105 105 $arrcode = $this->barcode_code39($code, false, false); 106 106 break; 107 107 } 108 case "C39+": { // CODE 39 with checksum108 case 'C39+': { // CODE 39 with checksum 109 109 $arrcode = $this->barcode_code39($code, false, true); 110 110 break; 111 111 } 112 case "C39E": { // CODE 39 EXTENDED112 case 'C39E': { // CODE 39 EXTENDED 113 113 $arrcode = $this->barcode_code39($code, true, false); 114 114 break; 115 115 } 116 case "C39E+": { // CODE 39 EXTENDED with checksum116 case 'C39E+': { // CODE 39 EXTENDED with checksum 117 117 $arrcode = $this->barcode_code39($code, true, true); 118 118 break; 119 119 } 120 case "I25": { // Interleaved 2 of 5120 case 'I25': { // Interleaved 2 of 5 121 121 $arrcode = $this->barcode_i25($code); 122 122 break; 123 123 } 124 case "C128A": { // CODE 128 A125 $arrcode = $this->barcode_c128($code, "A");126 break; 127 } 128 case "C128B": { // CODE 128 B129 $arrcode = $this->barcode_c128($code, "B");130 break; 131 } 132 case "C128C": { // CODE 128 C133 $arrcode = $this->barcode_c128($code, "C");134 break; 135 } 136 case "EAN13": { // EAN 13124 case 'C128A': { // CODE 128 A 125 $arrcode = $this->barcode_c128($code, 'A'); 126 break; 127 } 128 case 'C128B': { // CODE 128 B 129 $arrcode = $this->barcode_c128($code, 'B'); 130 break; 131 } 132 case 'C128C': { // CODE 128 C 133 $arrcode = $this->barcode_c128($code, 'C'); 134 break; 135 } 136 case 'EAN13': { // EAN 13 137 137 $arrcode = $this->barcode_ean13($code, 13); 138 138 break; 139 139 } 140 case "UPCA": { // UPC-A140 case 'UPCA': { // UPC-A 141 141 $arrcode = $this->barcode_ean13($code, 12); 142 142 break; 143 143 } 144 case "POSTNET": { // POSTNET144 case 'POSTNET': { // POSTNET 145 145 $arrcode = $this->barcode_postnet($code); 146 146 break; 147 147 } 148 case "CODABAR": { // CODABAR148 case 'CODABAR': { // CODABAR 149 149 $arrcode = $this->barcode_codabar($code); 150 150 break; … … 156 156 $this->barcode_array = $arrcode; 157 157 } 158 158 159 159 /** 160 160 * CODE 39 … … 209 209 $chr['+'] = '121112121'; 210 210 $chr['%'] = '111212121'; 211 211 212 212 $code = strtoupper($code); 213 213 if ($extended) { … … 223 223 } 224 224 // add start and stop codes 225 $code = "*".$code."*";226 227 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 1, "bcode"=> array());225 $code = '*'.$code.'*'; 226 227 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); 228 228 $k = 0; 229 229 for($i=0; $i < strlen($code); $i++) { … … 240 240 } 241 241 $w = $chr[$char]{$j}; 242 $bararray[ "bcode"][$k] = array("t" => $t, "w" => $w, "h" => 1, "p"=> 0);243 $bararray[ "maxw"] += $w;242 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); 243 $bararray['maxw'] += $w; 244 244 $k++; 245 245 } 246 $bararray[ "bcode"][$k] = array("t" => false, "w" => 1, "h" => 1, "p"=> 0);247 $bararray[ "maxw"] += 1;246 $bararray['bcode'][$k] = array('t' => false, 'w' => 1, 'h' => 1, 'p' => 0); 247 $bararray['maxw'] += 1; 248 248 $k++; 249 249 } 250 250 return $bararray; 251 251 } 252 252 253 253 /** 254 254 * Encode a string to be used for CODE 39 Extended mode. … … 300 300 return $code_ext; 301 301 } 302 302 303 303 /** 304 304 * Calculate CODE 39 checksum (modulo 43). … … 321 321 return $chars[$j]; 322 322 } 323 324 /** 325 * Interleaved 2 of 5 barcodes. 323 324 /** 325 * Interleaved 2 of 5 barcodes. 326 326 * Contains digits (0 to 9) and encodes the data in the width of both bars and spaces. 327 327 * @param string $code code to represent. … … 343 343 $chr['A'] = '11'; 344 344 $chr['Z'] = '21'; 345 345 346 346 if((strlen($code) % 2) != 0) { 347 347 // add leading zero if code-length is odd … … 350 350 // add start and stop codes 351 351 $code = 'AA'.strtolower($code).'ZA'; 352 353 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 1, "bcode"=> array());352 353 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); 354 354 $k = 0; 355 355 for($i=0; $i < strlen($code); $i=$i+2) { … … 361 361 } 362 362 // create a bar-space sequence 363 $seq = "";363 $seq = ''; 364 364 for($s=0; $s < strlen($chr[$char_bar]); $s++){ 365 365 $seq .= $chr[$char_bar]{$s} . $chr[$char_space]{$s}; … … 372 372 } 373 373 $w = $seq{$j}; 374 $bararray[ "bcode"][$k] = array("t" => $t, "w" => $w, "h" => 1, "p"=> 0);375 $bararray[ "maxw"] += $w;374 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); 375 $bararray['maxw'] += $w; 376 376 $k++; 377 377 } … … 379 379 return $bararray; 380 380 } 381 382 /** 383 * C128 barcodes. 384 * 381 382 /** 383 * C128 barcodes. 384 * 385 385 * @param string $code code to represent. 386 386 * @param string $type barcode type: A, B or C … … 388 388 * @access protected 389 389 */ 390 protected function barcode_c128($code, $type= "B") {390 protected function barcode_c128($code, $type='B') { 391 391 $chr = array( 392 392 '212222', /* 00 */ … … 499 499 '200000' /* END */ 500 500 ); 501 $keys = "";501 $keys = ''; 502 502 switch(strtoupper($type)) { 503 case "A": {503 case 'A': { 504 504 $startid = 103; 505 505 $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'; … … 509 509 break; 510 510 } 511 case "B": {511 case 'B': { 512 512 $startid = 104; 513 513 $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127); 514 514 break; 515 515 } 516 case "C": {516 case 'C': { 517 517 $startid = 105; 518 $keys = "";518 $keys = ''; 519 519 if ((strlen($code) % 2) != 0) { 520 520 //echo "The length of barcode value must be even ($code). You must pad the number with zeros.\n"; … … 524 524 $keys .= chr($i); 525 525 } 526 $new_code = "";526 $new_code = ''; 527 527 for ($i=0; $i < (strlen($code) / 2); $i++) { 528 528 $new_code .= chr(intval($code{(2 * $i)}.$code{(2 * $i + 1)})); … … 541 541 } 542 542 $check = ($sum % 103); 543 543 544 544 // add start, check and stop codes 545 545 $code = chr($startid).$code.chr($check).chr(106).chr(107); 546 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 1, "bcode"=> array());546 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); 547 547 $k = 0; 548 548 $len = strlen($code); … … 564 564 } 565 565 $w = $seq{$j}; 566 $bararray[ "bcode"][$k] = array("t" => $t, "w" => $w, "h" => 1, "p"=> 0);567 $bararray[ "maxw"] += $w;566 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); 567 $bararray['maxw'] += $w; 568 568 $k++; 569 569 } 570 570 } 571 return $bararray; 572 } 573 571 return $bararray; 572 } 573 574 574 /** 575 575 * EAN13 and UPC-A barcodes. … … 659 659 '9'=>array('A','B','B','A','B','A') 660 660 ); 661 662 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 1, "bcode"=> array());661 662 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); 663 663 $k = 0; 664 664 $seq = '101'; … … 682 682 $t = false; // space 683 683 } 684 $bararray[ "bcode"][$k] = array("t" => $t, "w" => $w, "h" => 1, "p"=> 0);685 $bararray[ "maxw"] += $w;684 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); 685 $bararray['maxw'] += $w; 686 686 $k++; 687 687 $w = 0; … … 690 690 return $bararray; 691 691 } 692 692 693 693 /** 694 694 * POSTNET barcodes. … … 711 711 9 => Array(2,1,2,1,1) 712 712 ); 713 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 2, "bcode"=> array());713 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array()); 714 714 $k = 0; 715 $code = str_replace( "-", "", $code);716 $code = str_replace( " ", "", $code);715 $code = str_replace('-', '', $code); 716 $code = str_replace(' ', '', $code); 717 717 $len = strlen($code); 718 718 // calculate checksum … … 724 724 return false; 725 725 } 726 $code .= "".(10 - ($sum % 10))."";726 $code .= ''.(10 - ($sum % 10)).''; 727 727 $len = strlen($code); 728 728 // start bar 729 $bararray[ "bcode"][$k++] = array("t" => 1, "w" => 1, "h" => 2, "p"=> 0);730 $bararray[ "bcode"][$k++] = array("t" => 0, "w" => 1, "h" => 2, "p"=> 0);731 $bararray[ "maxw"] += 2;729 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0); 730 $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); 731 $bararray['maxw'] += 2; 732 732 for ($i=0; $i < $len; $i++) { 733 733 for ($j=0; $j < 5; $j++) { 734 734 $h = $barlen[$code{$i}][$j]; 735 735 $p = floor(1 / $h); 736 $bararray[ "bcode"][$k++] = array("t" => 1, "w" => 1, "h" => $h, "p"=> $p);737 $bararray[ "bcode"][$k++] = array("t" => 0, "w" => 1, "h" => 2, "p"=> 0);738 $bararray[ "maxw"] += 2;736 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p); 737 $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); 738 $bararray['maxw'] += 2; 739 739 } 740 740 } 741 741 // end bar 742 $bararray[ "bcode"][$k++] = array("t" => 1, "w" => 1, "h" => 2, "p"=> 0);743 $bararray[ "maxw"] += 1;742 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0); 743 $bararray['maxw'] += 1; 744 744 return $bararray; 745 745 } 746 746 747 747 /** 748 748 * CODABAR barcodes. … … 774 774 'D' => '11122211' 775 775 ); 776 777 $bararray = array( "code" => $code, "maxw" => 0, "maxh" => 1, "bcode"=> array());776 777 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); 778 778 $k = 0; 779 779 $w = 0; 780 $seq = "";781 $code = "A".strtoupper($code)."A";780 $seq = ''; 781 $code = 'A'.strtoupper($code).'A'; 782 782 $len = strlen($code); 783 783 for($i=0; $i < $len; $i++) { … … 793 793 } 794 794 $w = $seq{$j}; 795 $bararray[ "bcode"][$k] = array("t" => $t, "w" => $w, "h" => 1, "p"=> 0);796 $bararray[ "maxw"] += $w;795 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); 796 $bararray['maxw'] += $w; 797 797 $k++; 798 798 } … … 800 800 return $bararray; 801 801 } 802 802 803 803 } // end of class 804 804 805 805 //============================================================+ 806 // END OF FILE 806 // END OF FILE 807 807 //============================================================+ 808 808 ?> trunk/lib/tcpdf/CHANGELOG.TXT
r1148 r1189 1 4.3.006 (2008-12-01) 2 - A regular expression on getHtmlDomArray() to find HTML tags was fixed. 3 4 4.3.005 (2008-11-25) 5 - makefont.php was fixed. 6 - Bug item #2339877 was fixed (false loop condition detected on WriteHTML()). 7 - Bug item #2336733 was fixed (lasth value update on Multicell() when border and fill are disabled). 8 - Bug item #2342303 was fixed (automatic page-break on Image() and ImageEPS()). 9 10 4.3.004 (2008-11-19) 11 - Function _textstring() was fixed (bug 2309051). 12 - All examples were updated. 13 14 4.3.003 (2008-11-18) 15 - CID-0 font bug was fixed. 16 - Some functions were optimized. 17 - Function getGroupPageNoFormatted() was added. 18 - Example n. 23 was updated. 19 20 4.3.002 (2008-11-17) 21 - Bug item #2305518 "CID-0 font don't work with encryption" was fixed. 22 23 4.3.001 (2008-11-17) 24 - Bug item #2300007 "download mimetype pdf" was fixed. 25 - Double quotes were replaced by single quotes to improve PHP performances. 26 - A bug relative to HTML cell borders was fixed. 27 28 4.3.000 (2008-11-14) 29 - The function setOpenCell() was added to set the top/bottom cell sides to be open or closed when the cell cross the page. 30 - A bug relative to list items indentation was fixed. 31 - A bug relative to borders on HTML tables and Multicell was fixed. 32 - A bug relative to rowspanned cells was fixed. 33 - A bug relative to html images across pages was fixed. 34 35 4.2.009 (2008-11-13) 36 - Spaces between li tags are now automatically removed. 37 38 4.2.008 (2008-11-12) 39 - A bug relative to fill color on next page was fixed. 40 41 4.2.007 (2008-11-12) 42 - The function setListIndentWidth() was added to set custom indentation widht for HTML lists. 43 44 4.2.006 (2008-11-06) 45 - A bug relative to HTML justification was fixed. 46 47 4.2.005 (2008-11-06) 48 - A bug relative to HTML justification was fixed. 49 - The methods formatPageNumber() and PageNoFormatted() were added to format page numbers. 50 - Default Footer() method was changed to use PageNoFormatted() instead of PageNo(). 51 - Example 6 was updated. 52 1 53 4.2.004 (2008-11-04) 2 54 - Bug item n. 2217039 "filename handling improvement" was fixed. 3 55 4 56 4.2.003 (2008-10-31) 5 57 - Font style bug was fixed. 6 58 7 59 4.2.002 (2008-10-31) 8 60 - Bug item #2210922 (htm element br not work) was fixed. 9 61 - Write() function was improved to support margin changes. 10 62 11 63 4.2.001 (2008-10-30) 12 64 - setHtmlVSpace($tagvs) function was added to set custom vertical spaces for HTML tags. 13 65 - writeHTML() function now support margin changes during execution. 14 66 - Signature of addHTMLVertSpace() function is changed. 15 67 16 68 4.2.000 (2008-10-29) 17 69 - htmlcolors.php was changed to support class-loaders. … … 27 79 - Example n. 10 was changed to support RTL mode. 28 80 - All examples were updated. 29 81 30 82 4.1.004 (2008-10-23) 31 83 - unicode_data.php was changed to support class-loaders. 32 84 - Bug item #2186040/2 (writeHTML margin problem) was fixed. 33 85 34 86 4.1.003 (2008-10-22) 35 87 - Bug item #2185399 was fixed (rowspan and page break). 36 88 - Bugs item #2186040 was fixed (writeHTML margin problem). 37 89 - Newline after table was removed. 38 90 39 91 4.1.002 (2008-10-21) 40 92 - Bug item #2184525 was fixed (rowspan on HTML cell). 41 93 42 94 4.1.001 (2008-10-21) 43 95 - Support for "start" attribute was added to HTML ordered list. … … 46 98 - Support for images on HTML lists was improved. 47 99 - Examples n. 1 and 6 were updated. 48 100 49 101 4.1.000 (2008-10-18) 50 102 - Page-break bug using HTML content was fixed. … … 53 105 - Justification alignment is now supported on HTML (see example n. 39). 54 106 - example_006.php was updated. 55 107 56 108 4.0.033 (2008-10-13) 57 109 - Bug n. 2157099 was fixed. … … 76 128 - Infinite loop bug was fixed [Bug item #130309]. 77 129 - Multicell() problem on Header() was fixed. 78 130 79 131 4.0.028 (2008-09-26) 80 132 - setLIsymbol() was added to set the LI symbol used on UL lists. 81 133 - Missing $padding and $encryption_key variables declarations were added [Bug item #2129058]. 82 134 83 135 4.0.027 (2008-09-19) 84 136 - Bug #2118588 "Undefined offset in tcpdf.php on line 9581" was fixed. 85 137 - arailunicid0.php font was updated. 86 138 - The problem of javascript form fields duplication after saving was fixed. 87 139 88 140 4.0.026 (2008-09-17) 89 141 - convertHTMLColorToDec() function was improved to support rgb(RR,GG,BB) notation. 90 142 - The following inline CSS attributes are now supported: text-decoration, color, background-color and font-size names: xx-small, x-small, small, medium, large, x-large, xx-large 91 143 - Example n. 6 was updated. 92 144 93 145 4.0.025 (2008-09-15) 94 146 - _putcidfont0 function was improved to include CJK fonts (Chinese, Japanese, Korean, CJK, Asian fonts) without embedding. 95 147 - arialunicid0 font was added (see the new example n. 38). 96 - The following Unicode to CID-0 tables were added on fonts folder: uni2cid_ak12.php, uni2cid_aj16.php, uni2cid_ag15.php, uni2cid_ac15.php. 97 148 - The following Unicode to CID-0 tables were added on fonts folder: uni2cid_ak12.php, uni2cid_aj16.php, uni2cid_ag15.php, uni2cid_ac15.php. 149 98 150 4.0.024 (2008-09-12) 99 151 - "stripos" function was replaced with "strpos + strtolower" for backward compatibility with PHP4. … … 106 158 - Bookmark() function was improved to fix wrong levels. 107 159 - $lasth changes after header/footer calls were fixed. 108 160 109 161 4.0.023 (2008-09-05) 110 162 - Some HTML related problems were fixed. 111 163 - Image alignment on HTML was changed, now it always defaults to the normal mode (see example_006.php). 112 164 113 165 4.0.022 (2008-08-28) 114 166 - Line height on HTML was fixed. 115 167 - Image inside an HTML cell problem was fixed. 116 168 - A new "zarbold" persian font was added. 117 169 118 170 4.0.021 (2008-08-24) 119 171 - HTTP headers were fixed on Output function(). … … 166 218 4.0.012 (2008-07-24) 167 219 - Addpage(), Header() and Footer() functions were changed to simplify the implementation of external header/footer functions. 168 - The following functions were added: 220 - The following functions were added: 169 221 setHeader() 170 222 setFooter() … … 179 231 getHeaderMargin() 180 232 getFooterMargin() 181 233 182 234 4.0.011 (2008-07-23) 183 235 - Font support was improved. … … 220 272 4.0.002 (2008-07-07) 221 273 - Bug [2000861] was still unfixed and has been fixed. 222 274 223 275 4.0.001 (2008-07-05) 224 276 - Bug [2000861] was fixed. … … 238 290 - barcodes.php was updated. 239 291 - All examples were updated. 240 292 241 293 ------------------------------------------------------------ 242 294 … … 246 298 - Image handling was improved. 247 299 - All examples were updated. 248 300 249 301 3.1.000 (2008-06-11) 250 302 - setPDFVersion() was added to change the default PDF version (currently 1.7). … … 265 317 - source code cleanup. 266 318 - All examples were updated and new examples were added. 267 319 268 320 3.0.015 (2008-06-06) 269 321 - AddPage() function signature is changed to include page format. … … 296 348 3.0.011 (2008-05-23) 297 349 - CMYK color support was added to all graphic functions. 298 - HTML table support was improved: 350 - HTML table support was improved: 299 351 -- now it's possible to include additional html tags inside a cell; 300 352 -- colspan attribute was added. … … 318 370 - AlMohanad (arabic) font was added. 319 371 - C128 barcode bugs were fixed. 320 372 321 373 3.0.006 (2008-04-21) 322 374 - Condition to check negative width values was added. … … 336 388 - Write() functions now return the number of cells and not the number of lines. 337 389 - TCPDF is released under LGPL 2.1, or any later version. 338 390 339 391 3.0.001 (2008-05-28) 340 392 - _legacyparsejpeg() and _legacyparsepng() were renamed _parsejpeg() and _parsepng(). … … 342 394 - all examples were updated. 343 395 - example 27 was added to show various barcodes. 344 396 345 397 3.0.000 (2008-03-27) 346 398 - private function pixelsToMillimeters() was changed to public function pixelsToUnits() to fix html image size bug. … … 365 417 - example_006.php was updated. 366 418 - private function setUserRights() was added to release user rights on Acrobat Reader (this allows to display forms, see example 14) 367 419 368 420 2.8.000 (2008-03-20) 369 421 - Private variables were changed to protected. … … 373 425 - Text vertical alignment on cells were fixed. 374 426 - Examples were updated to reflect changes. 375 427 376 428 2.7.002 (2008-03-13) 377 429 - Bug "[1912142] Encrypted PDF created/modified date" was fixed. 378 430 379 431 2.7.001 (2008-03-10) 380 432 - Cell justification was fixed for non-unicode mode. … … 386 438 - Write() speed was improved for non-arabic strings. 387 439 - Example n. 20 was changed. 388 440 389 441 2.6.000 (2008-03-07) 390 442 - various alignments bugs were fixed. 391 443 392 444 2.5.000 (2008-03-07) 393 445 - Several bugs were fixed. … … 412 464 - AddPage() Header() and Footer() were fixed. 413 465 - Documentation is now available on http://www.tcpdf.org 414 466 415 467 2.2.003 (2008-03-03) 416 468 - [1894853] Performance of MultiCell() was improved. 417 469 - RadioButton and ListBox functions were added. 418 470 - javascript form functions were rewritten and properties names are changed. The properties function supported by form fields are listed on Possible values are listed on http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf. 419 471 420 472 2.2.002 (2008-02-28) 421 473 - [1900495] html images path was fixed. … … 425 477 - The bug "[1894700] bug with replace relative path" was fixed 426 478 - Justification was fixed 427 479 428 480 2.2.000 (2008-02-12) 429 481 - fixed javascript bug introduced with latest release … … 433 485 - Bookmank function was added ([1578250] Table of contents). 434 486 - Javascript and Form fields support was added ([1796359] Form fields). 435 487 436 488 2.1.001 (2008-02-10) 437 489 - The bug "[1885776] Race Condition in function justitfy" was fixed. 438 - The bug "[1890217] xpdf complains that pdf is incorrect" was fixed. 490 - The bug "[1890217] xpdf complains that pdf is incorrect" was fixed. 439 491 440 492 2.1.000 (2008-01-07) … … 495 547 Polygon 496 548 RegularPolygon 497 549 498 550 2.0.000 (2008-01-04) 499 551 - RTL (Right-To-Left) languages support was added. Language direction is set using the $l['a_meta_dir'] setting on /configure/language/xxx.php language files. … … 522 574 - fixed htmlentities conversion. 523 575 - MultiCell() function returns the number of cells. 524 576 525 577 1.53.0.TC033 (2007-07-30) 526 578 - fixed bug 1762550: case sensitive for font files … … 535 587 1.53.0.TC031 (2007-03-20) 536 588 - ToUnicode CMap were added on _puttruetypeunicode function. Now you may search and copy unicode text. 537 589 538 590 1.53.0.TC030 (2007-03-06) 539 591 - fixed bug on PHP4 version. 540 592 541 593 1.53.0.TC029 (2007-03-06) 542 594 - DejaVu Fonts were added. 543 595 544 596 1.53.0.TC028 (2007-03-03) 545 597 - MultiCell function signature were changed: the $ln parameter were added. Check documentation for further information. … … 550 602 - $attr['face'] bug were fixed. 551 603 - K_TCPDF_EXTERNAL_CONFIG control where introduced on /config/tcpdf_config.php to use external configuration files. 552 604 553 605 1.53.0.TC026 (2006-10-28) 554 606 - writeHTML function call were fixed on examples. … … 557 609 - Bugs item #1421290 were fixed (0D - 0A substitution in some characters) 558 610 - Bugs item #1573174 were fixed (MultiCell documentation) 559 611 560 612 1.53.0.TC024 (2006-09-26) 561 613 - getPageHeight() function were fixed (bug 1543476). 562 614 - fixed missing breaks on closedHTMLTagHandler function (bug 1535263). 563 615 - fixed extra spaces on Write function (bug 1535262). 564 616 565 617 1.53.0.TC023 (2006-08-04) 566 618 - paths to barcode directory were fixed. 567 619 - documentation were updated. 568 620 569 621 1.53.0.TC022 (2006-07-16) 570 - fixed bug: [ 1516858 ] Probs with PHP autoloader and class_exists() 622 - fixed bug: [ 1516858 ] Probs with PHP autoloader and class_exists() 571 623 572 624 1.53.0.TC021 (2006-07-01) 573 625 - HTML attributes with whitespaces are now supported (thanks to Nelson Benitez for his support) 574 626 575 627 1.53.0.TC020 (2006-06-23) 576 628 - code cleanup 577 629 578 630 1.53.0.TC019 (2006-05-21) 579 631 - fixed <strong> and <em> closing tags 580 632
