php7 compat first round

This commit is contained in:
Mario Fetka 2017-05-20 21:41:48 +02:00
parent fce3ef7f28
commit c0391eb5ba
30 changed files with 3473 additions and 2745 deletions

9
debian/control vendored
View File

@ -96,13 +96,8 @@ Package: pnp4nagios-web
Architecture: all Architecture: all
Depends: Depends:
${misc:Depends}, ${misc:Depends},
libapache2-mod-php5 | php5-cgi | php5, libapache2-mod-php5 | libapache2-mod-php7.0 | php5-cgi | php7.0-cgi | php7.0 | php5,
php5-gd, php7.0-gd | php5-gd ,
libkohana2-php,
libfpdi-php,
libjs-jquery (>= 1.6.2),
libjs-jquery-ui (>= 1.8.ooops.14),
libjs-jquery-mobile,
rrdtool, rrdtool,
adduser adduser
Recommends: pnp4nagios-bin, pnp4nagios-web-config-icinga | pnp4nagios-web-config-nagios4 Recommends: pnp4nagios-bin, pnp4nagios-web-config-icinga | pnp4nagios-web-config-nagios4

8
debian/rules vendored
View File

@ -15,9 +15,9 @@ override_dh_auto_configure:
dh_auto_configure -- \ dh_auto_configure -- \
--with-layout=debian \ --with-layout=debian \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--infodir=/usr/share/info \ --infodir=/usr/share/info
--without-kohana \ # --without-kohana \
--with-kohana_system=/usr/share/php/kohana2/system # --with-kohana_system=/usr/share/php/kohana2/system
override_dh_auto_build: override_dh_auto_build:
dh_auto_build -- all dh_auto_build -- all
@ -67,7 +67,7 @@ override_dh_auto_install:
cp debian/icinga-module.cfg debian/tmp/usr/share/doc/pnp4nagios/examples/ cp debian/icinga-module.cfg debian/tmp/usr/share/doc/pnp4nagios/examples/
# Remove external PHP classes/libraries: FPDF, FPDF-TPL, FPDI # Remove external PHP classes/libraries: FPDF, FPDF-TPL, FPDI
rm -r debian/tmp/usr/share/pnp4nagios/html/application/vendor/fpdf #rm -r debian/tmp/usr/share/pnp4nagios/html/application/vendor/fpdf
# remove source files # remove source files
#rm -f debian/tmp/usr/share/pnp4nagios/html/media/js/jquery.imgareaselect.Debian.txt #rm -f debian/tmp/usr/share/pnp4nagios/html/media/js/jquery.imgareaselect.Debian.txt

View File

@ -1,68 +1,66 @@
<?php <?php
// /**
// FPDI - Version 1.3.1 * This file is part of FPDI
// *
// Copyright 2004-2009 Setasign - Jan Slabon * @package FPDI
// * @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
// Licensed under the Apache License, Version 2.0 (the "License"); * @license http://opensource.org/licenses/mit-license The MIT License
// you may not use this file except in compliance with the License. * @version 1.6.2
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
if (!defined('ORD_z')) /**
define('ORD_z',ord('z')); * Class FilterASCII85
if (!defined('ORD_exclmark')) */
define('ORD_exclmark', ord('!')); class FilterASCII85
if (!defined('ORD_u')) {
define('ORD_u', ord('u')); /**
if (!defined('ORD_tilde')) * Decode ASCII85 encoded string
define('ORD_tilde', ord('~')); *
* @param string $in
* @return string
* @throws Exception
*/
public function decode($in)
{
$ord = array(
'~' => ord('~'),
'z' => ord('z'),
'u' => ord('u'),
'!' => ord('!')
);
class FilterASCII85 {
function error($msg) {
die($msg);
}
function decode($in) {
$out = ''; $out = '';
$state = 0; $state = 0;
$chn = null; $chn = null;
$l = strlen($in); $l = strlen($in);
for ($k = 0; $k < $l; ++$k) { for ($k = 0; $k < $l; ++$k) {
$ch = ord($in[$k]) & 0xff; $ch = ord($in[$k]) & 0xff;
if ($ch == ORD_tilde) { if ($ch == $ord['~']) {
break; break;
} }
if (preg_match('/^\s$/',chr($ch))) { if (preg_match('/^\s$/',chr($ch))) {
continue; continue;
} }
if ($ch == ORD_z && $state == 0) { if ($ch == $ord['z'] && $state == 0) {
$out .= chr(0).chr(0).chr(0).chr(0); $out .= chr(0) . chr(0) . chr(0) . chr(0);
continue; continue;
} }
if ($ch < ORD_exclmark || $ch > ORD_u) { if ($ch < $ord['!'] || $ch > $ord['u']) {
$this->error('Illegal character in ASCII85Decode.'); throw new Exception('Illegal character in ASCII85Decode.');
} }
$chn[$state++] = $ch - ORD_exclmark; $chn[$state++] = $ch - $ord['!'];
if ($state == 5) { if ($state == 5) {
$state = 0; $state = 0;
$r = 0; $r = 0;
for ($j = 0; $j < 5; ++$j) for ($j = 0; $j < 5; ++$j) {
$r = $r * 85 + $chn[$j]; $r = (int)($r * 85 + $chn[$j]);
}
$out .= chr($r >> 24); $out .= chr($r >> 24);
$out .= chr($r >> 16); $out .= chr($r >> 16);
$out .= chr($r >> 8); $out .= chr($r >> 8);
@ -70,19 +68,21 @@ class FilterASCII85 {
} }
} }
$r = 0; $r = 0;
if ($state == 1) if ($state == 1) {
$this->error('Illegal length in ASCII85Decode.'); throw new Exception('Illegal length in ASCII85Decode.');
}
if ($state == 2) { if ($state == 2) {
$r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85; $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
$out .= chr($r >> 24); $out .= chr($r >> 24);
}
else if ($state == 3) { } else if ($state == 3) {
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85; $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
$out .= chr($r >> 24); $out .= chr($r >> 24);
$out .= chr($r >> 16); $out .= chr($r >> 16);
}
else if ($state == 4) { } else if ($state == 4) {
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ; $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
$out .= chr($r >> 24); $out .= chr($r >> 24);
$out .= chr($r >> 16); $out .= chr($r >> 16);
@ -91,8 +91,16 @@ class FilterASCII85 {
return $out; return $out;
} }
function encode($in) { /**
$this->error("ASCII85 encoding not implemented."); * NOT IMPLEMENTED
*
* @param string $in
* @return string
* @throws LogicException
*/
public function encode($in)
{
throw new LogicException("ASCII85 encoding not implemented.");
} }
} }

View File

@ -1,33 +0,0 @@
<?php
//
// FPDI - Version 1.3.1
//
// Copyright 2004-2009 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
require_once('FilterASCII85.php');
class FilterASCII85_FPDI extends FilterASCII85 {
var $fpdi;
function FPDI_FilterASCII85(&$fpdi) {
$this->fpdi =& $fpdi;
}
function error($msg) {
$this->fpdi->error($msg);
}
}

View File

@ -0,0 +1,43 @@
<?php
/**
* This file is part of FPDI
*
* @package FPDI
* @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
* @license http://opensource.org/licenses/mit-license The MIT License
* @version 1.6.2
*/
/**
* Class FilterASCIIHexDecode
*/
class FilterASCIIHexDecode
{
/**
* Converts an ASCII hexadecimal encoded string into it's binary representation.
*
* @param string $data The input string
* @return string
*/
public function decode($data)
{
$data = preg_replace('/[^0-9A-Fa-f]/', '', rtrim($data, '>'));
if ((strlen($data) % 2) == 1) {
$data .= '0';
}
return pack('H*', $data);
}
/**
* Converts a string into ASCII hexadecimal representation.
*
* @param string $data The input string
* @param boolean $leaveEOD
* @return string
*/
public function encode($data, $leaveEOD = false)
{
return current(unpack('H*', $data)) . ($leaveEOD ? '' : '>');
}
}

View File

@ -1,154 +1,164 @@
<?php <?php
// /**
// FPDI - Version 1.3.1 * This file is part of FPDI
// *
// Copyright 2004-2009 Setasign - Jan Slabon * @package FPDI
// * @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
// Licensed under the Apache License, Version 2.0 (the "License"); * @license http://opensource.org/licenses/mit-license The MIT License
// you may not use this file except in compliance with the License. * @version 1.6.2
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
class FilterLZW { /**
* Class FilterLZW
var $sTable = array(); */
var $data = null; class FilterLZW
var $dataLength = 0; {
var $tIdx; protected $_sTable = array();
var $bitsToGet = 9; protected $_data = null;
var $bytePointer; protected $_dataLength = 0;
var $bitPointer; protected $_tIdx;
var $nextData = 0; protected $_bitsToGet = 9;
var $nextBits = 0; protected $_bytePointer;
var $andTable = array(511, 1023, 2047, 4095); protected $_bitPointer;
protected $_nextData = 0;
protected $_nextBits = 0;
protected $_andTable = array(511, 1023, 2047, 4095);
function error($msg) {
die($msg);
}
/** /**
* Method to decode LZW compressed data. * Decodes LZW compressed data.
* *
* @param string data The compressed data. * @param string $data The compressed data.
* @throws Exception
* @return string
*/ */
function decode($data) { public function decode($data)
{
if($data[0] == 0x00 && $data[1] == 0x01) { if ($data[0] == 0x00 && $data[1] == 0x01) {
$this->error('LZW flavour not supported.'); throw new Exception('LZW flavour not supported.');
} }
$this->initsTable(); $this->_initsTable();
$this->data = $data; $this->_data = $data;
$this->dataLength = strlen($data); $this->_dataLength = strlen($data);
// Initialize pointers // Initialize pointers
$this->bytePointer = 0; $this->_bytePointer = 0;
$this->bitPointer = 0; $this->_bitPointer = 0;
$this->nextData = 0; $this->_nextData = 0;
$this->nextBits = 0; $this->_nextBits = 0;
$oldCode = 0; $oldCode = 0;
$string = ''; $unCompData = '';
$uncompData = '';
while (($code = $this->getNextCode()) != 257) { while (($code = $this->_getNextCode()) != 257) {
if ($code == 256) { if ($code == 256) {
$this->initsTable(); $this->_initsTable();
$code = $this->getNextCode(); $code = $this->_getNextCode();
if ($code == 257) { if ($code == 257) {
break; break;
} }
$uncompData .= $this->sTable[$code]; if (!isset($this->_sTable[$code])) {
throw new Exception('Error while decompression LZW compressed data.');
}
$unCompData .= $this->_sTable[$code];
$oldCode = $code; $oldCode = $code;
} else { } else {
if ($code < $this->tIdx) { if ($code < $this->_tIdx) {
$string = $this->sTable[$code]; $string = $this->_sTable[$code];
$uncompData .= $string; $unCompData .= $string;
$this->addStringToTable($this->sTable[$oldCode], $string[0]); $this->_addStringToTable($this->_sTable[$oldCode], $string[0]);
$oldCode = $code; $oldCode = $code;
} else { } else {
$string = $this->sTable[$oldCode]; $string = $this->_sTable[$oldCode];
$string = $string.$string[0]; $string = $string . $string[0];
$uncompData .= $string; $unCompData .= $string;
$this->addStringToTable($string); $this->_addStringToTable($string);
$oldCode = $code; $oldCode = $code;
} }
} }
} }
return $uncompData; return $unCompData;
} }
/** /**
* Initialize the string table. * Initialize the string table.
*/ */
function initsTable() { protected function _initsTable()
$this->sTable = array(); {
$this->_sTable = array();
for ($i = 0; $i < 256; $i++) for ($i = 0; $i < 256; $i++)
$this->sTable[$i] = chr($i); $this->_sTable[$i] = chr($i);
$this->tIdx = 258; $this->_tIdx = 258;
$this->bitsToGet = 9; $this->_bitsToGet = 9;
} }
/** /**
* Add a new string to the string table. * Add a new string to the string table.
*/ */
function addStringToTable ($oldString, $newString='') { protected function _addStringToTable($oldString, $newString = '')
$string = $oldString.$newString; {
$string = $oldString . $newString;
// Add this new String to the table // Add this new String to the table
$this->sTable[$this->tIdx++] = $string; $this->_sTable[$this->_tIdx++] = $string;
if ($this->tIdx == 511) { if ($this->_tIdx == 511) {
$this->bitsToGet = 10; $this->_bitsToGet = 10;
} else if ($this->tIdx == 1023) { } else if ($this->_tIdx == 1023) {
$this->bitsToGet = 11; $this->_bitsToGet = 11;
} else if ($this->tIdx == 2047) { } else if ($this->_tIdx == 2047) {
$this->bitsToGet = 12; $this->_bitsToGet = 12;
} }
} }
// Returns the next 9, 10, 11 or 12 bits /**
function getNextCode() { * Returns the next 9, 10, 11 or 12 bits
if ($this->bytePointer == $this->dataLength) { *
* @return int
*/
protected function _getNextCode()
{
if ($this->_bytePointer == $this->_dataLength) {
return 257; return 257;
} }
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); $this->_nextData = ($this->_nextData << 8) | (ord($this->_data[$this->_bytePointer++]) & 0xff);
$this->nextBits += 8; $this->_nextBits += 8;
if ($this->nextBits < $this->bitsToGet) { if ($this->_nextBits < $this->_bitsToGet) {
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); $this->_nextData = ($this->_nextData << 8) | (ord($this->_data[$this->_bytePointer++]) & 0xff);
$this->nextBits += 8; $this->_nextBits += 8;
} }
$code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9]; $code = ($this->_nextData >> ($this->_nextBits - $this->_bitsToGet)) & $this->_andTable[$this->_bitsToGet-9];
$this->nextBits -= $this->bitsToGet; $this->_nextBits -= $this->_bitsToGet;
return $code; return $code;
} }
function encode($in) { /**
$this->error("LZW encoding not implemented."); * NOT IMPLEMENTED
*
* @param string $in
* @return string
* @throws LogicException
*/
public function encode($in)
{
throw new LogicException("LZW encoding not implemented.");
} }
} }

View File

@ -1,33 +0,0 @@
<?php
//
// FPDI - Version 1.3.1
//
// Copyright 2004-2009 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
require_once('FilterLZW.php');
class FilterLZW_FPDI extends FilterLZW {
var $fpdi;
function FilterLZW_FPDI(&$fpdi) {
$this->fpdi =& $fpdi;
}
function error($msg) {
$this->fpdi->error($msg);
}
}

2
share/pnp/application/vendor/fpdf/font/courier.php vendored Executable file → Normal file
View File

@ -5,4 +5,6 @@ $up = -100;
$ut = 50; $ut = 50;
for($i=0;$i<=255;$i++) for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600; $cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/courierb.php vendored Executable file → Normal file
View File

@ -5,4 +5,6 @@ $up = -100;
$ut = 50; $ut = 50;
for($i=0;$i<=255;$i++) for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600; $cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/courierbi.php vendored Executable file → Normal file
View File

@ -5,4 +5,6 @@ $up = -100;
$ut = 50; $ut = 50;
for($i=0;$i<=255;$i++) for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600; $cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/courieri.php vendored Executable file → Normal file
View File

@ -5,4 +5,6 @@ $up = -100;
$ut = 50; $ut = 50;
for($i=0;$i<=255;$i++) for($i=0;$i<=255;$i++)
$cw[chr($i)] = 600; $cw[chr($i)] = 600;
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/helvetica.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/helveticab.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/helveticabi.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/helveticai.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

1
share/pnp/application/vendor/fpdf/font/symbol.php vendored Executable file → Normal file
View File

@ -16,4 +16,5 @@ $cw = array(
chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042, chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329, chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0); chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
$uv = array(32=>160,33=>33,34=>8704,35=>35,36=>8707,37=>array(37,2),39=>8715,40=>array(40,2),42=>8727,43=>array(43,2),45=>8722,46=>array(46,18),64=>8773,65=>array(913,2),67=>935,68=>array(916,2),70=>934,71=>915,72=>919,73=>921,74=>977,75=>array(922,4),79=>array(927,2),81=>920,82=>929,83=>array(931,3),86=>962,87=>937,88=>926,89=>936,90=>918,91=>91,92=>8756,93=>93,94=>8869,95=>95,96=>63717,97=>array(945,2),99=>967,100=>array(948,2),102=>966,103=>947,104=>951,105=>953,106=>981,107=>array(954,4),111=>array(959,2),113=>952,114=>961,115=>array(963,3),118=>982,119=>969,120=>958,121=>968,122=>950,123=>array(123,3),126=>8764,160=>8364,161=>978,162=>8242,163=>8804,164=>8725,165=>8734,166=>402,167=>9827,168=>9830,169=>9829,170=>9824,171=>8596,172=>array(8592,4),176=>array(176,2),178=>8243,179=>8805,180=>215,181=>8733,182=>8706,183=>8226,184=>247,185=>array(8800,2),187=>8776,188=>8230,189=>array(63718,2),191=>8629,192=>8501,193=>8465,194=>8476,195=>8472,196=>8855,197=>8853,198=>8709,199=>array(8745,2),201=>8835,202=>8839,203=>8836,204=>8834,205=>8838,206=>array(8712,2),208=>8736,209=>8711,210=>63194,211=>63193,212=>63195,213=>8719,214=>8730,215=>8901,216=>172,217=>array(8743,2),219=>8660,220=>array(8656,4),224=>9674,225=>9001,226=>array(63720,3),229=>8721,230=>array(63723,10),241=>9002,242=>8747,243=>8992,244=>63733,245=>8993,246=>array(63734,9));
?> ?>

2
share/pnp/application/vendor/fpdf/font/times.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500); chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/timesb.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/timesbi.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444); chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

2
share/pnp/application/vendor/fpdf/font/timesi.php vendored Executable file → Normal file
View File

@ -16,4 +16,6 @@ $cw = array(
chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444); chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
$enc = 'cp1252';
$uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96));
?> ?>

1
share/pnp/application/vendor/fpdf/font/zapfdingbats.php vendored Executable file → Normal file
View File

@ -16,4 +16,5 @@ $cw = array(
chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918, chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874, chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0); chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
$uv = array(32=>32,33=>array(9985,4),37=>9742,38=>array(9990,4),42=>9755,43=>9758,44=>array(9996,28),72=>9733,73=>array(10025,35),108=>9679,109=>10061,110=>9632,111=>array(10063,4),115=>9650,116=>9660,117=>9670,118=>10070,119=>9687,120=>array(10072,7),128=>array(10088,14),161=>array(10081,7),168=>9827,169=>9830,170=>9829,171=>9824,172=>array(9312,10),182=>array(10102,31),213=>8594,214=>array(8596,2),216=>array(10136,24),241=>array(10161,14));
?> ?>

914
share/pnp/application/vendor/fpdf/fpdf.php vendored Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,81 +1,92 @@
<?php <?php
// /**
// FPDF_TPL - Version 1.1.3 * This file is part of FPDI
// *
// Copyright 2004-2009 Setasign - Jan Slabon * @package FPDI
// * @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
// Licensed under the Apache License, Version 2.0 (the "License"); * @license http://opensource.org/licenses/mit-license The MIT License
// you may not use this file except in compliance with the License. * @version 1.6.2
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
class FPDF_TPL extends FPDF { if (!class_exists('fpdi_bridge')) {
require_once('fpdi_bridge.php');
}
/**
* Class FPDF_TPL
*/
class FPDF_TPL extends fpdi_bridge
{
/** /**
* Array of Tpl-Data * Array of template data
*
* @var array * @var array
*/ */
var $tpls = array(); protected $_tpls = array();
/** /**
* Current Template-ID * Current Template-Id
*
* @var int * @var int
*/ */
var $tpl = 0; public $tpl = 0;
/**
* "In Template"-Flag
* @var boolean
*/
var $_intpl = false;
/**
* Nameprefix of Templates used in Resources-Dictonary
* @var string A String defining the Prefix used as Template-Object-Names. Have to beginn with an /
*/
var $tplprefix = "/TPL";
/** /**
* Resources used By Templates and Pages * "In Template"-Flag
* @var array *
* @var boolean
*/ */
var $_res = array(); protected $_inTpl = false;
/** /**
* Last used Template data * Name prefix of templates used in Resources dictionary
*
* @var string A String defining the Prefix used as Template-Object-Names. Have to begin with an /
*/
public $tplPrefix = "/TPL";
/**
* Resources used by templates and pages
* *
* @var array * @var array
*/ */
var $lastUsedTemplateData = array(); protected $_res = array();
/** /**
* Start a Template * Last used template data
*
* @var array
*/
public $lastUsedTemplateData = array();
/**
* Start a template.
* *
* This method starts a template. You can give own coordinates to build an own sized * This method starts a template. You can give own coordinates to build an own sized
* Template. Pay attention, that the margins are adapted to the new templatesize. * template. Pay attention, that the margins are adapted to the new template size.
* If you want to write outside the template, for example to build a clipped Template, * If you want to write outside the template, for example to build a clipped template,
* you have to set the Margins and "Cursor"-Position manual after beginTemplate-Call. * you have to set the margins and "cursor"-position manual after beginTemplate()-call.
* *
* If no parameter is given, the template uses the current page-size. * If no parameter is given, the template uses the current page-size.
* The Method returns an ID of the current Template. This ID is used later for using this template. * The method returns an id of the current template. This id is used later for using this template.
* Warning: A created Template is used in PDF at all events. Still if you don't use it after creation! * Warning: A created template is saved in the resulting PDF at all events. Also if you don't use it after creation!
* *
* @param int $x The x-coordinate given in user-unit * @param int $x The x-coordinate given in user-unit
* @param int $y The y-coordinate given in user-unit * @param int $y The y-coordinate given in user-unit
* @param int $w The width given in user-unit * @param int $w The width given in user-unit
* @param int $h The height given in user-unit * @param int $h The height given in user-unit
* @return int The ID of new created Template * @return int The id of new created template
* @throws LogicException
*/ */
function beginTemplate($x=null, $y=null, $w=null, $h=null) { public function beginTemplate($x = null, $y = null, $w = null, $h = null)
if ($this->page <= 0) {
$this->error("You have to add a page to fpdf first!"); if (is_subclass_of($this, 'TCPDF')) {
throw new LogicException('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.');
}
if ($this->page <= 0) {
throw new LogicException("You have to add at least a page first!");
}
if ($x == null) if ($x == null)
$x = 0; $x = 0;
@ -88,7 +99,7 @@ class FPDF_TPL extends FPDF {
// Save settings // Save settings
$this->tpl++; $this->tpl++;
$tpl =& $this->tpls[$this->tpl]; $tpl =& $this->_tpls[$this->tpl];
$tpl = array( $tpl = array(
'o_x' => $this->x, 'o_x' => $this->x,
'o_y' => $this->y, 'o_y' => $this->y,
@ -99,6 +110,10 @@ class FPDF_TPL extends FPDF {
'o_rMargin' => $this->rMargin, 'o_rMargin' => $this->rMargin,
'o_h' => $this->h, 'o_h' => $this->h,
'o_w' => $this->w, 'o_w' => $this->w,
'o_FontFamily' => $this->FontFamily,
'o_FontStyle' => $this->FontStyle,
'o_FontSizePt' => $this->FontSizePt,
'o_FontSize' => $this->FontSize,
'buffer' => '', 'buffer' => '',
'x' => $x, 'x' => $x,
'y' => $y, 'y' => $y,
@ -107,29 +122,43 @@ class FPDF_TPL extends FPDF {
); );
$this->SetAutoPageBreak(false); $this->SetAutoPageBreak(false);
// Define own high and width to calculate possitions correct // Define own high and width to calculate correct positions
$this->h = $h; $this->h = $h;
$this->w = $w; $this->w = $w;
$this->_intpl = true; $this->_inTpl = true;
$this->SetXY($x+$this->lMargin, $y+$this->tMargin); $this->SetXY($x + $this->lMargin, $y + $this->tMargin);
$this->SetRightMargin($this->w-$w+$this->rMargin); $this->SetRightMargin($this->w - $w + $this->rMargin);
if ($this->CurrentFont) {
$fontKey = $this->FontFamily . $this->FontStyle;
if ($fontKey) {
$this->_res['tpl'][$this->tpl]['fonts'][$fontKey] =& $this->fonts[$fontKey];
$this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
}
}
return $this->tpl; return $this->tpl;
} }
/** /**
* End Template * End template.
* *
* This method ends a template and reset initiated variables on beginTemplate. * This method ends a template and reset initiated variables collected in {@link beginTemplate()}.
* *
* @return mixed If a template is opened, the ID is returned. If not a false is returned. * @return int|boolean If a template is opened, the id is returned. If not a false is returned.
*/ */
function endTemplate() { public function endTemplate()
if ($this->_intpl) { {
$this->_intpl = false; if (is_subclass_of($this, 'TCPDF')) {
$tpl =& $this->tpls[$this->tpl]; $args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args);
}
if ($this->_inTpl) {
$this->_inTpl = false;
$tpl = $this->_tpls[$this->tpl];
$this->SetXY($tpl['o_x'], $tpl['o_y']); $this->SetXY($tpl['o_x'], $tpl['o_y']);
$this->tMargin = $tpl['o_tMargin']; $this->tMargin = $tpl['o_tMargin'];
$this->lMargin = $tpl['o_lMargin']; $this->lMargin = $tpl['o_lMargin'];
@ -137,271 +166,381 @@ class FPDF_TPL extends FPDF {
$this->h = $tpl['o_h']; $this->h = $tpl['o_h'];
$this->w = $tpl['o_w']; $this->w = $tpl['o_w'];
$this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']);
$this->FontFamily = $tpl['o_FontFamily'];
$this->FontStyle = $tpl['o_FontStyle'];
$this->FontSizePt = $tpl['o_FontSizePt'];
$this->FontSize = $tpl['o_FontSize'];
$fontKey = $this->FontFamily . $this->FontStyle;
if ($fontKey)
$this->CurrentFont =& $this->fonts[$fontKey];
return $this->tpl; return $this->tpl;
} else { } else {
return false; return false;
} }
} }
/** /**
* Use a Template in current Page or other Template * Use a template in current page or other template.
* *
* You can use a template in a page or in another template. * You can use a template in a page or in another template.
* You can give the used template a new size like you use the Image()-method. * You can give the used template a new size.
* All parameters are optional. The width or height is calculated automaticaly * All parameters are optional. The width or height is calculated automatically
* if one is given. If no parameter is given the origin size as defined in * if one is given. If no parameter is given the origin size as defined in
* beginTemplate() is used. * {@link beginTemplate()} method is used.
*
* The calculated or used width and height are returned as an array. * The calculated or used width and height are returned as an array.
* *
* @param int $tplidx A valid template-Id * @param int $tplIdx A valid template-id
* @param int $_x The x-position * @param int $x The x-position
* @param int $_y The y-position * @param int $y The y-position
* @param int $_w The new width of the template * @param int $w The new width of the template
* @param int $_h The new height of the template * @param int $h The new height of the template
* @retrun array The height and width of the template * @return array The height and width of the template (array('w' => ..., 'h' => ...))
* @throws LogicException|InvalidArgumentException
*/ */
function useTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) { public function useTemplate($tplIdx, $x = null, $y = null, $w = 0, $h = 0)
if ($this->page <= 0) {
$this->error("You have to add a page to fpdf first!"); if ($this->page <= 0) {
throw new LogicException('You have to add at least a page first!');
if (!isset($this->tpls[$tplidx]))
$this->error("Template does not exist!");
if ($this->_intpl) {
$this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx];
} }
$tpl =& $this->tpls[$tplidx]; if (!isset($this->_tpls[$tplIdx])) {
$w = $tpl['w']; throw new InvalidArgumentException('Template does not exist!');
$h = $tpl['h']; }
if ($_x == null) if ($this->_inTpl) {
$_x = 0; $this->_res['tpl'][$this->tpl]['tpls'][$tplIdx] =& $this->_tpls[$tplIdx];
if ($_y == null) }
$_y = 0;
$tpl = $this->_tpls[$tplIdx];
$_x += $tpl['x']; $_w = $tpl['w'];
$_y += $tpl['y']; $_h = $tpl['h'];
$wh = $this->getTemplateSize($tplidx, $_w, $_h); if ($x == null) {
$_w = $wh['w']; $x = 0;
$_h = $wh['h']; }
$tData = array( if ($y == null) {
$y = 0;
}
$x += $tpl['x'];
$y += $tpl['y'];
$wh = $this->getTemplateSize($tplIdx, $w, $h);
$w = $wh['w'];
$h = $wh['h'];
$tplData = array(
'x' => $this->x, 'x' => $this->x,
'y' => $this->y, 'y' => $this->y,
'w' => $_w, 'w' => $w,
'h' => $_h, 'h' => $h,
'scaleX' => ($_w/$w), 'scaleX' => ($w / $_w),
'scaleY' => ($_h/$h), 'scaleY' => ($h / $_h),
'tx' => $_x, 'tx' => $x,
'ty' => ($this->h-$_y-$_h), 'ty' => ($this->h - $y - $h),
'lty' => ($this->h-$_y-$_h) - ($this->h-$h) * ($_h/$h) 'lty' => ($this->h - $y - $h) - ($this->h - $_h) * ($h / $_h)
); );
$this->_out(sprintf("q %.4F 0 0 %.4F %.4F %.4F cm", $tData['scaleX'], $tData['scaleY'], $tData['tx']*$this->k, $tData['ty']*$this->k)); // Translate
$this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx));
$this->lastUsedTemplateData = $tData; $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm',
$tplData['scaleX'], $tplData['scaleY'], $tplData['tx'] * $this->k, $tplData['ty'] * $this->k)
return array("w" => $_w, "h" => $_h); ); // Translate
$this->_out(sprintf('%s%d Do Q', $this->tplPrefix, $tplIdx));
$this->lastUsedTemplateData = $tplData;
return array('w' => $w, 'h' => $h);
} }
/** /**
* Get The calculated Size of a Template * Get the calculated size of a template.
* *
* If one size is given, this method calculates the other one. * If one size is given, this method calculates the other one.
* *
* @param int $tplidx A valid template-Id * @param int $tplIdx A valid template-id
* @param int $_w The width of the template * @param int $w The width of the template
* @param int $_h The height of the template * @param int $h The height of the template
* @return array The height and width of the template * @return array The height and width of the template (array('w' => ..., 'h' => ...))
*/ */
function getTemplateSize($tplidx, $_w=0, $_h=0) { public function getTemplateSize($tplIdx, $w = 0, $h = 0)
if (!$this->tpls[$tplidx]) {
if (!isset($this->_tpls[$tplIdx]))
return false; return false;
$tpl =& $this->tpls[$tplidx]; $tpl = $this->_tpls[$tplIdx];
$w = $tpl['w']; $_w = $tpl['w'];
$h = $tpl['h']; $_h = $tpl['h'];
if ($_w == 0 and $_h == 0) { if ($w == 0 && $h == 0) {
$_w = $w; $w = $_w;
$_h = $h; $h = $_h;
} }
if($_w==0) if ($w == 0)
$_w = $_h*$w/$h; $w = $h * $_w / $_h;
if($_h==0) if($h == 0)
$_h = $_w*$h/$w; $h = $w * $_h / $_w;
return array("w" => $_w, "h" => $_h); return array("w" => $w, "h" => $h);
} }
/** /**
* See FPDF/TCPDF-Documentation ;-) * Sets the font used to print character strings.
*
* See FPDF/TCPDF documentation.
*
* @see http://fpdf.org/en/doc/setfont.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#afd56e360c43553830d543323e81bc045
*/ */
function SetFont($family, $style='', $size=0, $fontfile='') { public function SetFont($family, $style = '', $size = null, $fontfile = '', $subset = 'default', $out = true)
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 3) { {
$this->Error('More than 3 arguments for the SetFont method are only available in TCPDF.'); if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::SetFont'), $args);
} }
/**
* force the resetting of font changes in a template parent::SetFont($family, $style, $size);
*/
if ($this->_intpl) $fontkey = $this->FontFamily . $this->FontStyle;
$this->FontFamily = '';
if ($this->_inTpl) {
parent::SetFont($family, $style, $size, $fontfile);
$fontkey = $this->FontFamily.$this->FontStyle;
if ($this->_intpl) {
$this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey];
} else { } else {
$this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey];
} }
} }
/** /**
* See FPDF/TCPDF-Documentation ;-) * Puts an image.
*
* See FPDF/TCPDF documentation.
*
* @see http://fpdf.org/en/doc/image.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#a714c2bee7d6b39d4d6d304540c761352
*/ */
function Image($file, $x, $y, $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0) { public function Image(
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 7) { $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false,
$this->Error('More than 7 arguments for the Image method are only available in TCPDF.'); $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false,
$hidden = false, $fitonpage = false, $alt = false, $altimgs = array()
)
{
if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::Image'), $args);
} }
parent::Image($file, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $ismask, $imgmask, $border); $ret = parent::Image($file, $x, $y, $w, $h, $type, $link);
if ($this->_intpl) { if ($this->_inTpl) {
$this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file];
} else { } else {
$this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file];
} }
}
return $ret;
/**
* See FPDF-Documentation ;-)
*
* AddPage is not available when you're "in" a template.
*/
function AddPage($orientation='', $format='') {
if ($this->_intpl)
$this->Error('Adding pages in templates isn\'t possible!');
parent::AddPage($orientation, $format);
} }
/** /**
* Preserve adding Links in Templates ...won't work * Adds a new page to the document.
*
* See FPDF/TCPDF documentation.
*
* This method cannot be used if you'd started a template.
*
* @see http://fpdf.org/en/doc/addpage.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#a5171e20b366b74523709d84c349c1ced
*/ */
function Link($x, $y, $w, $h, $link, $spaces=0) { public function AddPage($orientation = '', $format = '', $rotationOrKeepmargins = false, $tocpage = false)
if (!is_subclass_of($this, 'TCPDF') && func_num_args() > 5) { {
$this->Error('More than 7 arguments for the Image method are only available in TCPDF.'); if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::AddPage'), $args);
} }
if ($this->_intpl) if ($this->_inTpl) {
$this->Error('Using links in templates aren\'t possible!'); throw new LogicException('Adding pages in templates is not possible!');
parent::Link($x, $y, $w, $h, $link, $spaces); }
parent::AddPage($orientation, $format, $rotationOrKeepmargins);
} }
function AddLink() { /**
if ($this->_intpl) * Puts a link on a rectangular area of the page.
$this->Error('Adding links in templates aren\'t possible!'); *
* Overwritten because adding links in a template will not work.
*
* @see http://fpdf.org/en/doc/link.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#ab87bf1826384fbfe30eb499d42f1d994
*/
public function Link($x, $y, $w, $h, $link, $spaces = 0)
{
if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::Link'), $args);
}
if ($this->_inTpl) {
throw new LogicException('Using links in templates is not posible!');
}
parent::Link($x, $y, $w, $h, $link);
}
/**
* Creates a new internal link and returns its identifier.
*
* Overwritten because adding links in a template will not work.
*
* @see http://fpdf.org/en/doc/addlink.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#a749522038ed7786c3e1701435dcb891e
*/
public function AddLink()
{
if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::AddLink'), $args);
}
if ($this->_inTpl) {
throw new LogicException('Adding links in templates is not possible!');
}
return parent::AddLink(); return parent::AddLink();
} }
function SetLink($link, $y=0, $page=-1) { /**
if ($this->_intpl) * Defines the page and position a link points to.
$this->Error('Setting links in templates aren\'t possible!'); *
* Overwritten because adding links in a template will not work.
*
* @see http://fpdf.org/en/doc/setlink.htm
* @see http://www.tcpdf.org/doc/code/classTCPDF.html#ace5be60e7857953ea5e2b89cb90df0ae
*/
public function SetLink($link, $y = 0, $page = -1)
{
if (is_subclass_of($this, 'TCPDF')) {
$args = func_get_args();
return call_user_func_array(array($this, 'TCPDF::SetLink'), $args);
}
if ($this->_inTpl) {
throw new LogicException('Setting links in templates is not possible!');
}
parent::SetLink($link, $y, $page); parent::SetLink($link, $y, $page);
} }
/**
* Private Method that writes the form xobjects
*/
function _putformxobjects() {
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
reset($this->tpls);
foreach($this->tpls AS $tplidx => $tpl) {
$p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; /**
$this->_newobj(); * Writes the form XObjects to the PDF document.
$this->tpls[$tplidx]['n'] = $this->n; */
$this->_out('<<'.$filter.'/Type /XObject'); protected function _putformxobjects()
{
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
reset($this->_tpls);
foreach($this->_tpls AS $tplIdx => $tpl) {
$this->_newobj();
$this->_tpls[$tplIdx]['n'] = $this->n;
$this->_out('<<'.$filter.'/Type /XObject');
$this->_out('/Subtype /Form'); $this->_out('/Subtype /Form');
$this->_out('/FormType 1'); $this->_out('/FormType 1');
$this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
// llx // llx
$tpl['x'], $tpl['x'] * $this->k,
// lly // lly
-$tpl['y'], -$tpl['y'] * $this->k,
// urx // urx
($tpl['w']+$tpl['x'])*$this->k, ($tpl['w'] + $tpl['x']) * $this->k,
// ury // ury
($tpl['h']-$tpl['y'])*$this->k ($tpl['h'] - $tpl['y']) * $this->k
)); ));
if ($tpl['x'] != 0 || $tpl['y'] != 0) { if ($tpl['x'] != 0 || $tpl['y'] != 0) {
$this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',
-$tpl['x']*$this->k*2, $tpl['y']*$this->k*2 -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2
)); ));
} }
$this->_out('/Resources ');
$this->_out('/Resources ');
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
$this->_out('/Font <<'); if (isset($this->_res['tpl'][$tplIdx])) {
foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) $res = $this->_res['tpl'][$tplIdx];
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); if (isset($res['fonts']) && count($res['fonts'])) {
$this->_out('>>'); $this->_out('/Font <<');
foreach($res['fonts'] as $font) {
$this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R');
}
$this->_out('>>');
}
if(isset($res['images']) || isset($res['tpls'])) {
$this->_out('/XObject <<');
if (isset($res['images'])) {
foreach($res['images'] as $image)
$this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R');
}
if (isset($res['tpls'])) {
foreach($res['tpls'] as $i => $_tpl)
$this->_out($this->tplPrefix . $i . ' ' . $_tpl['n'] . ' 0 R');
}
$this->_out('>>');
}
} }
if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) $this->_out('>>');
{
$this->_out('/XObject <<'); $buffer = ($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { $this->_out('/Length ' . strlen($buffer) . ' >>');
foreach($this->_res['tpl'][$tplidx]['images'] as $image) $this->_putstream($buffer);
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R'); $this->_out('endobj');
}
if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl)
$this->_out($this->tplprefix.$i.' '.$tpl['n'].' 0 R');
}
$this->_out('>>');
}
$this->_out('>>');
$this->_out('/Length '.strlen($p).' >>');
$this->_putstream($p);
$this->_out('endobj');
} }
} }
/** /**
* Overwritten to add _putformxobjects() after _putimages() * Output images.
* *
* Overwritten to add {@link _putformxobjects()} after _putimages().
*/ */
function _putimages() { public function _putimages()
{
parent::_putimages(); parent::_putimages();
$this->_putformxobjects(); $this->_putformxobjects();
} }
function _putxobjectdict() { /**
* Writes the references of XObject resources to the document.
*
* Overwritten to add the the templates to the XObject resource dictionary.
*/
public function _putxobjectdict()
{
parent::_putxobjectdict(); parent::_putxobjectdict();
if (count($this->tpls)) { foreach($this->_tpls as $tplIdx => $tpl) {
foreach($this->tpls as $tplidx => $tpl) { $this->_out(sprintf('%s%d %d 0 R', $this->tplPrefix, $tplIdx, $tpl['n']));
$this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n']));
}
} }
} }
/** /**
* Private Method * Writes bytes to the resulting document.
*
* Overwritten to delegate the data to the template buffer.
*
* @param string $s
*/ */
function _out($s) { public function _out($s)
if ($this->state==2 && $this->_intpl) { {
$this->tpls[$this->tpl]['buffer'] .= $s."\n"; if ($this->state == 2 && $this->_inTpl) {
$this->_tpls[$this->tpl]['buffer'] .= $s . "\n";
} else { } else {
parent::_out($s); parent::_out($s);
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,171 +0,0 @@
<?php
//
// FPDI - Version 1.3.1
//
// Copyright 2004-2009 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
/**
* This class is used as a bridge between TCPDF and FPDI
* and will create the possibility to use both FPDF and TCPDF
* via one FPDI version.
*
* We'll simply remap TCPDF to FPDF again.
*
* It'll be loaded and extended by FPDF_TPL.
*/
class FPDF extends TCPDF {
function __get($name) {
switch ($name) {
case 'PDFVersion':
return $this->PDFVersion;
case 'k':
return $this->k;
default:
// Error handling
$this->Error('Cannot access protected property '.get_class($this).':$'.$name.' / Undefined property: '.get_class($this).'::$'.$name);
}
}
function __set($name, $value) {
switch ($name) {
case 'PDFVersion':
$this->PDFVersion = $value;
break;
default:
// Error handling
$this->Error('Cannot access protected property '.get_class($this).':$'.$name.' / Undefined property: '.get_class($this).'::$'.$name);
}
}
/**
* Encryption of imported data by FPDI
*
* @param array $value
*/
function pdf_write_value(&$value) {
switch ($value[0]) {
case PDF_TYPE_STRING :
if ($this->encrypted) {
$value[1] = $this->_unescape($value[1]);
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
$value[1] = $this->_escape($value[1]);
}
break;
case PDF_TYPE_STREAM :
if ($this->encrypted) {
$value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
}
break;
case PDF_TYPE_HEX :
if ($this->encrypted) {
$value[1] = $this->hex2str($value[1]);
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
// remake hexstring of encrypted string
$value[1] = $this->str2hex($value[1]);
}
break;
}
}
/**
* Unescapes a PDF string
*
* @param string $s
* @return string
*/
function _unescape($s) {
$out = '';
for ($count = 0, $n = strlen($s); $count < $n; $count++) {
if ($s[$count] != '\\' || $count == $n-1) {
$out .= $s[$count];
} else {
switch ($s[++$count]) {
case ')':
case '(':
case '\\':
$out .= $s[$count];
break;
case 'f':
$out .= chr(0x0C);
break;
case 'b':
$out .= chr(0x08);
break;
case 't':
$out .= chr(0x09);
break;
case 'r':
$out .= chr(0x0D);
break;
case 'n':
$out .= chr(0x0A);
break;
case "\r":
if ($count != $n-1 && $s[$count+1] == "\n")
$count++;
break;
case "\n":
break;
default:
// Octal-Values
if (ord($s[$count]) >= ord('0') &&
ord($s[$count]) <= ord('9')) {
$oct = ''. $s[$count];
if (ord($s[$count+1]) >= ord('0') &&
ord($s[$count+1]) <= ord('9')) {
$oct .= $s[++$count];
if (ord($s[$count+1]) >= ord('0') &&
ord($s[$count+1]) <= ord('9')) {
$oct .= $s[++$count];
}
}
$out .= chr(octdec($oct));
} else {
$out .= $s[$count];
}
}
}
}
return $out;
}
/**
* Hexadecimal to string
*
* @param string $hex
* @return string
*/
function hex2str($hex) {
return pack('H*', str_replace(array("\r", "\n", ' '), '', $hex));
}
/**
* String to hexadecimal
*
* @param string $str
* @return string
*/
function str2hex($str) {
return current(unpack('H*', $str));
}
}

View File

@ -0,0 +1,206 @@
<?php
/**
* This file is part of FPDI
*
* @package FPDI
* @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
* @license http://opensource.org/licenses/mit-license The MIT License
* @version 1.6.2
*/
/**
* This file is used as a bridge between TCPDF or FPDF
* It will dynamically create the class extending the available
* class FPDF or TCPDF.
*
* This way it is possible to use FPDI for both FPDF and TCPDF with one FPDI version.
*/
if (!class_exists('TCPDF', false)) {
/**
* Class fpdi_bridge
*/
class fpdi_bridge extends FPDF
{
// empty body
}
} else {
/**
* Class fpdi_bridge
*/
class fpdi_bridge extends TCPDF
{
/**
* Array of Tpl-Data
*
* @var array
*/
protected $_tpls = array();
/**
* Name-prefix of Templates used in Resources-Dictionary
*
* @var string A String defining the Prefix used as Template-Object-Names. Have to begin with an /
*/
public $tplPrefix = "/TPL";
/**
* Current Object Id.
*
* @var integer
*/
protected $_currentObjId;
/**
* Return XObjects Dictionary.
*
* Overwritten to add additional XObjects to the resources dictionary of TCPDF
*
* @return string
*/
protected function _getxobjectdict()
{
$out = parent::_getxobjectdict();
foreach ($this->_tpls as $tplIdx => $tpl) {
$out .= sprintf('%s%d %d 0 R', $this->tplPrefix, $tplIdx, $tpl['n']);
}
return $out;
}
/**
* Writes a PDF value to the resulting document.
*
* Prepares the value for encryption of imported data by FPDI
*
* @param array $value
*/
protected function _prepareValue(&$value)
{
switch ($value[0]) {
case pdf_parser::TYPE_STRING:
if ($this->encrypted) {
$value[1] = $this->_unescape($value[1]);
$value[1] = $this->_encrypt_data($this->_currentObjId, $value[1]);
$value[1] = TCPDF_STATIC::_escape($value[1]);
}
break;
case pdf_parser::TYPE_STREAM:
if ($this->encrypted) {
$value[2][1] = $this->_encrypt_data($this->_currentObjId, $value[2][1]);
$value[1][1]['/Length'] = array(
pdf_parser::TYPE_NUMERIC,
strlen($value[2][1])
);
}
break;
case pdf_parser::TYPE_HEX:
if ($this->encrypted) {
$value[1] = $this->hex2str($value[1]);
$value[1] = $this->_encrypt_data($this->_currentObjId, $value[1]);
// remake hexstring of encrypted string
$value[1] = $this->str2hex($value[1]);
}
break;
}
}
/**
* Un-escapes a PDF string
*
* @param string $s
* @return string
*/
protected function _unescape($s)
{
$out = '';
for ($count = 0, $n = strlen($s); $count < $n; $count++) {
if ($s[$count] != '\\' || $count == $n-1) {
$out .= $s[$count];
} else {
switch ($s[++$count]) {
case ')':
case '(':
case '\\':
$out .= $s[$count];
break;
case 'f':
$out .= chr(0x0C);
break;
case 'b':
$out .= chr(0x08);
break;
case 't':
$out .= chr(0x09);
break;
case 'r':
$out .= chr(0x0D);
break;
case 'n':
$out .= chr(0x0A);
break;
case "\r":
if ($count != $n-1 && $s[$count+1] == "\n")
$count++;
break;
case "\n":
break;
default:
// Octal-Values
if (ord($s[$count]) >= ord('0') &&
ord($s[$count]) <= ord('9')) {
$oct = ''. $s[$count];
if (ord($s[$count+1]) >= ord('0') &&
ord($s[$count+1]) <= ord('9')) {
$oct .= $s[++$count];
if (ord($s[$count+1]) >= ord('0') &&
ord($s[$count+1]) <= ord('9')) {
$oct .= $s[++$count];
}
}
$out .= chr(octdec($oct));
} else {
$out .= $s[$count];
}
}
}
}
return $out;
}
/**
* Hexadecimal to string
*
* @param string $data
* @return string
*/
public function hex2str($data)
{
$data = preg_replace('/[^0-9A-Fa-f]/', '', rtrim($data, '>'));
if ((strlen($data) % 2) == 1) {
$data .= '0';
}
return pack('H*', $data);
}
/**
* String to hexadecimal
*
* @param string $str
* @return string
*/
public function str2hex($str)
{
return current(unpack('H*', $str));
}
}
}

View File

@ -1,384 +1,355 @@
<?php <?php
// /**
// FPDI - Version 1.3.1 * This file is part of FPDI
// *
// Copyright 2004-2009 Setasign - Jan Slabon * @package FPDI
// * @copyright Copyright (c) 2017 Setasign - Jan Slabon (http://www.setasign.com)
// Licensed under the Apache License, Version 2.0 (the "License"); * @license http://opensource.org/licenses/mit-license The MIT License
// you may not use this file except in compliance with the License. * @version 1.6.2
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0 if (!class_exists('pdf_parser')) {
// require_once('pdf_parser.php');
// Unless required by applicable law or agreed to in writing, software }
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. /**
// See the License for the specific language governing permissions and * Class fpdi_pdf_parser
// limitations under the License. */
// class fpdi_pdf_parser extends pdf_parser
{
require_once('pdf_parser.php'); /**
* Pages
class fpdi_pdf_parser extends pdf_parser { *
* Index begins at 0
/** *
* Pages * @var array
* Index beginns at 0 */
* protected $_pages;
* @var array
*/ /**
var $pages; * Page count
*
/** * @var integer
* Page count */
* @var integer protected $_pageCount;
*/
var $page_count; /**
* Current page number
/** *
* actual page number * @var integer
* @var integer */
*/ public $pageNo;
var $pageno;
/**
/** * PDF version of imported document
* PDF Version of imported Document *
* @var string * @var string
*/ */
var $pdfVersion; public $_pdfVersion;
/** /**
* FPDI Reference * Available BoxTypes
* @var object *
*/ * @var array
var $fpdi; */
public $availableBoxes = array('/MediaBox', '/CropBox', '/BleedBox', '/TrimBox', '/ArtBox');
/**
* Available BoxTypes /**
* * The constructor.
* @var array *
*/ * @param string $filename The source filename
var $availableBoxes = array('/MediaBox', '/CropBox', '/BleedBox', '/TrimBox', '/ArtBox'); */
public function __construct($filename)
/** {
* Constructor parent::__construct($filename);
*
* @param string $filename Source-Filename // resolve Pages-Dictonary
* @param object $fpdi Object of type fpdi $pages = $this->resolveObject($this->_root[1][1]['/Pages']);
*/
function fpdi_pdf_parser($filename, &$fpdi) { // Read pages
$this->fpdi =& $fpdi; $this->_readPages($pages, $this->_pages);
parent::pdf_parser($filename); // count pages;
$this->_pageCount = count($this->_pages);
// resolve Pages-Dictonary }
$pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
/**
// Read pages * Get page count from source file.
$this->read_pages($this->c, $pages, $this->pages); *
* @return int
// count pages; */
$this->page_count = count($this->pages); public function getPageCount()
} {
return $this->_pageCount;
/** }
* Overwrite parent::error()
* /**
* @param string $msg Error-Message * Set the page number.
*/ *
function error($msg) { * @param int $pageNo Page number to use
$this->fpdi->error($msg); * @throws InvalidArgumentException
} */
public function setPageNo($pageNo)
/** {
* Get pagecount from sourcefile $pageNo = ((int) $pageNo) - 1;
*
* @return int if ($pageNo < 0 || $pageNo >= $this->getPageCount()) {
*/ throw new InvalidArgumentException('Invalid page number!');
function getPageCount() { }
return $this->page_count;
} $this->pageNo = $pageNo;
}
/** /**
* Set pageno * Get page-resources from current page
* *
* @param int $pageno Pagenumber to use * @return array|boolean
*/ */
function setPageno($pageno) { public function getPageResources()
$pageno = ((int) $pageno) - 1; {
return $this->_getPageResources($this->_pages[$this->pageNo]);
if ($pageno < 0 || $pageno >= $this->getPageCount()) { }
$this->fpdi->error('Pagenumber is wrong!');
} /**
* Get page-resources from a /Page dictionary.
$this->pageno = $pageno; *
} * @param array $obj Array of pdf-data
* @return array|boolean
/** */
* Get page-resources from current page protected function _getPageResources($obj)
* {
* @return array $obj = $this->resolveObject($obj);
*/
function getPageResources() { // If the current object has a resources
return $this->_getPageResources($this->pages[$this->pageno]); // dictionary associated with it, we use
} // it. Otherwise, we move back to its
// parent object.
/** if (isset($obj[1][1]['/Resources'])) {
* Get page-resources from /Page $res = $this->resolveObject($obj[1][1]['/Resources']);
* if ($res[0] == pdf_parser::TYPE_OBJECT)
* @param array $obj Array of pdf-data return $res[1];
*/ return $res;
function _getPageResources ($obj) { // $obj = /Page }
$obj = $this->pdf_resolve_object($this->c, $obj);
if (!isset($obj[1][1]['/Parent'])) {
// If the current object has a resources return false;
// dictionary associated with it, we use }
// it. Otherwise, we move back to its
// parent object. $res = $this->_getPageResources($obj[1][1]['/Parent']);
if (isset ($obj[1][1]['/Resources'])) { if ($res[0] == pdf_parser::TYPE_OBJECT)
$res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']); return $res[1];
if ($res[0] == PDF_TYPE_OBJECT) return $res;
return $res[1]; }
return $res;
} else { /**
if (!isset ($obj[1][1]['/Parent'])) { * Get content of current page.
return false; *
} else { * If /Contents is an array, the streams are concatenated
$res = $this->_getPageResources($obj[1][1]['/Parent']); *
if ($res[0] == PDF_TYPE_OBJECT) * @return string
return $res[1]; */
return $res; public function getContent()
} {
} $buffer = '';
}
if (isset($this->_pages[$this->pageNo][1][1]['/Contents'])) {
$contents = $this->_getPageContent($this->_pages[$this->pageNo][1][1]['/Contents']);
/** foreach ($contents AS $tmpContent) {
* Get content of current page if ($tmpContent[0] !== pdf_parser::TYPE_STREAM) {
* continue;
* If more /Contents is an array, the streams are concated }
*
* @return string $buffer .= $this->_unFilterStream($tmpContent) . ' ';
*/ }
function getContent() { }
$buffer = '';
return $buffer;
if (isset($this->pages[$this->pageno][1][1]['/Contents'])) { }
$contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
foreach($contents AS $tmp_content) { /**
$buffer .= $this->_rebuildContentStream($tmp_content).' '; * Resolve all content objects.
} *
} * @param array $contentRef
* @return array
return $buffer; */
} protected function _getPageContent($contentRef)
{
$contents = array();
/**
* Resolve all content-objects if ($contentRef[0] == pdf_parser::TYPE_OBJREF) {
* $content = $this->resolveObject($contentRef);
* @param array $content_ref if ($content[1][0] == pdf_parser::TYPE_ARRAY) {
* @return array $contents = $this->_getPageContent($content[1]);
*/ } else {
function _getPageContent($content_ref) { $contents[] = $content;
$contents = array(); }
} else if ($contentRef[0] == pdf_parser::TYPE_ARRAY) {
if ($content_ref[0] == PDF_TYPE_OBJREF) { foreach ($contentRef[1] AS $tmp_content_ref) {
$content = $this->pdf_resolve_object($this->c, $content_ref); $contents = array_merge($contents, $this->_getPageContent($tmp_content_ref));
if ($content[1][0] == PDF_TYPE_ARRAY) { }
$contents = $this->_getPageContent($content[1]); }
} else {
$contents[] = $content; return $contents;
} }
} else if ($content_ref[0] == PDF_TYPE_ARRAY) {
foreach ($content_ref[1] AS $tmp_content_ref) { /**
$contents = array_merge($contents,$this->_getPageContent($tmp_content_ref)); * Get a boundary box from a page
} *
} * Array format is same as used by FPDF_TPL.
*
return $contents; * @param array $page a /Page dictionary
} * @param string $boxIndex Type of box {see {@link $availableBoxes})
* @param float Scale factor from user space units to points
*
/** * @return array|boolean
* Rebuild content-streams */
* protected function _getPageBox($page, $boxIndex, $k)
* @param array $obj {
* @return string $page = $this->resolveObject($page);
*/ $box = null;
function _rebuildContentStream($obj) { if (isset($page[1][1][$boxIndex])) {
$filters = array(); $box = $page[1][1][$boxIndex];
}
if (isset($obj[1][1]['/Filter'])) {
$_filter = $obj[1][1]['/Filter']; if (!is_null($box) && $box[0] == pdf_parser::TYPE_OBJREF) {
$tmp_box = $this->resolveObject($box);
if ($_filter[0] == PDF_TYPE_TOKEN) { $box = $tmp_box[1];
$filters[] = $_filter; }
} else if ($_filter[0] == PDF_TYPE_ARRAY) {
$filters = $_filter[1]; if (!is_null($box) && $box[0] == pdf_parser::TYPE_ARRAY) {
} $b = $box[1];
} return array(
'x' => $b[0][1] / $k,
$stream = $obj[2][1]; 'y' => $b[1][1] / $k,
'w' => abs($b[0][1] - $b[2][1]) / $k,
foreach ($filters AS $_filter) { 'h' => abs($b[1][1] - $b[3][1]) / $k,
switch ($_filter[1]) { 'llx' => min($b[0][1], $b[2][1]) / $k,
case '/FlateDecode': 'lly' => min($b[1][1], $b[3][1]) / $k,
if (function_exists('gzuncompress')) { 'urx' => max($b[0][1], $b[2][1]) / $k,
$stream = (strlen($stream) > 0) ? @gzuncompress($stream) : ''; 'ury' => max($b[1][1], $b[3][1]) / $k,
} else { );
$this->error(sprintf('To handle %s filter, please compile php with zlib support.',$_filter[1])); } else if (!isset($page[1][1]['/Parent'])) {
} return false;
if ($stream === false) { } else {
$this->error('Error while decompressing stream.'); return $this->_getPageBox($this->resolveObject($page[1][1]['/Parent']), $boxIndex, $k);
} }
break; }
case '/LZWDecode':
include_once('filters/FilterLZW_FPDI.php'); /**
$decoder = new FilterLZW_FPDI($this->fpdi); * Get all page boundary boxes by page number
$stream = $decoder->decode($stream); *
break; * @param int $pageNo The page number
case '/ASCII85Decode': * @param float $k Scale factor from user space units to points
include_once('filters/FilterASCII85_FPDI.php'); * @return array
$decoder = new FilterASCII85_FPDI($this->fpdi); * @throws InvalidArgumentException
$stream = $decoder->decode($stream); */
break; public function getPageBoxes($pageNo, $k)
case null: {
$stream = $stream; if (!isset($this->_pages[$pageNo - 1])) {
break; throw new InvalidArgumentException('Page ' . $pageNo . ' does not exists.');
default: }
$this->error(sprintf('Unsupported Filter: %s',$_filter[1]));
} return $this->_getPageBoxes($this->_pages[$pageNo - 1], $k);
} }
return $stream; /**
} * Get all boxes from /Page dictionary
*
* @param array $page A /Page dictionary
/** * @param float $k Scale factor from user space units to points
* Get a Box from a page * @return array
* Arrayformat is same as used by fpdf_tpl */
* protected function _getPageBoxes($page, $k)
* @param array $page a /Page {
* @param string $box_index Type of Box @see $availableBoxes $boxes = array();
* @return array
*/ foreach($this->availableBoxes AS $box) {
function getPageBox($page, $box_index) { if ($_box = $this->_getPageBox($page, $box, $k)) {
$page = $this->pdf_resolve_object($this->c,$page); $boxes[$box] = $_box;
$box = null; }
if (isset($page[1][1][$box_index])) }
$box =& $page[1][1][$box_index];
return $boxes;
if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) { }
$tmp_box = $this->pdf_resolve_object($this->c,$box);
$box = $tmp_box[1]; /**
} * Get the page rotation by page number
*
if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) { * @param integer $pageNo
$b =& $box[1]; * @throws InvalidArgumentException
return array('x' => $b[0][1]/$this->fpdi->k, * @return array
'y' => $b[1][1]/$this->fpdi->k, */
'w' => abs($b[0][1]-$b[2][1])/$this->fpdi->k, public function getPageRotation($pageNo)
'h' => abs($b[1][1]-$b[3][1])/$this->fpdi->k, {
'llx' => min($b[0][1], $b[2][1])/$this->fpdi->k, if (!isset($this->_pages[$pageNo - 1])) {
'lly' => min($b[1][1], $b[3][1])/$this->fpdi->k, throw new InvalidArgumentException('Page ' . $pageNo . ' does not exists.');
'urx' => max($b[0][1], $b[2][1])/$this->fpdi->k, }
'ury' => max($b[1][1], $b[3][1])/$this->fpdi->k,
); return $this->_getPageRotation($this->_pages[$pageNo - 1]);
} else if (!isset ($page[1][1]['/Parent'])) { }
return false;
} else { /**
return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index); * Get the rotation value of a page
} *
} * @param array $obj A /Page dictionary
* @return array|bool
function getPageBoxes($pageno) { */
return $this->_getPageBoxes($this->pages[$pageno-1]); protected function _getPageRotation($obj)
} {
$obj = $this->resolveObject($obj);
/** if (isset($obj[1][1]['/Rotate'])) {
* Get all Boxes from /Page $res = $this->resolveObject($obj[1][1]['/Rotate']);
* if ($res[0] == pdf_parser::TYPE_OBJECT)
* @param array a /Page return $res[1];
* @return array return $res;
*/ }
function _getPageBoxes($page) {
$boxes = array(); if (!isset($obj[1][1]['/Parent'])) {
return false;
foreach($this->availableBoxes AS $box) { }
if ($_box = $this->getPageBox($page,$box)) {
$boxes[$box] = $_box; $res = $this->_getPageRotation($obj[1][1]['/Parent']);
} if ($res[0] == pdf_parser::TYPE_OBJECT)
} return $res[1];
return $boxes; return $res;
} }
/** /**
* Get the page rotation by pageno * Read all pages
* *
* @param integer $pageno * @param array $pages /Pages dictionary
* @return array * @param array $result The result array
*/ * @throws Exception
function getPageRotation($pageno) { */
return $this->_getPageRotation($this->pages[$pageno-1]); protected function _readPages(&$pages, &$result)
} {
// Get the kids dictionary
function _getPageRotation ($obj) { // $obj = /Page $_kids = $this->resolveObject($pages[1][1]['/Kids']);
$obj = $this->pdf_resolve_object($this->c, $obj);
if (isset ($obj[1][1]['/Rotate'])) { if (!is_array($_kids)) {
$res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']); throw new Exception('Cannot find /Kids in current /Page-Dictionary');
if ($res[0] == PDF_TYPE_OBJECT) }
return $res[1];
return $res; if ($_kids[0] === self::TYPE_OBJECT) {
} else { $_kids = $_kids[1];
if (!isset ($obj[1][1]['/Parent'])) { }
return false;
} else { $kids = $_kids[1];
$res = $this->_getPageRotation($obj[1][1]['/Parent']);
if ($res[0] == PDF_TYPE_OBJECT) foreach ($kids as $v) {
return $res[1]; $pg = $this->resolveObject($v);
return $res; if ($pg[0] !== pdf_parser::TYPE_OBJECT) {
} throw new Exception('Invalid data type in page tree.');
} }
}
if ($pg[1][1]['/Type'][1] === '/Pages') {
/** // If one of the kids is an embedded
* Read all /Page(es) // /Pages array, resolve it as well.
* $this->_readPages($pg, $result);
* @param object pdf_context } else {
* @param array /Pages $result[] = $pg;
* @param array the result-array }
*/ }
function read_pages (&$c, &$pages, &$result) { }
// Get the kids dictionary }
$kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']);
if (!is_array($kids))
$this->error('Cannot find /Kids in current /Page-Dictionary');
foreach ($kids[1] as $v) {
$pg = $this->pdf_resolve_object ($c, $v);
if ($pg[1][1]['/Type'][1] === '/Pages') {
// If one of the kids is an embedded
// /Pages array, resolve it as well.
$this->read_pages ($c, $pg, $result);
} else {
$result[] = $pg;
}
}
}
/**
* Get PDF-Version
*
* And reset the PDF Version used in FPDI if needed
*/
function getPDFVersion() {
parent::getPDFVersion();
$this->fpdi->PDFVersion = max($this->fpdi->PDFVersion, $this->pdfVersion);
}
}

View File

@ -1,6 +1,6 @@
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software to use, copy, modify, distribute, sublicense, and/or sell of this software to use, copy, modify, distribute, sublicense, and/or sell
copies of the software, and to permit persons to whom the software is furnished copies of the software, and to permit persons to whom the software is furnished
to do so. to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

View File

@ -1,97 +1,151 @@
<?php <?php
// /**
// FPDI - Version 1.3.1 * This file is part of FPDI
// *
// Copyright 2004-2009 Setasign - Jan Slabon * @package FPDI
// * @copyright Copyright (c) 2017 Setasign - Jan Slabon (https://www.setasign.com)
// Licensed under the Apache License, Version 2.0 (the "License"); * @license http://opensource.org/licenses/mit-license The MIT License
// you may not use this file except in compliance with the License. * @version 1.6.2
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0 /**
// * Class pdf_context
// Unless required by applicable law or agreed to in writing, software */
// distributed under the License is distributed on an "AS IS" BASIS, class pdf_context
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. {
// See the License for the specific language governing permissions and /**
// limitations under the License. * Mode
// *
* @var integer 0 = file | 1 = string
class pdf_context { */
protected $_mode = 0;
/**
* Modi /**
* * @var resource|string
* @var integer 0 = file | 1 = string */
*/ public $file;
var $_mode = 0;
/**
var $file; * @var string
var $buffer; */
var $offset; public $buffer;
var $length;
/**
var $stack; * @var integer
*/
// Constructor public $offset;
function pdf_context(&$f) { /**
$this->file =& $f; * @var integer
if (is_string($this->file)) */
$this->_mode = 1; public $length;
$this->reset();
} /**
* @var array
// Optionally move the file */
// pointer to a new location public $stack;
// and reset the buffered data
/**
function reset($pos = null, $l = 100) { * The constructor
if ($this->_mode == 0) { *
if (!is_null ($pos)) { * @param resource $f
fseek ($this->file, $pos); */
} public function __construct(&$f)
{
$this->buffer = $l > 0 ? fread($this->file, $l) : ''; $this->file =& $f;
$this->length = strlen($this->buffer); if (is_string($this->file))
if ($this->length < $l) $this->_mode = 1;
$this->increase_length($l - $this->length);
} else { $this->reset();
$this->buffer = $this->file; }
$this->length = strlen($this->buffer);
} /**
$this->offset = 0; * Get the position in the file stream
$this->stack = array(); *
} * @return int
*/
// Make sure that there is at least one public function getPos()
// character beyond the current offset in {
// the buffer to prevent the tokenizer if ($this->_mode == 0) {
// from attempting to access data that does if (feof($this->file)) {
// not exist $stat = fstat($this->file);
fseek($this->file, $stat['size']);
function ensure_content() { }
if ($this->offset >= $this->length - 1) {
return $this->increase_length(); $pos = ftell($this->file);
} else {
return true; return $pos;
} } else {
} return 0;
}
// Forcefully read more data into the buffer }
function increase_length($l=100) { /**
if ($this->_mode == 0 && feof($this->file)) { * Reset the position in the file stream.
return false; *
} else if ($this->_mode == 0) { * Optionally move the file pointer to a new location and reset the buffered data.
$totalLength = $this->length + $l; *
do { * @param null $pos
$this->buffer .= fread($this->file, $totalLength-$this->length); * @param int $l
} while ((($this->length = strlen($this->buffer)) != $totalLength) && !feof($this->file)); */
public function reset($pos = null, $l = 100)
return true; {
} else { if ($this->_mode == 0) {
return false; if (!is_null($pos)) {
} fseek($this->file, $pos);
} }
$this->buffer = $l > 0 ? fread($this->file, $l) : '';
$this->length = strlen($this->buffer);
if ($this->length < $l)
$this->increaseLength($l - $this->length);
} else {
$this->buffer = $this->file;
$this->length = strlen($this->buffer);
}
$this->offset = 0;
$this->stack = array();
}
/**
* Make sure that there is at least one character beyond the current offset in the buffer.
*
* To prevent the tokenizer from attempting to access data that does not exist.
*
* @return bool
*/
public function ensureContent()
{
if ($this->offset >= $this->length - 1) {
return $this->increaseLength();
} else {
return true;
}
}
/**
* Forcefully read more data into the buffer
*
* @param int $l
* @return bool
*/
public function increaseLength($l = 100)
{
if ($this->_mode == 0 && feof($this->file)) {
return false;
} else if ($this->_mode == 0) {
$totalLength = $this->length + $l;
do {
$toRead = $totalLength - $this->length;
if ($toRead < 1)
break;
$this->buffer .= fread($this->file, $toRead);
} while ((($this->length = strlen($this->buffer)) != $totalLength) && !feof($this->file));
return true;
} else {
return false;
}
}
} }

File diff suppressed because it is too large Load Diff