TCPDF 6.3.5
This commit is contained in:
parent
95bdb04949
commit
aaddb6eead
|
@ -966,9 +966,8 @@ lib/3rdParty/composer/ramsey B 2018 Be
|
|||
lib/3rdParty/composer/spomky-labs B 2018 Spomky-Labs
|
||||
lib/3rdParty/composer/symfony B 2019 Fabien Potencier
|
||||
lib/3rdParty/composer/web-auth B 2018 Spomky-Labs
|
||||
lib/3rdParty/tcpdf D 2018 Nicola Asuni - Tecnick.com LTD
|
||||
lib/3rdParty/tcpdf/fonts/DejaVu*.ttf A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/tcpdf/fonts/DejaVu*.z A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/tcpdf D 2020 Nicola Asuni - Tecnick.com LTD
|
||||
lib/3rdParty/tcpdf/fonts/dejavu*.z A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/phpseclib B 2019 TerraFrost and other contributors
|
||||
lib/3rdParty/Monolog B 2011 Jordi Boggiano
|
||||
lib/3rdParty/Psr B 2012 PHP Framework Interoperability Group
|
||||
|
|
|
@ -965,9 +965,8 @@ lib/3rdParty/composer/ramsey B 2018 Be
|
|||
lib/3rdParty/composer/spomky-labs B 2018 Spomky-Labs
|
||||
lib/3rdParty/composer/symfony B 2019 Fabien Potencier
|
||||
lib/3rdParty/composer/web-auth B 2018 Spomky-Labs
|
||||
lib/3rdParty/tcpdf D 2018 Nicola Asuni - Tecnick.com LTD
|
||||
lib/3rdParty/tcpdf/fonts/DejaVu*.ttf A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/tcpdf/fonts/DejaVu*.z A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/tcpdf D 2020 Nicola Asuni - Tecnick.com LTD
|
||||
lib/3rdParty/tcpdf/fonts/dejavu*.z A Public Domain, Bitstream, Inc., Tavmjong Bah
|
||||
lib/3rdParty/phpseclib B 2019 TerraFrost and other contributors
|
||||
lib/3rdParty/Monolog B 2011 Jordi Boggiano
|
||||
lib/3rdParty/Psr B 2012 PHP Framework Interoperability Group
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
* **category** Library
|
||||
* **author** Nicola Asuni <info@tecnick.com>
|
||||
* **copyright** 2002-2018 Nicola Asuni - Tecnick.com LTD
|
||||
* **copyright** 2002-2020 Nicola Asuni - Tecnick.com LTD
|
||||
* **license** http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
|
||||
* **link** http://www.tcpdf.org
|
||||
* **source** https://github.com/tecnickcom/TCPDF
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
6.3.5
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tecnickcom/tcpdf",
|
||||
"version": "6.2.26",
|
||||
"version": "6.3.5",
|
||||
"homepage": "http://www.tcpdf.org/",
|
||||
"type": "library",
|
||||
"description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
|
||||
|
@ -13,7 +13,7 @@
|
|||
"pdf417",
|
||||
"barcodes"
|
||||
],
|
||||
"license": "LGPL-3.0",
|
||||
"license": "LGPL-3.0-only",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicola Asuni",
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
* Default images directory.
|
||||
* By default it is automatically set but you can also set it as a fixed string to improve performances.
|
||||
*/
|
||||
define ('K_PATH_IMAGES', '');
|
||||
//define ('K_PATH_IMAGES', '');
|
||||
|
||||
/**
|
||||
* Deafult image logo used be the default Header() method.
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -629,7 +629,7 @@ class Datamatrix {
|
|||
if ($numch[ENC_C40] == $numch[ENC_X12]) {
|
||||
$k = ($pos + $charscount + 1);
|
||||
while ($k < $data_length) {
|
||||
$tmpchr = ord($data{$k});
|
||||
$tmpchr = ord($data[$k]);
|
||||
if ($this->isCharMode($tmpchr, ENC_X12)) {
|
||||
return ENC_X12;
|
||||
} elseif (!($this->isCharMode($tmpchr, ENC_X12) OR $this->isCharMode($tmpchr, ENC_C40))) {
|
||||
|
|
|
@ -878,7 +878,7 @@ class PDF417 {
|
|||
$txtarr = array(); // array of characters and sub-mode switching characters
|
||||
$codelen = strlen($code);
|
||||
for ($i = 0; $i < $codelen; ++$i) {
|
||||
$chval = ord($code{$i});
|
||||
$chval = ord($code[$i]);
|
||||
if (($k = array_search($chval, $this->textsubmodes[$submode])) !== false) {
|
||||
// we are on the same sub-mode
|
||||
$txtarr[] = $k;
|
||||
|
@ -888,7 +888,7 @@ class PDF417 {
|
|||
// search new sub-mode
|
||||
if (($s != $submode) AND (($k = array_search($chval, $this->textsubmodes[$s])) !== false)) {
|
||||
// $s is the new submode
|
||||
if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code{($i + 1)}), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) {
|
||||
if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code[($i + 1)]), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) {
|
||||
// shift (temporary change only for this char)
|
||||
if ($s == 3) {
|
||||
// shift to puntuaction
|
||||
|
@ -952,7 +952,7 @@ class PDF417 {
|
|||
$cw = array_merge($cw, $cw6);
|
||||
} else {
|
||||
for ($i = 0; $i < $sublen; ++$i) {
|
||||
$cw[] = ord($code{$i});
|
||||
$cw[] = ord($code[$i]);
|
||||
}
|
||||
}
|
||||
$code = $rest;
|
||||
|
|
|
@ -1686,7 +1686,7 @@ class QRcode {
|
|||
/**
|
||||
* Append data to an input object.
|
||||
* The data is copied and appended to the input object.
|
||||
* @param $items (array) input items
|
||||
* @param $items (arrray) input items
|
||||
* @param $mode (int) encoding mode.
|
||||
* @param $size (int) size of data (byte).
|
||||
* @param $data (array) array of input data.
|
||||
|
|
Binary file not shown.
|
@ -358,7 +358,7 @@ class TCPDF_COLORS {
|
|||
$color_code = self::$webcolor[$color];
|
||||
} else {
|
||||
// spot color
|
||||
$returncolor = self::getSpotColor($color, $spotc);
|
||||
$returncolor = self::getSpotColor($hcolor, $spotc);
|
||||
if ($returncolor === false) {
|
||||
$returncolor = $defcol;
|
||||
}
|
||||
|
|
|
@ -279,7 +279,7 @@ class TCPDF_FILTERS {
|
|||
// convert string to binary string
|
||||
$bitstring = '';
|
||||
for ($i = 0; $i < $data_length; ++$i) {
|
||||
$bitstring .= sprintf('%08b', ord($data{$i}));
|
||||
$bitstring .= sprintf('%08b', ord($data[$i]));
|
||||
}
|
||||
// get the number of bits
|
||||
$data_length = strlen($bitstring);
|
||||
|
@ -376,7 +376,7 @@ class TCPDF_FILTERS {
|
|||
$i = 0;
|
||||
while($i < $data_length) {
|
||||
// get current byte value
|
||||
$byte = ord($data{$i});
|
||||
$byte = ord($data[$i]);
|
||||
if ($byte == 128) {
|
||||
// a length value of 128 denote EOD
|
||||
break;
|
||||
|
@ -389,7 +389,7 @@ class TCPDF_FILTERS {
|
|||
} else {
|
||||
// if length is in the range 129 to 255,
|
||||
// the following single byte shall be copied 257 - length (2 to 128) times during decompression
|
||||
$decoded .= str_repeat($data{($i + 1)}, (257 - $byte));
|
||||
$decoded .= str_repeat($data[($i + 1)], (257 - $byte));
|
||||
// move to next block
|
||||
$i += 2;
|
||||
}
|
||||
|
|
|
@ -1664,6 +1664,7 @@ class TCPDF_FONTS {
|
|||
* @public static
|
||||
*/
|
||||
public static function unichr($c, $unicode=true) {
|
||||
$c = intval($c);
|
||||
if (!$unicode) {
|
||||
return chr($c);
|
||||
} elseif ($c <= 0x7F) {
|
||||
|
|
|
@ -311,7 +311,7 @@ class TCPDF_IMAGES {
|
|||
if ($n > 0) {
|
||||
$trns = array();
|
||||
for ($i = 0; $i < $n; ++ $i) {
|
||||
$trns[] = ord($t{$i});
|
||||
$trns[] = ord($t[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf_static.php
|
||||
// Version : 1.1.3
|
||||
// Version : 1.1.4
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2015-04-28
|
||||
// Last Update : 2019-11-01
|
||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||
// -------------------------------------------------------------------
|
||||
|
@ -55,7 +55,7 @@ class TCPDF_STATIC {
|
|||
* Current TCPDF version.
|
||||
* @private static
|
||||
*/
|
||||
private static $tcpdf_version = '6.2.26';
|
||||
private static $tcpdf_version = '6.3.5';
|
||||
|
||||
/**
|
||||
* String alias for total number of pages.
|
||||
|
@ -1829,6 +1829,8 @@ class TCPDF_STATIC {
|
|||
*/
|
||||
public static function url_exists($url) {
|
||||
$crs = curl_init();
|
||||
// encode query params in URL to get right response form the server
|
||||
$url = self::encodeUrlQuery($url);
|
||||
curl_setopt($crs, CURLOPT_URL, $url);
|
||||
curl_setopt($crs, CURLOPT_NOBODY, true);
|
||||
curl_setopt($crs, CURLOPT_FAILONERROR, true);
|
||||
|
@ -1846,6 +1848,26 @@ class TCPDF_STATIC {
|
|||
return ($code == 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode query params in URL
|
||||
*
|
||||
* @param string $url
|
||||
* @return string
|
||||
* @since 6.3.3 (2019-11-01)
|
||||
* @public static
|
||||
*/
|
||||
public static function encodeUrlQuery($url) {
|
||||
$urlData = parse_url($url);
|
||||
if (isset($urlData['query']) && $urlData['query']) {
|
||||
$urlQueryData = [];
|
||||
parse_str(urldecode($urlData['query']), $urlQueryData);
|
||||
$updatedUrl = $urlData['scheme'] . '://' . $urlData['host'] . $urlData['path'] . '?' . http_build_query($urlQueryData);
|
||||
} else {
|
||||
$updatedUrl = $url;
|
||||
}
|
||||
return $updatedUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for file_exists.
|
||||
* Checks whether a file or directory exists.
|
||||
|
@ -1926,10 +1948,10 @@ class TCPDF_STATIC {
|
|||
$alt = array_unique($alt);
|
||||
foreach ($alt as $path) {
|
||||
if (!self::file_exists($path)) {
|
||||
return false;
|
||||
continue;
|
||||
}
|
||||
$ret = @file_get_contents($path);
|
||||
if ($ret !== false) {
|
||||
if ( $ret != false ) {
|
||||
return $ret;
|
||||
}
|
||||
// try to use CURL for URLs
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf.php
|
||||
// Version : 6.2.26
|
||||
// Version : 6.3.2
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2018-09-14
|
||||
// Last Update : 2019-09-20
|
||||
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
||||
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
||||
// -------------------------------------------------------------------
|
||||
// Copyright (C) 2002-2018 Nicola Asuni - Tecnick.com LTD
|
||||
// Copyright (C) 2002-2019 Nicola Asuni - Tecnick.com LTD
|
||||
//
|
||||
// This file is part of TCPDF software library.
|
||||
//
|
||||
|
@ -45,7 +45,7 @@
|
|||
// * font subsetting;
|
||||
// * methods to publish some XHTML + CSS code, Javascript and Forms;
|
||||
// * images, graphic (geometric figures) and transformation methods;
|
||||
// * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)
|
||||
// * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImageMagick (http://www.imagemagick.org/www/formats.html)
|
||||
// * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
|
||||
// * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
|
||||
// * automatic page header and footer management;
|
||||
|
@ -80,7 +80,7 @@
|
|||
* <li>font subsetting;</li>
|
||||
* <li>methods to publish some XHTML + CSS code, Javascript and Forms;</li>
|
||||
* <li>images, graphic (geometric figures) and transformation methods;
|
||||
* <li>supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)</li>
|
||||
* <li>supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImageMagick (http://www.imagemagick.org/www/formats.html)</li>
|
||||
* <li>1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;</li>
|
||||
* <li>JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;</li>
|
||||
* <li>automatic page header and footer management;</li>
|
||||
|
@ -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.26
|
||||
* @version 6.3.2
|
||||
*/
|
||||
|
||||
// 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.26
|
||||
* @version 6.3.2
|
||||
* @author Nicola Asuni - info@tecnick.com
|
||||
* @IgnoreAnnotation("protected")
|
||||
* @IgnoreAnnotation("public")
|
||||
|
@ -1760,6 +1760,13 @@ class TCPDF {
|
|||
*/
|
||||
protected $pdfa_mode = false;
|
||||
|
||||
/**
|
||||
* version of PDF/A mode (1 - 3).
|
||||
* @protected
|
||||
* @since 6.2.26 (2019-03-12)
|
||||
*/
|
||||
protected $pdfa_version = 1;
|
||||
|
||||
/**
|
||||
* Document creation date-time
|
||||
* @protected
|
||||
|
@ -1781,6 +1788,13 @@ class TCPDF {
|
|||
*/
|
||||
protected $custom_xmp = '';
|
||||
|
||||
/**
|
||||
* Custom XMP RDF data.
|
||||
* @protected
|
||||
* @since 6.3.0 (2019-09-19)
|
||||
*/
|
||||
protected $custom_xmp_rdf = '';
|
||||
|
||||
/**
|
||||
* Overprint mode array.
|
||||
* (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
|
||||
|
@ -1834,7 +1848,7 @@ class TCPDF {
|
|||
* @param $unicode (boolean) TRUE means that the input text is unicode (default = true)
|
||||
* @param $encoding (string) Charset encoding (used only when converting back html entities); default is UTF-8.
|
||||
* @param $diskcache (boolean) DEPRECATED FEATURE
|
||||
* @param $pdfa (boolean) If TRUE set the document to PDF/A mode.
|
||||
* @param $pdfa (integer) If not false, set the document to PDF/A mode and the good version (1 or 3).
|
||||
* @public
|
||||
* @see getPageSizeFromFormat(), setPageFormat()
|
||||
*/
|
||||
|
@ -1850,8 +1864,14 @@ class TCPDF {
|
|||
$this->font_obj_ids = array();
|
||||
$this->page_obj_id = array();
|
||||
$this->form_obj_id = array();
|
||||
|
||||
// set pdf/a mode
|
||||
$this->pdfa_mode = $pdfa;
|
||||
if ($pdfa != false) {
|
||||
$this->pdfa_mode = true;
|
||||
$this->pdfa_version = $pdfa; // 1 or 3
|
||||
} else
|
||||
$this->pdfa_mode = false;
|
||||
|
||||
$this->force_srgb = false;
|
||||
// set language direction
|
||||
$this->rtl = false;
|
||||
|
@ -1960,7 +1980,7 @@ class TCPDF {
|
|||
// set default JPEG quality
|
||||
$this->jpeg_quality = 75;
|
||||
// initialize some settings
|
||||
TCPDF_FONTS::utf8Bidi(array(''), '', false, $this->isunicode, $this->CurrentFont);
|
||||
TCPDF_FONTS::utf8Bidi(array(), '', false, $this->isunicode, $this->CurrentFont);
|
||||
// set default font
|
||||
$this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt);
|
||||
$this->setHeaderFont(array($this->FontFamily, $this->FontStyle, $this->FontSizePt));
|
||||
|
@ -1986,6 +2006,7 @@ class TCPDF {
|
|||
$this->default_graphic_vars = $this->getGraphicVars();
|
||||
$this->header_xobj_autoreset = false;
|
||||
$this->custom_xmp = '';
|
||||
$this->custom_xmp_rdf = '';
|
||||
// Call cleanup method after script execution finishes or exit() is called.
|
||||
// NOTE: This will not be executed if the process is killed with a SIGTERM or SIGKILL signal.
|
||||
register_shutdown_function(array($this, '_destroy'), true);
|
||||
|
@ -2828,10 +2849,13 @@ class TCPDF {
|
|||
* @since 1.4
|
||||
*/
|
||||
public function SetCompression($compress=true) {
|
||||
$this->compress = false;
|
||||
if (function_exists('gzcompress')) {
|
||||
$this->compress = $compress ? true : false;
|
||||
} else {
|
||||
$this->compress = false;
|
||||
if ($compress) {
|
||||
if ( !$this->pdfa_mode) {
|
||||
$this->compress = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4691,14 +4715,14 @@ 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|string) 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()
|
||||
*/
|
||||
public function SetLink($link, $y=0, $page=-1) {
|
||||
$fixed = false;
|
||||
if (!empty($page) AND ($page[0] == '*')) {
|
||||
if (!empty($page) AND (substr($page, 0, 1) == '*')) {
|
||||
$page = intval(substr($page, 1));
|
||||
// this page number will not be changed when moving/add/deleting pages
|
||||
$fixed = true;
|
||||
|
@ -4807,7 +4831,7 @@ class TCPDF {
|
|||
$this->PageAnnots[$page] = array();
|
||||
}
|
||||
$this->PageAnnots[$page][] = array('n' => ++$this->n, 'x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'txt' => $text, 'opt' => $opt, 'numspaces' => $spaces);
|
||||
if (!$this->pdfa_mode) {
|
||||
if (!$this->pdfa_mode || ($this->pdfa_mode && $this->pdfa_version == 3)) {
|
||||
if ((($opt['Subtype'] == 'FileAttachment') OR ($opt['Subtype'] == 'Sound')) AND (!TCPDF_STATIC::empty_string($opt['FS']))
|
||||
AND (@TCPDF_STATIC::file_exists($opt['FS']) OR TCPDF_STATIC::isValidURL($opt['FS']))
|
||||
AND (!isset($this->embeddedfiles[basename($opt['FS'])]))) {
|
||||
|
@ -4833,8 +4857,8 @@ class TCPDF {
|
|||
* @see Annotation()
|
||||
*/
|
||||
protected function _putEmbeddedFiles() {
|
||||
if ($this->pdfa_mode) {
|
||||
// embedded files are not allowed in PDF/A mode
|
||||
if ($this->pdfa_mode && $this->pdfa_version != 3) {
|
||||
// embedded files are not allowed in PDF/A mode version 1 and 2
|
||||
return;
|
||||
}
|
||||
reset($this->embeddedfiles);
|
||||
|
@ -4847,7 +4871,10 @@ class TCPDF {
|
|||
$this->efnames[$filename] = $filedata['f'].' 0 R';
|
||||
// embedded file specification object
|
||||
$out = $this->_getobj($filedata['f'])."\n";
|
||||
$out .= '<</Type /Filespec /F '.$this->_datastring($filename, $filedata['f']).' /EF <</F '.$filedata['n'].' 0 R>> >>';
|
||||
$out .= '<</Type /Filespec /F '.$this->_datastring($filename, $filedata['f']);
|
||||
$out .= ' /UF '.$this->_datastring($filename, $filedata['f']);
|
||||
$out .= ' /AFRelationship /Source';
|
||||
$out .= ' /EF <</F '.$filedata['n'].' 0 R>> >>';
|
||||
$out .= "\n".'endobj';
|
||||
$this->_out($out);
|
||||
// embedded file object
|
||||
|
@ -4856,6 +4883,11 @@ class TCPDF {
|
|||
$data = gzcompress($data);
|
||||
$filter = ' /Filter /FlateDecode';
|
||||
}
|
||||
|
||||
if ($this->pdfa_version == 3) {
|
||||
$filter = ' /Subtype /text#2Fxml';
|
||||
}
|
||||
|
||||
$stream = $this->_getrawstream($data, $filedata['n']);
|
||||
$out = $this->_getobj($filedata['n'])."\n";
|
||||
$out .= '<< /Type /EmbeddedFile'.$filter.' /Length '.strlen($stream).' /Params <</Size '.$rawsize.'>> >>';
|
||||
|
@ -6219,12 +6251,12 @@ class TCPDF {
|
|||
* $this->setPage($page);
|
||||
* if ($page == $start_page) {
|
||||
* // first page
|
||||
* $height = $this->h - $start_y - $this->bMargin;
|
||||
* $height += $this->h - $start_y - $this->bMargin;
|
||||
* } elseif ($page == $end_page) {
|
||||
* // last page
|
||||
* $height = $end_y - $this->tMargin;
|
||||
* $height += $end_y - $this->tMargin;
|
||||
* } else {
|
||||
* $height = $this->h - $this->tMargin - $this->bMargin;
|
||||
* $height += $this->h - $this->tMargin - $this->bMargin;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
|
@ -7133,31 +7165,20 @@ class TCPDF {
|
|||
$info['i'] = $this->setImageBuffer($file, $info);
|
||||
}
|
||||
// set alignment
|
||||
$this->img_rb_x = $x + $w;
|
||||
$this->img_rb_y = $y + $h;
|
||||
|
||||
// set alignment
|
||||
if ($this->rtl) {
|
||||
if ($palign == 'L') {
|
||||
$ximg = $this->lMargin;
|
||||
} elseif ($palign == 'C') {
|
||||
$ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
|
||||
} elseif ($palign == 'R') {
|
||||
$ximg = $this->w - $this->rMargin - $w;
|
||||
} else {
|
||||
$ximg = $x - $w;
|
||||
}
|
||||
$this->img_rb_x = $ximg;
|
||||
if ($palign == 'L') {
|
||||
$ximg = $this->lMargin;
|
||||
} elseif ($palign == 'C') {
|
||||
$ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
|
||||
} elseif ($palign == 'R') {
|
||||
$ximg = $this->w - $this->rMargin - $w;
|
||||
} else {
|
||||
if ($palign == 'L') {
|
||||
$ximg = $this->lMargin;
|
||||
} elseif ($palign == 'C') {
|
||||
$ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
|
||||
} elseif ($palign == 'R') {
|
||||
$ximg = $this->w - $this->rMargin - $w;
|
||||
} else {
|
||||
$ximg = $x;
|
||||
}
|
||||
$this->img_rb_x = $ximg + $w;
|
||||
$ximg = $x;
|
||||
}
|
||||
|
||||
if ($ismask OR $hidden) {
|
||||
// image is not displayed
|
||||
return $info['i'];
|
||||
|
@ -7737,6 +7758,7 @@ class TCPDF {
|
|||
return '';
|
||||
}
|
||||
|
||||
protected static $cleaned_ids = array();
|
||||
/**
|
||||
* Unset all class variables except the following critical variables.
|
||||
* @param $destroyall (boolean) if true destroys all class variables, otherwise preserves critical variables.
|
||||
|
@ -7749,11 +7771,26 @@ class TCPDF {
|
|||
if (isset($this->internal_encoding) AND !empty($this->internal_encoding)) {
|
||||
mb_internal_encoding($this->internal_encoding);
|
||||
}
|
||||
if (isset(self::$cleaned_ids[$this->file_id])) {
|
||||
$destroyall = false;
|
||||
}
|
||||
if ($destroyall AND !$preserve_objcopy) {
|
||||
self::$cleaned_ids[$this->file_id] = true;
|
||||
// remove all temporary files
|
||||
$tmpfiles = glob(K_PATH_CACHE.'__tcpdf_'.$this->file_id.'_*');
|
||||
if (!empty($tmpfiles)) {
|
||||
array_map('unlink', $tmpfiles);
|
||||
if ($handle = @opendir(K_PATH_CACHE)) {
|
||||
while ( false !== ( $file_name = readdir( $handle ) ) ) {
|
||||
if (strpos($file_name, '__tcpdf_'.$this->file_id.'_') === 0) {
|
||||
unlink(K_PATH_CACHE.$file_name);
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
if (isset($this->imagekeys)) {
|
||||
foreach($this->imagekeys as $file) {
|
||||
if (strpos($file, K_PATH_CACHE) === 0) {
|
||||
@unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$preserve = array(
|
||||
|
@ -7763,6 +7800,7 @@ class TCPDF {
|
|||
'bufferlen',
|
||||
'buffer',
|
||||
'cached_files',
|
||||
'imagekeys',
|
||||
'sign',
|
||||
'signature_data',
|
||||
'signature_max_length',
|
||||
|
@ -8368,7 +8406,7 @@ class TCPDF {
|
|||
if (is_string($pl['txt']) && !empty($pl['txt'])) {
|
||||
if ($pl['txt'][0] == '#') {
|
||||
// internal destination
|
||||
$annots .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($pl['txt'], 1));
|
||||
$annots .= ' /A <</S /GoTo /D '.TCPDF_STATIC::encodeNameObject(substr($pl['txt'], 1)).'>>';
|
||||
} elseif ($pl['txt'][0] == '%') {
|
||||
// embedded PDF file
|
||||
$filename = basename(substr($pl['txt'], 1));
|
||||
|
@ -8380,7 +8418,7 @@ class TCPDF {
|
|||
$annots .= ' /A << /S /JavaScript /JS '.$this->_textstring($jsa, $annot_obj_id).'>>';
|
||||
} else {
|
||||
$parsedUrl = parse_url($pl['txt']);
|
||||
if (empty($parsedUrl['scheme']) AND (strtolower(substr($parsedUrl['path'], -4)) == '.pdf')) {
|
||||
if (empty($parsedUrl['scheme']) AND (!empty($parsedUrl['path']) && strtolower(substr($parsedUrl['path'], -4)) == '.pdf')) {
|
||||
// relative link to a PDF file
|
||||
$dest = '[0 /Fit]'; // default page 0
|
||||
if (!empty($parsedUrl['fragment'])) {
|
||||
|
@ -8487,8 +8525,8 @@ class TCPDF {
|
|||
break;
|
||||
}
|
||||
case 'fileattachment': {
|
||||
if ($this->pdfa_mode) {
|
||||
// embedded files are not allowed in PDF/A mode
|
||||
if ($this->pdfa_mode && $this->pdfa_version != 3) {
|
||||
// embedded files are not allowed in PDF/A mode version 1 and 2
|
||||
break;
|
||||
}
|
||||
if (!isset($pl['opt']['fs'])) {
|
||||
|
@ -9500,6 +9538,17 @@ class TCPDF {
|
|||
$this->custom_xmp = $xmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set additional XMP data to be added on the default XMP data just before the end of "rdf:RDF" tag.
|
||||
* IMPORTANT: This data is added as-is without controls, so you have to validate your data before using this method!
|
||||
* @param $xmp (string) Custom XMP RDF data.
|
||||
* @since 6.3.0 (2019-09-19)
|
||||
* @public
|
||||
*/
|
||||
public function setExtraXMPRDF($xmp) {
|
||||
$this->custom_xmp_rdf = $xmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Put XMP data object and return ID.
|
||||
* @return (int) The object ID.
|
||||
|
@ -9569,7 +9618,7 @@ class TCPDF {
|
|||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||
if ($this->pdfa_mode) {
|
||||
$xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">'."\n";
|
||||
$xmp .= "\t\t\t".'<pdfaid:part>1</pdfaid:part>'."\n";
|
||||
$xmp .= "\t\t\t".'<pdfaid:part>'.$this->pdfa_version.'</pdfaid:part>'."\n";
|
||||
$xmp .= "\t\t\t".'<pdfaid:conformance>B</pdfaid:conformance>'."\n";
|
||||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||
}
|
||||
|
@ -9581,6 +9630,16 @@ class TCPDF {
|
|||
$xmp .= "\t\t\t\t\t\t".'<pdfaSchema:namespaceURI>http://ns.adobe.com/pdf/1.3/</pdfaSchema:namespaceURI>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t".'<pdfaSchema:prefix>pdf</pdfaSchema:prefix>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t".'<pdfaSchema:schema>Adobe PDF Schema</pdfaSchema:schema>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t".'<pdfaSchema:property>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t".'<rdf:Seq>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:category>internal</pdfaProperty:category>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:description>Adobe PDF Schema</pdfaProperty:description>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:name>InstanceID</pdfaProperty:name>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:valueType>URI</pdfaProperty:valueType>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t\t".'</rdf:li>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t\t".'</rdf:Seq>'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t".'</pdfaSchema:property>'."\n";
|
||||
$xmp .= "\t\t\t\t\t".'</rdf:li>'."\n";
|
||||
$xmp .= "\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
|
||||
$xmp .= "\t\t\t\t\t\t".'<pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>'."\n";
|
||||
|
@ -9627,6 +9686,7 @@ class TCPDF {
|
|||
$xmp .= "\t\t\t\t".'</rdf:Bag>'."\n";
|
||||
$xmp .= "\t\t\t".'</pdfaExtension:schemas>'."\n";
|
||||
$xmp .= "\t\t".'</rdf:Description>'."\n";
|
||||
$xmp .= $this->custom_xmp_rdf;
|
||||
$xmp .= "\t".'</rdf:RDF>'."\n";
|
||||
$xmp .= $this->custom_xmp;
|
||||
$xmp .= '</x:xmpmeta>'."\n";
|
||||
|
@ -12221,7 +12281,7 @@ class TCPDF {
|
|||
$x = $this->w;
|
||||
}
|
||||
$fixed = false;
|
||||
if (!empty($page) AND ($page[0] == '*')) {
|
||||
if (!empty($page) AND (substr($page, 0, 1) == '*')) {
|
||||
$page = intval(substr($page, 1));
|
||||
// this page number will not be changed when moving/add/deleting pages
|
||||
$fixed = true;
|
||||
|
@ -12324,7 +12384,8 @@ class TCPDF {
|
|||
$x = $this->w;
|
||||
}
|
||||
$fixed = false;
|
||||
if (!empty($page) AND ($page[0] == '*')) {
|
||||
$pageAsString = (string) $page;
|
||||
if ($pageAsString && $pageAsString[0] == '*') {
|
||||
$page = intval(substr($page, 1));
|
||||
// this page number will not be changed when moving/add/deleting pages
|
||||
$fixed = true;
|
||||
|
@ -13988,7 +14049,7 @@ class TCPDF {
|
|||
* @since 3.1.000 (2008-06-09)
|
||||
*/
|
||||
public function setPDFVersion($version='1.7') {
|
||||
if ($this->pdfa_mode) {
|
||||
if ($this->pdfa_mode && $this->pdfa_version == 1 ) {
|
||||
// PDF/A mode
|
||||
$this->PDFVersion = '1.4';
|
||||
} else {
|
||||
|
@ -15502,8 +15563,7 @@ class TCPDF {
|
|||
* <li>int $style['module_height'] height of a single module in points</li>
|
||||
* <li>array $style['fgcolor'] color array for bars and text</li>
|
||||
* <li>mixed $style['bgcolor'] color array for background or false for transparent</li>
|
||||
* <li>string $style['position'] barcode position on the page: L = left margin; C = center; R = right margin; S = stretch</li><li>$style['module_width'] width of a single module in points</li>
|
||||
* <li>$style['module_height'] height of a single module in points</li></ul>
|
||||
* <li>string $style['position'] barcode position on the page: L = left margin; C = center; R = right margin; S = stretch</li>
|
||||
* @param $align (string) Indicates the alignment of the pointer next to barcode insertion relative to barcode height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
|
||||
* @param $distort (boolean) if true distort the barcode to fit width and height, otherwise preserve aspect ratio
|
||||
* @author Nicola Asuni
|
||||
|
@ -16897,10 +16957,10 @@ class TCPDF {
|
|||
if (($dom[$key]['value'] == 'pre') OR ($dom[$key]['value'] == 'tt')) {
|
||||
$dom[$key]['fontname'] = $this->default_monospaced_font;
|
||||
}
|
||||
if (!empty($dom[$key]['value']) AND ($dom[$key]['value'][0] == 'h') AND (intval($dom[$key]['value']{1}) > 0) AND (intval($dom[$key]['value']{1}) < 7)) {
|
||||
if (!empty($dom[$key]['value']) AND ($dom[$key]['value'][0] == 'h') AND (intval($dom[$key]['value'][1]) > 0) AND (intval($dom[$key]['value'][1]) < 7)) {
|
||||
// headings h1, h2, h3, h4, h5, h6
|
||||
if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) {
|
||||
$headsize = (4 - intval($dom[$key]['value']{1})) * 2;
|
||||
$headsize = (4 - intval($dom[$key]['value'][1])) * 2;
|
||||
$dom[$key]['fontsize'] = $dom[0]['fontsize'] + $headsize;
|
||||
}
|
||||
if (!isset($dom[$key]['style']['font-weight'])) {
|
||||
|
@ -18686,7 +18746,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$hbz = 0; // distance from y to line bottom
|
||||
$hb = 0; // vertical space between block tags
|
||||
// calculate vertical space for block tags
|
||||
if (isset($this->tagvspaces[$tag['value']][0]['h']) AND ($this->tagvspaces[$tag['value']][0]['h'] >= 0)) {
|
||||
if (isset($this->tagvspaces[$tag['value']][0]['h']) && !empty($this->tagvspaces[$tag['value']][0]['h']) && ($this->tagvspaces[$tag['value']][0]['h'] >= 0)) {
|
||||
$cur_h = $this->tagvspaces[$tag['value']][0]['h'];
|
||||
} elseif (isset($tag['fontsize'])) {
|
||||
$cur_h = $this->getCellHeight($tag['fontsize'] / $this->k);
|
||||
|
@ -18718,7 +18778,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
}
|
||||
// closing vertical space
|
||||
$hbc = 0;
|
||||
if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
|
||||
if (isset($this->tagvspaces[$tag['value']][1]['h']) && !empty($this->tagvspaces[$tag['value']][1]['h']) && ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
|
||||
$pre_h = $this->tagvspaces[$tag['value']][1]['h'];
|
||||
} elseif (isset($parent['fontsize'])) {
|
||||
$pre_h = $this->getCellHeight($parent['fontsize'] / $this->k);
|
||||
|
@ -19379,7 +19439,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$hbz = 0; // distance from y to line bottom
|
||||
$hb = 0; // vertical space between block tags
|
||||
// calculate vertical space for block tags
|
||||
if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
|
||||
if (isset($this->tagvspaces[$tag['value']][1]['h']) && !empty($this->tagvspaces[$tag['value']][1]['h']) && ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
|
||||
$pre_h = $this->tagvspaces[$tag['value']][1]['h'];
|
||||
} elseif (isset($parent['fontsize'])) {
|
||||
$pre_h = $this->getCellHeight($parent['fontsize'] / $this->k);
|
||||
|
@ -23349,7 +23409,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
*/
|
||||
protected function SVGPath($d, $style='') {
|
||||
if ($this->state != 2) {
|
||||
return;
|
||||
return;
|
||||
}
|
||||
// set fill/stroke style
|
||||
$op = TCPDF_STATIC::getPathPaintOperator($style, '');
|
||||
|
@ -23369,6 +23429,8 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
$xmax = 0;
|
||||
$ymin = 2147483647;
|
||||
$ymax = 0;
|
||||
$xinitial = 0;
|
||||
$yinitial = 0;
|
||||
$relcoord = false;
|
||||
$minlen = (0.01 / $this->k); // minimum acceptable length (3 point)
|
||||
$firstcmd = true; // used to print first point
|
||||
|
@ -23413,6 +23475,8 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
if ($ck == 1) {
|
||||
$this->_outPoint($x, $y);
|
||||
$firstcmd = false;
|
||||
$xinitial = $x;
|
||||
$yinitial = $y;
|
||||
} else {
|
||||
$this->_outLine($x, $y);
|
||||
}
|
||||
|
@ -23600,8 +23664,8 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
if ((($ck + 1) % 7) == 0) {
|
||||
$x0 = $x;
|
||||
$y0 = $y;
|
||||
$rx = abs($params[($ck - 6)]);
|
||||
$ry = abs($params[($ck - 5)]);
|
||||
$rx = max(abs($params[($ck - 6)]), .000000001);
|
||||
$ry = max(abs($params[($ck - 5)]), .000000001);
|
||||
$ang = -$rawparams[($ck - 4)];
|
||||
$angle = deg2rad($ang);
|
||||
$fa = $rawparams[($ck - 3)]; // large-arc-flag
|
||||
|
@ -23688,6 +23752,8 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
}
|
||||
case 'Z': {
|
||||
$this->_out('h');
|
||||
$x = $x0 = $xinitial;
|
||||
$y = $y0 = $yinitial;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -23995,7 +24061,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
|||
case 'stop': {
|
||||
// gradient stops
|
||||
if (substr($attribs['offset'], -1) == '%') {
|
||||
$offset = floatval(substr($attribs['offset'], -1)) / 100;
|
||||
$offset = floatval(substr($attribs['offset'], 0, -1)) / 100;
|
||||
} else {
|
||||
$offset = floatval($attribs['offset']);
|
||||
if ($offset > 1) {
|
||||
|
|
|
@ -453,7 +453,7 @@ class TCPDFBarcode {
|
|||
$k = 0;
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$char = $code{$i};
|
||||
$char = $code[$i];
|
||||
if(!isset($chr[$char])) {
|
||||
// invalid character
|
||||
return false;
|
||||
|
@ -464,7 +464,7 @@ class TCPDFBarcode {
|
|||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $chr[$char]{$j};
|
||||
$w = $chr[$char][$j];
|
||||
$bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
++$k;
|
||||
|
@ -520,10 +520,10 @@ class TCPDFBarcode {
|
|||
$code_ext = '';
|
||||
$clen = strlen($code);
|
||||
for ($i = 0 ; $i < $clen; ++$i) {
|
||||
if (ord($code{$i}) > 127) {
|
||||
if (ord($code[$i]) > 127) {
|
||||
return false;
|
||||
}
|
||||
$code_ext .= $encode[$code{$i}];
|
||||
$code_ext .= $encode[$code[$i]];
|
||||
}
|
||||
return $code_ext;
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ class TCPDFBarcode {
|
|||
$sum = 0;
|
||||
$clen = strlen($code);
|
||||
for ($i = 0 ; $i < $clen; ++$i) {
|
||||
$k = array_keys($chars, $code{$i});
|
||||
$k = array_keys($chars, $code[$i]);
|
||||
$sum += $k[0];
|
||||
}
|
||||
$j = ($sum % 43);
|
||||
|
@ -643,10 +643,10 @@ class TCPDFBarcode {
|
|||
$code_ext = '';
|
||||
$clen = strlen($code);
|
||||
for ($i = 0 ; $i < $clen; ++$i) {
|
||||
if (ord($code{$i}) > 127) {
|
||||
if (ord($code[$i]) > 127) {
|
||||
return false;
|
||||
}
|
||||
$code_ext .= $encode[$code{$i}];
|
||||
$code_ext .= $encode[$code[$i]];
|
||||
}
|
||||
// checksum
|
||||
$code_ext .= $this->checksum_code93($code_ext);
|
||||
|
@ -656,7 +656,7 @@ class TCPDFBarcode {
|
|||
$k = 0;
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$char = ord($code{$i});
|
||||
$char = ord($code[$i]);
|
||||
if(!isset($chr[$char])) {
|
||||
// invalid character
|
||||
return false;
|
||||
|
@ -667,7 +667,7 @@ class TCPDFBarcode {
|
|||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $chr[$char]{$j};
|
||||
$w = $chr[$char][$j];
|
||||
$bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
++$k;
|
||||
|
@ -699,7 +699,7 @@ class TCPDFBarcode {
|
|||
$p = 1;
|
||||
$check = 0;
|
||||
for ($i = ($len - 1); $i >= 0; --$i) {
|
||||
$k = array_keys($chars, $code{$i});
|
||||
$k = array_keys($chars, $code[$i]);
|
||||
$check += ($k[0] * $p);
|
||||
++$p;
|
||||
if ($p > 20) {
|
||||
|
@ -713,7 +713,7 @@ class TCPDFBarcode {
|
|||
$p = 1;
|
||||
$check = 0;
|
||||
for ($i = $len; $i >= 0; --$i) {
|
||||
$k = array_keys($chars, $code{$i});
|
||||
$k = array_keys($chars, $code[$i]);
|
||||
$check += ($k[0] * $p);
|
||||
++$p;
|
||||
if ($p > 15) {
|
||||
|
@ -738,11 +738,11 @@ class TCPDFBarcode {
|
|||
$len = strlen($code);
|
||||
$sum = 0;
|
||||
for ($i = 0; $i < $len; $i+=2) {
|
||||
$sum += $code{$i};
|
||||
$sum += $code[$i];
|
||||
}
|
||||
$sum *= 3;
|
||||
for ($i = 1; $i < $len; $i+=2) {
|
||||
$sum += ($code{$i});
|
||||
$sum += ($code[$i]);
|
||||
}
|
||||
$r = $sum % 10;
|
||||
if($r > 0) {
|
||||
|
@ -783,7 +783,7 @@ class TCPDFBarcode {
|
|||
$p = 2;
|
||||
$check = 0;
|
||||
for ($i = ($clen - 1); $i >= 0; --$i) {
|
||||
$check += (hexdec($code{$i}) * $p);
|
||||
$check += (hexdec($code[$i]) * $p);
|
||||
++$p;
|
||||
if ($p > 7) {
|
||||
$p = 2;
|
||||
|
@ -798,7 +798,7 @@ class TCPDFBarcode {
|
|||
$seq = '110'; // left guard
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$digit = $code{$i};
|
||||
$digit = $code[$i];
|
||||
if (!isset($chr[$digit])) {
|
||||
// invalid character
|
||||
return false;
|
||||
|
@ -841,7 +841,7 @@ class TCPDFBarcode {
|
|||
$seq = '11011010';
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$digit = $code{$i};
|
||||
$digit = $code[$i];
|
||||
if (!isset($chr[$digit])) {
|
||||
// invalid character
|
||||
return false;
|
||||
|
@ -867,8 +867,8 @@ class TCPDFBarcode {
|
|||
$k = 0;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
$w += 1;
|
||||
if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq{$i} != $seq{($i+1)}))) {
|
||||
if ($seq{$i} == '1') {
|
||||
if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
|
||||
if ($seq[$i] == '1') {
|
||||
$t = true; // bar
|
||||
} else {
|
||||
$t = false; // space
|
||||
|
@ -919,8 +919,8 @@ class TCPDFBarcode {
|
|||
$k = 0;
|
||||
$clen = strlen($code);
|
||||
for ($i = 0; $i < $clen; $i = ($i + 2)) {
|
||||
$char_bar = $code{$i};
|
||||
$char_space = $code{$i+1};
|
||||
$char_bar = $code[$i];
|
||||
$char_space = $code[$i+1];
|
||||
if((!isset($chr[$char_bar])) OR (!isset($chr[$char_space]))) {
|
||||
// invalid character
|
||||
return false;
|
||||
|
@ -929,7 +929,7 @@ class TCPDFBarcode {
|
|||
$seq = '';
|
||||
$chrlen = strlen($chr[$char_bar]);
|
||||
for ($s = 0; $s < $chrlen; $s++){
|
||||
$seq .= $chr[$char_bar]{$s} . $chr[$char_space]{$s};
|
||||
$seq .= $chr[$char_bar][$s] . $chr[$char_space][$s];
|
||||
}
|
||||
$seqlen = strlen($seq);
|
||||
for ($j = 0; $j < $seqlen; ++$j) {
|
||||
|
@ -938,7 +938,7 @@ class TCPDFBarcode {
|
|||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $seq{$j};
|
||||
$w = $seq[$j];
|
||||
$bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
++$k;
|
||||
|
@ -1085,7 +1085,7 @@ class TCPDFBarcode {
|
|||
case 'A': { // MODE A
|
||||
$startid = 103;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
$char = $code{$i};
|
||||
$char = $code[$i];
|
||||
$char_id = ord($char);
|
||||
if (($char_id >= 241) AND ($char_id <= 244)) {
|
||||
$code_data[] = $fnc_a[$char_id];
|
||||
|
@ -1100,7 +1100,7 @@ class TCPDFBarcode {
|
|||
case 'B': { // MODE B
|
||||
$startid = 104;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
$char = $code{$i};
|
||||
$char = $code[$i];
|
||||
$char_id = ord($char);
|
||||
if (($char_id >= 241) AND ($char_id <= 244)) {
|
||||
$code_data[] = $fnc_b[$char_id];
|
||||
|
@ -1124,7 +1124,7 @@ class TCPDFBarcode {
|
|||
return false;
|
||||
}
|
||||
for ($i = 0; $i < $len; $i+=2) {
|
||||
$chrnum = $code{$i}.$code{$i+1};
|
||||
$chrnum = $code[$i].$code[$i+1];
|
||||
if (preg_match('/([0-9]{2})/', $chrnum) > 0) {
|
||||
$code_data[] = intval($chrnum);
|
||||
} else {
|
||||
|
@ -1180,7 +1180,7 @@ class TCPDFBarcode {
|
|||
}
|
||||
}
|
||||
for ($i = 0; $i < $seq[2]; ++$i) {
|
||||
$char = $seq[1]{$i};
|
||||
$char = $seq[1][$i];
|
||||
$char_id = ord($char);
|
||||
if (($char_id >= 241) AND ($char_id <= 244)) {
|
||||
$code_data[] = $fnc_a[$char_id];
|
||||
|
@ -1223,7 +1223,7 @@ class TCPDFBarcode {
|
|||
}
|
||||
}
|
||||
for ($i = 0; $i < $seq[2]; ++$i) {
|
||||
$char = $seq[1]{$i};
|
||||
$char = $seq[1][$i];
|
||||
$char_id = ord($char);
|
||||
if (($char_id >= 241) AND ($char_id <= 244)) {
|
||||
$code_data[] = $fnc_b[$char_id];
|
||||
|
@ -1240,7 +1240,7 @@ class TCPDFBarcode {
|
|||
$code_data[] = 99;
|
||||
}
|
||||
for ($i = 0; $i < $seq[2]; $i+=2) {
|
||||
$chrnum = $seq[1]{$i}.$seq[1]{$i+1};
|
||||
$chrnum = $seq[1][$i].$seq[1][$i+1];
|
||||
$code_data[] = intval($chrnum);
|
||||
}
|
||||
break;
|
||||
|
@ -1271,7 +1271,7 @@ class TCPDFBarcode {
|
|||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $seq{$j};
|
||||
$w = $seq[$j];
|
||||
$bararray['bcode'][] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
}
|
||||
|
@ -1337,14 +1337,14 @@ class TCPDFBarcode {
|
|||
// calculate check digit
|
||||
$sum_a = 0;
|
||||
for ($i = 1; $i < $data_len; $i+=2) {
|
||||
$sum_a += $code{$i};
|
||||
$sum_a += $code[$i];
|
||||
}
|
||||
if ($len > 12) {
|
||||
$sum_a *= 3;
|
||||
}
|
||||
$sum_b = 0;
|
||||
for ($i = 0; $i < $data_len; $i+=2) {
|
||||
$sum_b += ($code{$i});
|
||||
$sum_b += ($code[$i]);
|
||||
}
|
||||
if ($len < 13) {
|
||||
$sum_b *= 3;
|
||||
|
@ -1356,7 +1356,7 @@ class TCPDFBarcode {
|
|||
if ($code_len == $data_len) {
|
||||
// add check digit
|
||||
$code .= $r;
|
||||
} elseif ($r !== intval($code{$data_len})) {
|
||||
} elseif ($r !== intval($code[$data_len])) {
|
||||
// wrong checkdigit
|
||||
return false;
|
||||
}
|
||||
|
@ -1467,7 +1467,7 @@ class TCPDFBarcode {
|
|||
$bararray = array('code' => $upce_code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
|
||||
$p = $upce_parities[$code[1]][$r];
|
||||
for ($i = 0; $i < 6; ++$i) {
|
||||
$seq .= $codes[$p[$i]][$upce_code{$i}];
|
||||
$seq .= $codes[$p[$i]][$upce_code[$i]];
|
||||
}
|
||||
$seq .= '010101'; // right guard bar
|
||||
} else {
|
||||
|
@ -1475,17 +1475,17 @@ class TCPDFBarcode {
|
|||
$half_len = intval(ceil($len / 2));
|
||||
if ($len == 8) {
|
||||
for ($i = 0; $i < $half_len; ++$i) {
|
||||
$seq .= $codes['A'][$code{$i}];
|
||||
$seq .= $codes['A'][$code[$i]];
|
||||
}
|
||||
} else {
|
||||
$p = $parities[$code[0]];
|
||||
for ($i = 1; $i < $half_len; ++$i) {
|
||||
$seq .= $codes[$p[$i-1]][$code{$i}];
|
||||
$seq .= $codes[$p[$i-1]][$code[$i]];
|
||||
}
|
||||
}
|
||||
$seq .= '01010'; // center guard bar
|
||||
for ($i = $half_len; $i < $len; ++$i) {
|
||||
$seq .= $codes['C'][$code{$i}];
|
||||
$seq .= $codes['C'][$code[$i]];
|
||||
}
|
||||
$seq .= '101'; // right guard bar
|
||||
}
|
||||
|
@ -1493,8 +1493,8 @@ class TCPDFBarcode {
|
|||
$w = 0;
|
||||
for ($i = 0; $i < $clen; ++$i) {
|
||||
$w += 1;
|
||||
if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq{$i} != $seq{($i+1)}))) {
|
||||
if ($seq{$i} == '1') {
|
||||
if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq[$i] != $seq[$i+1]))) {
|
||||
if ($seq[$i] == '1') {
|
||||
$t = true; // bar
|
||||
} else {
|
||||
$t = false; // space
|
||||
|
@ -1578,7 +1578,7 @@ class TCPDFBarcode {
|
|||
$seq .= $codes[$p[0]][$code[0]];
|
||||
for ($i = 1; $i < $len; ++$i) {
|
||||
$seq .= '01'; // separator
|
||||
$seq .= $codes[$p[$i]][$code{$i}];
|
||||
$seq .= $codes[$p[$i]][$code[$i]];
|
||||
}
|
||||
$bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
|
||||
return $this->binseq_to_array($seq, $bararray);
|
||||
|
@ -1629,7 +1629,7 @@ class TCPDFBarcode {
|
|||
// calculate checksum
|
||||
$sum = 0;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
$sum += intval($code{$i});
|
||||
$sum += intval($code[$i]);
|
||||
}
|
||||
$chkd = ($sum % 10);
|
||||
if($chkd > 0) {
|
||||
|
@ -1643,7 +1643,7 @@ class TCPDFBarcode {
|
|||
$bararray['maxw'] += 2;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
for ($j = 0; $j < 5; ++$j) {
|
||||
$h = $barlen[$code{$i}][$j];
|
||||
$h = $barlen[$code[$i]][$j];
|
||||
$p = floor(1 / $h);
|
||||
$bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
|
||||
$bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
|
||||
|
@ -1756,8 +1756,8 @@ class TCPDFBarcode {
|
|||
$row = 0;
|
||||
$col = 0;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
$row += $checktable[$code{$i}][0];
|
||||
$col += $checktable[$code{$i}][1];
|
||||
$row += $checktable[$code[$i]][0];
|
||||
$col += $checktable[$code[$i]][1];
|
||||
}
|
||||
$row %= 6;
|
||||
$col %= 6;
|
||||
|
@ -1774,7 +1774,7 @@ class TCPDFBarcode {
|
|||
}
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
for ($j = 0; $j < 4; ++$j) {
|
||||
switch ($barmode[$code{$i}][$j]) {
|
||||
switch ($barmode[$code[$i]][$j]) {
|
||||
case 1: {
|
||||
$p = 0;
|
||||
$h = 2;
|
||||
|
@ -1846,17 +1846,17 @@ class TCPDFBarcode {
|
|||
$code = 'A'.strtoupper($code).'A';
|
||||
$len = strlen($code);
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
if (!isset($chr[$code{$i}])) {
|
||||
if (!isset($chr[$code[$i]])) {
|
||||
return false;
|
||||
}
|
||||
$seq = $chr[$code{$i}];
|
||||
$seq = $chr[$code[$i]];
|
||||
for ($j = 0; $j < 8; ++$j) {
|
||||
if (($j % 2) == 0) {
|
||||
$t = true; // bar
|
||||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $seq{$j};
|
||||
$w = $seq[$j];
|
||||
$bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
++$k;
|
||||
|
@ -1896,7 +1896,7 @@ class TCPDFBarcode {
|
|||
$p = 1;
|
||||
$check = 0;
|
||||
for ($i = ($len - 1); $i >= 0; --$i) {
|
||||
$digit = $code{$i};
|
||||
$digit = $code[$i];
|
||||
if ($digit == '-') {
|
||||
$dval = 10;
|
||||
} else {
|
||||
|
@ -1918,7 +1918,7 @@ class TCPDFBarcode {
|
|||
$p = 1;
|
||||
$check = 0;
|
||||
for ($i = $len; $i >= 0; --$i) {
|
||||
$digit = $code{$i};
|
||||
$digit = $code[$i];
|
||||
if ($digit == '-') {
|
||||
$dval = 10;
|
||||
} else {
|
||||
|
@ -1937,17 +1937,17 @@ class TCPDFBarcode {
|
|||
$code = 'S'.$code.'S';
|
||||
$len += 3;
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
if (!isset($chr[$code{$i}])) {
|
||||
if (!isset($chr[$code[$i]])) {
|
||||
return false;
|
||||
}
|
||||
$seq = $chr[$code{$i}];
|
||||
$seq = $chr[$code[$i]];
|
||||
for ($j = 0; $j < 6; ++$j) {
|
||||
if (($j % 2) == 0) {
|
||||
$t = true; // bar
|
||||
} else {
|
||||
$t = false; // space
|
||||
}
|
||||
$w = $seq{$j};
|
||||
$w = $seq[$j];
|
||||
$bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
|
||||
$bararray['maxw'] += $w;
|
||||
++$k;
|
||||
|
@ -2016,7 +2016,7 @@ class TCPDFBarcode {
|
|||
$bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array());
|
||||
$len = strlen($seq);
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
switch ($seq{$i}) {
|
||||
switch ($seq[$i]) {
|
||||
case '1': {
|
||||
$p = 1;
|
||||
$h = 1;
|
||||
|
@ -2255,7 +2255,7 @@ class TCPDFBarcode {
|
|||
$bitval = 1;
|
||||
$len = strlen($hex);
|
||||
for($pos = ($len - 1); $pos >= 0; --$pos) {
|
||||
$dec = bcadd($dec, bcmul(hexdec($hex{$pos}), $bitval));
|
||||
$dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval));
|
||||
$bitval = bcmul($bitval, 16);
|
||||
}
|
||||
return $dec;
|
||||
|
|
|
@ -531,10 +531,10 @@ class TCPDF_PARSER {
|
|||
if ($char == '(') {
|
||||
$open_bracket = 1;
|
||||
while ($open_bracket > 0) {
|
||||
if (!isset($this->pdfdata{$strpos})) {
|
||||
if (!isset($this->pdfdata[$strpos])) {
|
||||
break;
|
||||
}
|
||||
$ch = $this->pdfdata{$strpos};
|
||||
$ch = $this->pdfdata[$strpos];
|
||||
switch ($ch) {
|
||||
case '\\': { // REVERSE SOLIDUS (5Ch) (Backslash)
|
||||
// skip next character
|
||||
|
@ -578,7 +578,7 @@ class TCPDF_PARSER {
|
|||
}
|
||||
case '<': // \x3C LESS-THAN SIGN
|
||||
case '>': { // \x3E GREATER-THAN SIGN
|
||||
if (isset($this->pdfdata{($offset + 1)}) AND ($this->pdfdata{($offset + 1)} == $char)) {
|
||||
if (isset($this->pdfdata[($offset + 1)]) AND ($this->pdfdata[($offset + 1)] == $char)) {
|
||||
// dictionary object
|
||||
$objtype = $char.$char;
|
||||
$offset += 2;
|
||||
|
|
Loading…
Reference in New Issue