Updating TCPDF library
This commit is contained in:
parent
1a57ad7292
commit
052824e4b7
28 changed files with 33338 additions and 968 deletions
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf.php
|
||||
// Version : 6.2.6
|
||||
// Version : 6.2.13
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2015-01-28
|
||||
// Last Update : 2015-06-18
|
||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||
// -------------------------------------------------------------------
|
||||
|
@ -104,7 +104,7 @@
|
|||
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @author Nicola Asuni
|
||||
* @version 6.2.6
|
||||
* @version 6.2.8
|
||||
*/
|
||||
|
||||
// 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>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @brief PHP class for generating PDF documents without requiring external extensions.
|
||||
* @version 6.2.6
|
||||
* @version 6.2.8
|
||||
* @author Nicola Asuni - info@tecnick.com
|
||||
*/
|
||||
class TCPDF {
|
||||
|
@ -1822,9 +1822,9 @@ class TCPDF {
|
|||
/**
|
||||
* This is the class constructor.
|
||||
* It allows to set up the page format, the orientation and the measure unit used in all the methods (except for the font sizes).
|
||||
*
|
||||
*
|
||||
* IMPORTANT: Please note that this method sets the mb_internal_encoding to ASCII, so if you are using the mbstring module functions with TCPDF you need to correctly set/unset the mb_internal_encoding when needed.
|
||||
*
|
||||
*
|
||||
* @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or Portrait (default)</li><li>L or Landscape</li><li>'' (empty string) for automatic orientation</li></ul>
|
||||
* @param $unit (string) User measure unit. Possible values are:<ul><li>pt: point</li><li>mm: millimeter (default)</li><li>cm: centimeter</li><li>in: inch</li></ul><br />A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit.
|
||||
* @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
|
||||
|
@ -4691,7 +4691,7 @@ class TCPDF {
|
|||
* Defines the page and position a link points to.
|
||||
* @param $link (int) The link identifier returned by AddLink()
|
||||
* @param $y (float) Ordinate of target position; -1 indicates the current position. The default value is 0 (top of page)
|
||||
* @param $page (int) Number of target page; -1 indicates the current page (default value). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages.
|
||||
* @param $page (int) Number of target page; -1 indicates the current page (default value). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages.
|
||||
* @public
|
||||
* @since 1.5
|
||||
* @see AddLink()
|
||||
|
@ -5748,7 +5748,7 @@ class TCPDF {
|
|||
* @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width.
|
||||
* @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. This feature works only when $ishtml=false.
|
||||
* @param $valign (string) Vertical alignment of text (requires $maxh = $h > 0). Possible values are:<ul><li>T: TOP</li><li>M: middle</li><li>B: bottom</li></ul>. This feature works only when $ishtml=false and the cell must fit in a single page.
|
||||
* @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and wqual to $h.
|
||||
* @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and equal to $h.
|
||||
* @return int Return the number of cells or 1 for html mode.
|
||||
* @public
|
||||
* @since 1.3
|
||||
|
@ -5944,7 +5944,9 @@ class TCPDF {
|
|||
if ($startpage == $endpage) {
|
||||
// single page
|
||||
for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column
|
||||
$this->selectColumn($column);
|
||||
if ($column != $this->current_column) {
|
||||
$this->selectColumn($column);
|
||||
}
|
||||
if ($this->rtl) {
|
||||
$this->x -= $mc_margin['R'];
|
||||
} else {
|
||||
|
@ -5973,7 +5975,9 @@ class TCPDF {
|
|||
} // end for each column
|
||||
} elseif ($page == $startpage) { // first page
|
||||
for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column
|
||||
$this->selectColumn($column);
|
||||
if ($column != $this->current_column) {
|
||||
$this->selectColumn($column);
|
||||
}
|
||||
if ($this->rtl) {
|
||||
$this->x -= $mc_margin['R'];
|
||||
} else {
|
||||
|
@ -5992,7 +5996,9 @@ class TCPDF {
|
|||
} // end for each column
|
||||
} elseif ($page == $endpage) { // last page
|
||||
for ($column = 0; $column <= $endcolumn; ++$column) { // for each column
|
||||
$this->selectColumn($column);
|
||||
if ($column != $this->current_column) {
|
||||
$this->selectColumn($column);
|
||||
}
|
||||
if ($this->rtl) {
|
||||
$this->x -= $mc_margin['R'];
|
||||
} else {
|
||||
|
@ -8358,7 +8364,7 @@ class TCPDF {
|
|||
break;
|
||||
}
|
||||
case 'link': {
|
||||
if (is_string($pl['txt'])) {
|
||||
if (is_string($pl['txt']) && !empty($pl['txt'])) {
|
||||
if ($pl['txt'][0] == '#') {
|
||||
// internal destination
|
||||
$annots .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($pl['txt'], 1));
|
||||
|
@ -9798,7 +9804,7 @@ class TCPDF {
|
|||
//$out .= ' /XFA ';
|
||||
$out .= ' >>';
|
||||
// signatures
|
||||
if ($this->sign AND isset($this->signature_data['cert_type'])
|
||||
if ($this->sign AND isset($this->signature_data['cert_type'])
|
||||
AND (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A'))) {
|
||||
if ($this->signature_data['cert_type'] > 0) {
|
||||
$out .= ' /Perms << /DocMDP '.($this->sig_obj_id + 1).' 0 R >>';
|
||||
|
@ -10362,7 +10368,7 @@ class TCPDF {
|
|||
* @public
|
||||
*/
|
||||
public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) {
|
||||
if (isset($url[1]) AND ($url[0] == '#')) {
|
||||
if (isset($url[1]) AND ($url[0] == '#') AND is_numeric($url[1])) {
|
||||
// convert url to internal link
|
||||
$lnkdata = explode(',', $url);
|
||||
if (isset($lnkdata[0]) ) {
|
||||
|
@ -10632,8 +10638,7 @@ class TCPDF {
|
|||
*/
|
||||
protected function _UEvalue() {
|
||||
$hashkey = hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UKS'], true);
|
||||
$iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
|
||||
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv);
|
||||
return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10683,8 +10688,7 @@ class TCPDF {
|
|||
*/
|
||||
protected function _OEvalue() {
|
||||
$hashkey = hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OKS'].$this->encryptdata['U'], true);
|
||||
$iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
|
||||
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv);
|
||||
return TCPDF_STATIC::_AESnopad($hashkey, $this->encryptdata['key']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10739,8 +10743,7 @@ class TCPDF {
|
|||
}
|
||||
$perms .= 'adb'; // bytes 9-11
|
||||
$perms .= 'nick'; // bytes 12-15
|
||||
$iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB));
|
||||
$this->encryptdata['perms'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptdata['key'], $perms, MCRYPT_MODE_ECB, $iv);
|
||||
$this->encryptdata['perms'] = TCPDF_STATIC::_AESnopad($this->encryptdata['key'], $perms);
|
||||
} else { // RC4-40, RC4-128, AES-128
|
||||
// Pad passwords
|
||||
$this->encryptdata['user_password'] = substr($this->encryptdata['user_password'].TCPDF_STATIC::$enc_padding, 0, 32);
|
||||
|
@ -10858,10 +10861,13 @@ class TCPDF {
|
|||
$this->encryptdata['StrF'] = 'StdCF';
|
||||
}
|
||||
if ($mode > 1) { // AES
|
||||
if (!extension_loaded('mcrypt')) {
|
||||
$this->Error('AES encryption requires mcrypt library (http://www.php.net/manual/en/mcrypt.requirements.php).');
|
||||
if (!extension_loaded('openssl') && !extension_loaded('mcrypt')) {
|
||||
$this->Error('AES encryption requires openssl or mcrypt extension (http://www.php.net/manual/en/mcrypt.requirements.php).');
|
||||
}
|
||||
if (mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) {
|
||||
if (extension_loaded('openssl') && !in_array('aes-256-cbc', openssl_get_cipher_methods())) {
|
||||
$this->Error('AES encryption requires openssl/aes-256-cbc cypher.');
|
||||
}
|
||||
if (extension_loaded('mcrypt') && mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) {
|
||||
$this->Error('AES encryption requires MCRYPT_RIJNDAEL_128 cypher.');
|
||||
}
|
||||
if (($mode == 3) AND !function_exists('hash')) {
|
||||
|
@ -17723,7 +17729,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$spacew = ($spacewidth * $ns);
|
||||
}
|
||||
$offset = $strpiece[2][1] + strlen($strpiece[2][0]);
|
||||
$epsposend = strpos($pmid, $this->epsmarker.'Q', $offset);
|
||||
$epsposend = strpos($pmid, $this->epsmarker.'Q', $offset);
|
||||
if ($epsposend !== null) {
|
||||
$epsposend += strlen($this->epsmarker.'Q');
|
||||
$epsposbeg = strpos($pmid, 'q'.$this->epsmarker, $offset);
|
||||
|
@ -18649,7 +18655,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$this->lispacer = $prev_lispacer;
|
||||
if ($ln AND (!($cell AND ($dom[$key-1]['value'] == 'table')))) {
|
||||
$this->Ln($this->lasth);
|
||||
if ($this->y < $maxbottomliney) {
|
||||
if (($this->y < $maxbottomliney) AND ($startlinepage == $this->page)) {
|
||||
$this->y = $maxbottomliney;
|
||||
}
|
||||
}
|
||||
|
@ -19427,8 +19433,9 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$prev_page = $this->page;
|
||||
$this->setPage($dom[($dom[$key]['parent'])]['endpage']);
|
||||
if ($this->num_columns > 1) {
|
||||
if ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1)))
|
||||
OR (($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']) AND ($prev_page < $this->page))) {
|
||||
if (($prev_page < $this->page)
|
||||
AND ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1)))
|
||||
OR ($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']))) {
|
||||
// page jump
|
||||
$this->selectColumn(0);
|
||||
$dom[($dom[$key]['parent'])]['endcolumn'] = 0;
|
||||
|
@ -19748,7 +19755,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
break;
|
||||
}
|
||||
case 'a': {
|
||||
$this->HREF = '';
|
||||
$this->HREF = array();
|
||||
break;
|
||||
}
|
||||
case 'sup': {
|
||||
|
@ -23680,7 +23687,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the opening SVG element handler function for the XML parser. (*** TO BE COMPLETED ***)
|
||||
* @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler.
|
||||
|
|
Reference in a new issue