mirror of
https://github.com/vdm-io/tcpdf.git
synced 2024-11-22 12:55:10 +00:00
6.0.044 (2013-11-10)
- Bug #857 "Undefined offset error" was fixed. - The uniord method now uses a static cache to improve performances (thanks to Mathieu Masseboeuf for the sugegstion). - Two bugs in the TCPDF_FONTS class were fixed.
This commit is contained in:
parent
7745dbfdf1
commit
2a323b71aa
@ -1,3 +1,8 @@
|
|||||||
|
6.0.044 (2013-11-10)
|
||||||
|
- Bug #857 "Undefined offset error" was fixed.
|
||||||
|
- The uniord method now uses a static cache to improve performances (thanks to Mathieu Masseboeuf for the sugegstion).
|
||||||
|
- Two bugs in the TCPDF_FONTS class were fixed.
|
||||||
|
|
||||||
6.0.043 (2013-10-29)
|
6.0.043 (2013-10-29)
|
||||||
- Bug #854 "CSS instruction display" was fixed.
|
- Bug #854 "CSS instruction display" was fixed.
|
||||||
|
|
||||||
|
@ -8,8 +8,8 @@ http://sourceforge.net/donate/index.php?group_id=128076
|
|||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
|
|
||||||
Name: TCPDF
|
Name: TCPDF
|
||||||
Version: 6.0.043
|
Version: 6.0.044
|
||||||
Release date: 2013-10-29
|
Release date: 2013-11-10
|
||||||
Author: Nicola Asuni
|
Author: Nicola Asuni
|
||||||
|
|
||||||
Copyright (c) 2002-2013:
|
Copyright (c) 2002-2013:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tecnick.com/tcpdf",
|
"name": "tecnick.com/tcpdf",
|
||||||
"version": "6.0.043",
|
"version": "6.0.044",
|
||||||
"homepage": "http://www.tcpdf.org/",
|
"homepage": "http://www.tcpdf.org/",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"description": "TCPDF is a PHP class for generating PDF documents.",
|
"description": "TCPDF is a PHP class for generating PDF documents.",
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
//============================================================+
|
//============================================================+
|
||||||
// File name : tcpdf_fonts.php
|
// File name : tcpdf_fonts.php
|
||||||
// Version : 1.0.009
|
// Version : 1.0.010
|
||||||
// Begin : 2008-01-01
|
// Begin : 2008-01-01
|
||||||
// Last Update : 2013-09-04
|
// Last Update : 2013-11-10
|
||||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
||||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
@ -42,11 +42,17 @@
|
|||||||
* @class TCPDF_FONTS
|
* @class TCPDF_FONTS
|
||||||
* Font methods for TCPDF library.
|
* Font methods for TCPDF library.
|
||||||
* @package com.tecnick.tcpdf
|
* @package com.tecnick.tcpdf
|
||||||
* @version 1.0.009
|
* @version 1.0.010
|
||||||
* @author Nicola Asuni - info@tecnick.com
|
* @author Nicola Asuni - info@tecnick.com
|
||||||
*/
|
*/
|
||||||
class TCPDF_FONTS {
|
class TCPDF_FONTS {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Static cache used for speed up uniord performances
|
||||||
|
* @protected
|
||||||
|
*/
|
||||||
|
protected static $cache_uniord = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable).
|
* Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable).
|
||||||
* @param $fontfile (string) Font file (full path).
|
* @param $fontfile (string) Font file (full path).
|
||||||
@ -607,7 +613,7 @@ class TCPDF_FONTS {
|
|||||||
// combine high and low bytes
|
// combine high and low bytes
|
||||||
$c = (($i << 8) + $j);
|
$c = (($i << 8) + $j);
|
||||||
$idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
|
$idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
|
||||||
$g = ($glyphIndexArray[$idRangeOffset] + $idDelta[$k]) % 65536;
|
$g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536;
|
||||||
if ($g < 0) {
|
if ($g < 0) {
|
||||||
$g = 0;
|
$g = 0;
|
||||||
}
|
}
|
||||||
@ -1074,7 +1080,7 @@ class TCPDF_FONTS {
|
|||||||
$c = (($i << 8) + $j);
|
$c = (($i << 8) + $j);
|
||||||
if (isset($subsetchars[$c])) {
|
if (isset($subsetchars[$c])) {
|
||||||
$idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
|
$idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
|
||||||
$g = ($glyphIndexArray[$idRangeOffset] + $idDelta[$k]) % 65536;
|
$g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536;
|
||||||
if ($g < 0) {
|
if ($g < 0) {
|
||||||
$g = 0;
|
$g = 0;
|
||||||
}
|
}
|
||||||
@ -1756,6 +1762,20 @@ class TCPDF_FONTS {
|
|||||||
return $outstr;
|
return $outstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts UTF-8 character to integer value.<br>
|
||||||
|
* Uses the getUniord() method if the value is not cached.
|
||||||
|
* @param $uch (string) character string to process.
|
||||||
|
* @return integer Unicode value
|
||||||
|
* @public static
|
||||||
|
*/
|
||||||
|
public static function uniord($uch) {
|
||||||
|
if (!isset(self::$cache_uniord[$uch])) {
|
||||||
|
self::$cache_uniord[$uch] = self::getUniord($uch);
|
||||||
|
}
|
||||||
|
return self::$cache_uniord[$uch];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts UTF-8 character to integer value.<br>
|
* Converts UTF-8 character to integer value.<br>
|
||||||
* Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>
|
* Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>
|
||||||
@ -1789,7 +1809,7 @@ class TCPDF_FONTS {
|
|||||||
* @author Nicola Asuni
|
* @author Nicola Asuni
|
||||||
* @public static
|
* @public static
|
||||||
*/
|
*/
|
||||||
public static function uniord($uch) {
|
public static function getUniord($uch) {
|
||||||
if (function_exists('mb_convert_encoding')) {
|
if (function_exists('mb_convert_encoding')) {
|
||||||
list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8'));
|
list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8'));
|
||||||
if ($char >= 0) {
|
if ($char >= 0) {
|
||||||
|
@ -55,7 +55,7 @@ class TCPDF_STATIC {
|
|||||||
* Current TCPDF version.
|
* Current TCPDF version.
|
||||||
* @private static
|
* @private static
|
||||||
*/
|
*/
|
||||||
private static $tcpdf_version = '6.0.043';
|
private static $tcpdf_version = '6.0.044';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String alias for total number of pages.
|
* String alias for total number of pages.
|
||||||
|
21
tcpdf.php
21
tcpdf.php
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
//============================================================+
|
//============================================================+
|
||||||
// File name : tcpdf.php
|
// File name : tcpdf.php
|
||||||
// Version : 6.0.043
|
// Version : 6.0.044
|
||||||
// Begin : 2002-08-03
|
// Begin : 2002-08-03
|
||||||
// Last Update : 2013-10-29
|
// Last Update : 2013-10-29
|
||||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
||||||
@ -104,7 +104,7 @@
|
|||||||
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
||||||
* @package com.tecnick.tcpdf
|
* @package com.tecnick.tcpdf
|
||||||
* @author Nicola Asuni
|
* @author Nicola Asuni
|
||||||
* @version 6.0.043
|
* @version 6.0.044
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TCPDF configuration
|
// TCPDF configuration
|
||||||
@ -128,7 +128,7 @@ require_once(dirname(__FILE__).'/include/tcpdf_static.php');
|
|||||||
* TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
|
* TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
|
||||||
* @package com.tecnick.tcpdf
|
* @package com.tecnick.tcpdf
|
||||||
* @brief PHP class for generating PDF documents without requiring external extensions.
|
* @brief PHP class for generating PDF documents without requiring external extensions.
|
||||||
* @version 6.0.043
|
* @version 6.0.044
|
||||||
* @author Nicola Asuni - info@tecnick.com
|
* @author Nicola Asuni - info@tecnick.com
|
||||||
*/
|
*/
|
||||||
class TCPDF {
|
class TCPDF {
|
||||||
@ -9404,7 +9404,7 @@ class TCPDF {
|
|||||||
}
|
}
|
||||||
if (!TCPDF_STATIC::empty_string($this->keywords)) {
|
if (!TCPDF_STATIC::empty_string($this->keywords)) {
|
||||||
// Keywords associated with the document.
|
// Keywords associated with the document.
|
||||||
$out .= ' /Keywords '.$this->_textstring($this->keywords.' TCPDF', $oid);
|
$out .= ' /Keywords '.$this->_textstring($this->keywords, $oid);
|
||||||
}
|
}
|
||||||
if (!TCPDF_STATIC::empty_string($this->creator)) {
|
if (!TCPDF_STATIC::empty_string($this->creator)) {
|
||||||
// If the document was converted to PDF from another format, the name of the conforming product that created the original document from which it was converted.
|
// If the document was converted to PDF from another format, the name of the conforming product that created the original document from which it was converted.
|
||||||
@ -9473,7 +9473,7 @@ class TCPDF {
|
|||||||
$xmp .= "\t\t\t".'</dc:description>'."\n";
|
$xmp .= "\t\t\t".'</dc:description>'."\n";
|
||||||
$xmp .= "\t\t\t".'<dc:subject>'."\n";
|
$xmp .= "\t\t\t".'<dc:subject>'."\n";
|
||||||
$xmp .= "\t\t\t\t".'<rdf:Bag>'."\n";
|
$xmp .= "\t\t\t\t".'<rdf:Bag>'."\n";
|
||||||
$xmp .= "\t\t\t\t\t".'<rdf:li>'.TCPDF_STATIC::_escapeXML($this->keywords).' TCPDF</rdf:li>'."\n";
|
$xmp .= "\t\t\t\t\t".'<rdf:li>'.TCPDF_STATIC::_escapeXML($this->keywords).'</rdf:li>'."\n";
|
||||||
$xmp .= "\t\t\t\t".'</rdf:Bag>'."\n";
|
$xmp .= "\t\t\t\t".'</rdf:Bag>'."\n";
|
||||||
$xmp .= "\t\t\t".'</dc:subject>'."\n";
|
$xmp .= "\t\t\t".'</dc:subject>'."\n";
|
||||||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||||
@ -9496,7 +9496,7 @@ class TCPDF {
|
|||||||
$xmp .= "\t\t\t".'<xmp:MetadataDate>'.$doccreationdate.'</xmp:MetadataDate>'."\n";
|
$xmp .= "\t\t\t".'<xmp:MetadataDate>'.$doccreationdate.'</xmp:MetadataDate>'."\n";
|
||||||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||||
$xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
|
$xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
|
||||||
$xmp .= "\t\t\t".'<pdf:Keywords>'.TCPDF_STATIC::_escapeXML($this->keywords).' TCPDF</pdf:Keywords>'."\n";
|
$xmp .= "\t\t\t".'<pdf:Keywords>'.TCPDF_STATIC::_escapeXML($this->keywords).'</pdf:Keywords>'."\n";
|
||||||
$xmp .= "\t\t\t".'<pdf:Producer>'.TCPDF_STATIC::_escapeXML(TCPDF_STATIC::getTCPDFProducer()).'</pdf:Producer>'."\n";
|
$xmp .= "\t\t\t".'<pdf:Producer>'.TCPDF_STATIC::_escapeXML(TCPDF_STATIC::getTCPDFProducer()).'</pdf:Producer>'."\n";
|
||||||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||||
$xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
|
$xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
|
||||||
@ -17613,6 +17613,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||||||
case 'l': {
|
case 'l': {
|
||||||
// get current X position
|
// get current X position
|
||||||
preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $xmatches);
|
preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $xmatches);
|
||||||
|
if (!isset($xmatches[1])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
$currentxpos = $xmatches[1];
|
$currentxpos = $xmatches[1];
|
||||||
$textpos = $currentxpos;
|
$textpos = $currentxpos;
|
||||||
if (($strcount <= $maxkk) AND ($strpiece[2][0] == 'Td')) {
|
if (($strcount <= $maxkk) AND ($strpiece[2][0] == 'Td')) {
|
||||||
@ -17636,6 +17639,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $xmatches);
|
preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $xmatches);
|
||||||
|
if (!isset($xmatches[1])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
$currentxpos = $xmatches[1];
|
$currentxpos = $xmatches[1];
|
||||||
global $x_diff, $w_diff;
|
global $x_diff, $w_diff;
|
||||||
$x_diff = 0;
|
$x_diff = 0;
|
||||||
@ -17675,6 +17681,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||||||
case 'c': {
|
case 'c': {
|
||||||
// get current X position
|
// get current X position
|
||||||
preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $xmatches);
|
preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $xmatches);
|
||||||
|
if (!isset($xmatches[1])) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
$currentxpos = $xmatches[1];
|
$currentxpos = $xmatches[1];
|
||||||
// justify block
|
// justify block
|
||||||
$pmid = preg_replace_callback('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$xmatches[4].')[\s]('.$xmatches[5].')[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x',
|
$pmid = preg_replace_callback('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$xmatches[4].')[\s]('.$xmatches[5].')[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x',
|
||||||
|
Loading…
Reference in New Issue
Block a user