mirror of
https://github.com/vdm-io/tcpdf.git
synced 2024-11-29 07:33:54 +00:00
5.9.089
This commit is contained in:
parent
60b4752dcb
commit
751305838f
@ -1,3 +1,10 @@
|
||||
5.9.089 (2011-06-13)
|
||||
- Example n. 8 was updated.
|
||||
- Method sendOutputData() was changed to remove default compression (it was incompatible with some server settings).
|
||||
- Bugs related to page group numbers were fixed.
|
||||
- Method copyPage() was fixed.
|
||||
- Method Image() was improved to include support for alternative and external images.
|
||||
|
||||
5.9.088 (2011-06-01)
|
||||
- Method getAutoPageBreak() was added (see example n. 51).
|
||||
- Example n. 51 (full page background) was updated.
|
||||
|
@ -8,8 +8,8 @@ http://sourceforge.net/donate/index.php?group_id=128076
|
||||
------------------------------------------------------------
|
||||
|
||||
Name: TCPDF
|
||||
Version: 5.9.088
|
||||
Release date: 2011-06-01
|
||||
Version: 5.9.089
|
||||
Release date: 2011-06-13
|
||||
Author: Nicola Asuni
|
||||
|
||||
Copyright (c) 2002-2011:
|
||||
|
10
cache/utf8test.txt
vendored
10
cache/utf8test.txt
vendored
@ -1,10 +1,16 @@
|
||||
Sentences that contain all letters commonly used in a language
|
||||
--------------------------------------------------------------
|
||||
|
||||
Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02
|
||||
|
||||
This file is UTF-8 encoded.
|
||||
|
||||
Czech (cz)
|
||||
---------
|
||||
|
||||
Příšerně žluťoučký kůň úpěl ďábelské ódy.
|
||||
Hleď, toť přízračný kůň v mátožné póze šíleně úpí.
|
||||
Zvlášť zákeřný učeň s ďolíčky běží podél zóny úlů.
|
||||
Loď čeří kýlem tůň obzvlášť v Grónské úžině.
|
||||
Ó, náhlý déšť již zvířil prach a čilá laň teď běží s houfcem gazel k úkrytům.
|
||||
|
||||
Danish (da)
|
||||
---------
|
||||
|
445
tcpdf.php
445
tcpdf.php
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf.php
|
||||
// Version : 5.9.088
|
||||
// Version : 5.9.089
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2011-06-01
|
||||
// Last Update : 2011-06-13
|
||||
// Author : Nicola Asuni - Tecnick.com S.r.l - Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
|
||||
// License : http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT GNU-LGPLv3 + YOU CAN'T REMOVE ANY TCPDF COPYRIGHT NOTICE OR LINK FROM THE GENERATED PDF DOCUMENTS.
|
||||
// -------------------------------------------------------------------
|
||||
@ -134,7 +134,7 @@
|
||||
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @author Nicola Asuni
|
||||
* @version 5.9.088
|
||||
* @version 5.9.089
|
||||
*/
|
||||
|
||||
// Main configuration file. Define the K_TCPDF_EXTERNAL_CONFIG constant to skip this file.
|
||||
@ -146,7 +146,7 @@ require_once(dirname(__FILE__).'/config/tcpdf_config.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 5.9.088
|
||||
* @version 5.9.089
|
||||
* @author Nicola Asuni - info@tecnick.com
|
||||
*/
|
||||
class TCPDF {
|
||||
@ -157,7 +157,7 @@ class TCPDF {
|
||||
* Current TCPDF version.
|
||||
* @private
|
||||
*/
|
||||
private $tcpdf_version = '5.9.088';
|
||||
private $tcpdf_version = '5.9.089';
|
||||
|
||||
// Protected properties
|
||||
|
||||
@ -511,13 +511,25 @@ class TCPDF {
|
||||
* String alias for total number of pages.
|
||||
* @protected
|
||||
*/
|
||||
protected $AliasNbPages = '{nb}';
|
||||
protected $alias_tot_pages = '{nb}';
|
||||
|
||||
/**
|
||||
* String alias for page number.
|
||||
* @protected
|
||||
*/
|
||||
protected $AliasNumPage = '{pnb}';
|
||||
protected $alias_num_page = '{pnb}';
|
||||
|
||||
/**
|
||||
* String alias for total number of pages in a single group.
|
||||
* @protected
|
||||
*/
|
||||
protected $alias_group_tot_pages = '{gnb}';
|
||||
|
||||
/**
|
||||
* String alias for group page number.
|
||||
* @protected
|
||||
*/
|
||||
protected $alias_group_num_page = '{gpnb}';
|
||||
|
||||
/**
|
||||
* The right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image.
|
||||
@ -863,25 +875,25 @@ class TCPDF {
|
||||
protected $dpi = 72;
|
||||
|
||||
/**
|
||||
* Array of page numbers were a new page group was started.
|
||||
* Array of page numbers were a new page group was started (the page numbers are the keys of the array).
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $newpagegroup = array();
|
||||
|
||||
/**
|
||||
* Contains the number of pages of the groups.
|
||||
* Array that contains the number of pages in each page group.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $pagegroups;
|
||||
protected $pagegroups = array();
|
||||
|
||||
/**
|
||||
* Contains the alias of the current page group.
|
||||
* Current page group number.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $currpagegroup;
|
||||
protected $currpagegroup = 0;
|
||||
|
||||
/**
|
||||
* Restrict the rendering of some elements to screen or printout.
|
||||
@ -4310,7 +4322,7 @@ class TCPDF {
|
||||
* @return int page number
|
||||
* @public
|
||||
* @since 1.0
|
||||
* @see AliasNbPages(), getAliasNbPages()
|
||||
* @see alias_tot_pages(), getAliasNbPages()
|
||||
*/
|
||||
public function PageNo() {
|
||||
return $this->page;
|
||||
@ -7248,7 +7260,7 @@ class TCPDF {
|
||||
* The format can be specified explicitly or inferred from the file extension.<br />
|
||||
* It is possible to put a link on the image.<br />
|
||||
* Remark: if an image is used several times, only one copy will be embedded in the file.<br />
|
||||
* @param $file (string) Name of the file containing the image or a '@' character followed by the image data string.
|
||||
* @param $file (string) Name of the file containing the image or a '@' character followed by the image data string. To link an image without embedding it on the document, set an asterisk character before the URL (i.e.: '*http://www.example.com/image.jpg').
|
||||
* @param $x (float) Abscissa of the upper-left corner (LTR) or upper-right corner (RTL).
|
||||
* @param $y (float) Ordinate of the upper-left corner (LTR) or upper-right corner (RTL).
|
||||
* @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
|
||||
@ -7263,13 +7275,15 @@ class TCPDF {
|
||||
* @param $imgmask (mixed) image object returned by this function or false
|
||||
* @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
|
||||
* @param $fitbox (mixed) If not false scale image dimensions proportionally to fit within the ($w, $h) box. $fitbox can be true or a 2 characters string indicating the image alignment inside the box. The first character indicate the horizontal alignment (L = left, C = center, R = right) the second character indicate the vertical algnment (T = top, M = middle, B = bottom).
|
||||
* @param $hidden (boolean) if true do not display the image.
|
||||
* @param $fitonpage (boolean) if true the image is resized to not exceed page dimensions.
|
||||
* @param $hidden (boolean) If true do not display the image.
|
||||
* @param $fitonpage (boolean) If true the image is resized to not exceed page dimensions.
|
||||
* @param $alt (boolean) If true the image will be added as alternative and not directly printed (the ID of the image will be returned).
|
||||
* @param $altimgs (array) Array of alternate images IDs. Each alternative image must be an array with two values: an integer representing the image ID (the value returned by the Image method) and a boolean value to indicate if the image is the default for printing.
|
||||
* @return image information
|
||||
* @public
|
||||
* @since 1.1
|
||||
*/
|
||||
public function Image($file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false) {
|
||||
public function Image($file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false, $alt=false, $altimgs=array()) {
|
||||
if ($x === '') {
|
||||
$x = $this->x;
|
||||
}
|
||||
@ -7279,8 +7293,10 @@ class TCPDF {
|
||||
// check page for no-write regions and adapt page margins if necessary
|
||||
list($x, $y) = $this->checkPageRegions($h, $x, $y);
|
||||
$cached_file = false; // true when the file is cached
|
||||
$exurl = ''; // external streams
|
||||
// check if we are passing an image as file or string
|
||||
if ($file{0} === '@') { // image from string
|
||||
if ($file{0} === '@') {
|
||||
// image from string
|
||||
$imgdata = substr($file, 1);
|
||||
$file = K_PATH_CACHE.'img_'.md5($imgdata);
|
||||
$fp = fopen($file, 'w');
|
||||
@ -7294,6 +7310,11 @@ class TCPDF {
|
||||
$cached_file = false;
|
||||
}
|
||||
} else { // image file
|
||||
if ($file{0} === '*') {
|
||||
// image as external stream
|
||||
$file = substr($file, 1);
|
||||
$exurl = $file;
|
||||
}
|
||||
// check if is local file
|
||||
if (!@file_exists($file)) {
|
||||
// encode spaces on filename (file is probably an URL)
|
||||
@ -7579,6 +7600,11 @@ class TCPDF {
|
||||
if ($imgmask !== false) {
|
||||
$info['masked'] = $imgmask;
|
||||
}
|
||||
if (!empty($exurl)) {
|
||||
$info['exurl'] = $exurl;
|
||||
}
|
||||
// array of alternative images
|
||||
$info['altimgs'] = $altimgs;
|
||||
// add image to document
|
||||
$this->setImageBuffer($file, $info);
|
||||
}
|
||||
@ -7617,7 +7643,10 @@ class TCPDF {
|
||||
return $info['i'];
|
||||
}
|
||||
$xkimg = $ximg * $this->k;
|
||||
$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%u Do Q', ($w * $this->k), ($h * $this->k), $xkimg, (($this->h - ($y + $h)) * $this->k), $info['i']));
|
||||
if (!$alt) {
|
||||
// only non-alternative immages will be set
|
||||
$this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%u Do Q', ($w * $this->k), ($h * $this->k), $xkimg, (($this->h - ($y + $h)) * $this->k), $info['i']));
|
||||
}
|
||||
if (!empty($border)) {
|
||||
$bx = $this->x;
|
||||
$by = $this->y;
|
||||
@ -8160,32 +8189,9 @@ class TCPDF {
|
||||
* @since 5.9.086
|
||||
*/
|
||||
protected function sendOutputData($data, $lenght) {
|
||||
// set no-encoding by default
|
||||
$enc = false;
|
||||
// check for encoding support
|
||||
if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
|
||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) {
|
||||
$enc = 'x-gzip';
|
||||
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
|
||||
$enc = 'gzip';
|
||||
} elseif (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') !== false) {
|
||||
$enc = 'deflate';
|
||||
} else {
|
||||
// unsupported encoding
|
||||
$enc = '-1';
|
||||
}
|
||||
}
|
||||
if ($enc === false) {
|
||||
// no compression
|
||||
if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
|
||||
// the content length may vary if the server is using compression
|
||||
header('Content-Length: '.$lenght);
|
||||
} elseif (($enc != '-1') AND function_exists('gzencode')) {
|
||||
if ($enc{0} == 'd') {
|
||||
$data = gzdeflate($data, 9);
|
||||
} else {
|
||||
$data = gzencode($data, 9, FORCE_GZIP);
|
||||
}
|
||||
header('Content-Encoding: '.$enc);
|
||||
header('Content-Length: '.strlen($data));
|
||||
}
|
||||
echo $data;
|
||||
}
|
||||
@ -8465,80 +8471,83 @@ class TCPDF {
|
||||
*/
|
||||
protected function _putpages() {
|
||||
$nb = $this->numpages;
|
||||
if (!empty($this->AliasNbPages)) {
|
||||
if (!empty($this->alias_tot_pages)) {
|
||||
$nbs = $this->formatPageNumber($nb);
|
||||
$nbu = $this->UTF8ToUTF16BE($nbs, false); // replacement for unicode font
|
||||
$alias_a = $this->_escape($this->AliasNbPages);
|
||||
$alias_au = $this->_escape('{'.$this->AliasNbPages.'}');
|
||||
$alias_a = $this->_escape($this->alias_tot_pages);
|
||||
$alias_au = $this->_escape('{'.$this->alias_tot_pages.'}');
|
||||
if ($this->isunicode) {
|
||||
$alias_b = $this->_escape($this->UTF8ToLatin1($this->AliasNbPages));
|
||||
$alias_bu = $this->_escape($this->UTF8ToLatin1('{'.$this->AliasNbPages.'}'));
|
||||
$alias_c = $this->_escape($this->utf8StrRev($this->AliasNbPages, false, $this->tmprtl));
|
||||
$alias_cu = $this->_escape($this->utf8StrRev('{'.$this->AliasNbPages.'}', false, $this->tmprtl));
|
||||
$alias_b = $this->_escape($this->UTF8ToLatin1($this->alias_tot_pages));
|
||||
$alias_bu = $this->_escape($this->UTF8ToLatin1('{'.$this->alias_tot_pages.'}'));
|
||||
$alias_c = $this->_escape($this->utf8StrRev($this->alias_tot_pages, false, $this->tmprtl));
|
||||
$alias_cu = $this->_escape($this->utf8StrRev('{'.$this->alias_tot_pages.'}', false, $this->tmprtl));
|
||||
}
|
||||
}
|
||||
if (!empty($this->AliasNumPage)) {
|
||||
$alias_pa = $this->_escape($this->AliasNumPage);
|
||||
$alias_pau = $this->_escape('{'.$this->AliasNumPage.'}');
|
||||
if (!empty($this->alias_num_page)) {
|
||||
$alias_pa = $this->_escape($this->alias_num_page);
|
||||
$alias_pau = $this->_escape('{'.$this->alias_num_page.'}');
|
||||
if ($this->isunicode) {
|
||||
$alias_pb = $this->_escape($this->UTF8ToLatin1($this->AliasNumPage));
|
||||
$alias_pbu = $this->_escape($this->UTF8ToLatin1('{'.$this->AliasNumPage.'}'));
|
||||
$alias_pc = $this->_escape($this->utf8StrRev($this->AliasNumPage, false, $this->tmprtl));
|
||||
$alias_pcu = $this->_escape($this->utf8StrRev('{'.$this->AliasNumPage.'}', false, $this->tmprtl));
|
||||
$alias_pb = $this->_escape($this->UTF8ToLatin1($this->alias_num_page));
|
||||
$alias_pbu = $this->_escape($this->UTF8ToLatin1('{'.$this->alias_num_page.'}'));
|
||||
$alias_pc = $this->_escape($this->utf8StrRev($this->alias_num_page, false, $this->tmprtl));
|
||||
$alias_pcu = $this->_escape($this->utf8StrRev('{'.$this->alias_num_page.'}', false, $this->tmprtl));
|
||||
}
|
||||
}
|
||||
$pagegroupnum = 0;
|
||||
$groupnum = 0;
|
||||
$filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
|
||||
for ($n=1; $n <= $nb; ++$n) {
|
||||
for ($n = 1; $n <= $nb; ++$n) {
|
||||
$temppage = $this->getPageBuffer($n);
|
||||
if (!empty($this->pagegroups)) {
|
||||
if (isset($this->newpagegroup[$n])) {
|
||||
$pagegroupnum = 0;
|
||||
++$groupnum;
|
||||
}
|
||||
++$pagegroupnum;
|
||||
foreach ($this->pagegroups as $k => $v) {
|
||||
// replace total pages group numbers
|
||||
$vs = $this->formatPageNumber($v);
|
||||
$vu = $this->UTF8ToUTF16BE($vs, false);
|
||||
$alias_ga = $this->_escape($k);
|
||||
$alias_gau = $this->_escape('{'.$k.'}');
|
||||
if ($this->isunicode) {
|
||||
$alias_gb = $this->_escape($this->UTF8ToLatin1($k));
|
||||
$alias_gbu = $this->_escape($this->UTF8ToLatin1('{'.$k.'}'));
|
||||
$alias_gc = $this->_escape($this->utf8StrRev($k, false, $this->tmprtl));
|
||||
$alias_gcu = $this->_escape($this->utf8StrRev('{'.$k.'}', false, $this->tmprtl));
|
||||
}
|
||||
$temppage = str_replace($alias_gau, $vu, $temppage);
|
||||
if ($this->isunicode) {
|
||||
$temppage = str_replace($alias_gbu, $vu, $temppage);
|
||||
$temppage = str_replace($alias_gcu, $vu, $temppage);
|
||||
$temppage = str_replace($alias_gb, $vs, $temppage);
|
||||
$temppage = str_replace($alias_gc, $vs, $temppage);
|
||||
}
|
||||
$temppage = str_replace($alias_ga, $vs, $temppage);
|
||||
// replace page group numbers
|
||||
$pvs = $this->formatPageNumber($pagegroupnum);
|
||||
$pvu = $this->UTF8ToUTF16BE($pvs, false);
|
||||
$pk = str_replace('{nb', '{pnb', $k);
|
||||
$alias_pga = $this->_escape($pk);
|
||||
$alias_pgau = $this->_escape('{'.$pk.'}');
|
||||
if ($this->isunicode) {
|
||||
$alias_pgb = $this->_escape($this->UTF8ToLatin1($pk));
|
||||
$alias_pgbu = $this->_escape($this->UTF8ToLatin1('{'.$pk.'}'));
|
||||
$alias_pgc = $this->_escape($this->utf8StrRev($pk, false, $this->tmprtl));
|
||||
$alias_pgcu = $this->_escape($this->utf8StrRev('{'.$pk.'}', false, $this->tmprtl));
|
||||
}
|
||||
$temppage = str_replace($alias_pgau, $pvu, $temppage);
|
||||
if ($this->isunicode) {
|
||||
$temppage = str_replace($alias_pgbu, $pvu, $temppage);
|
||||
$temppage = str_replace($alias_pgcu, $pvu, $temppage);
|
||||
$temppage = str_replace($alias_pgb, $pvs, $temppage);
|
||||
$temppage = str_replace($alias_pgc, $pvs, $temppage);
|
||||
}
|
||||
$temppage = str_replace($alias_pga, $pvs, $temppage);
|
||||
$ka = $this->alias_group_tot_pages;
|
||||
$kb = '{'.$ka.'}';
|
||||
$kpa = $this->alias_group_num_page;
|
||||
$kpb = '{'.$kpa.'}';
|
||||
// replace total pages group numbers
|
||||
$vs = $this->formatPageNumber($this->pagegroups[$groupnum]);
|
||||
$vu = $this->UTF8ToUTF16BE($vs, false);
|
||||
$alias_ga = $this->_escape($ka);
|
||||
$alias_gau = $this->_escape($kb);
|
||||
if ($this->isunicode) {
|
||||
$alias_gb = $this->_escape($this->UTF8ToLatin1($ka));
|
||||
$alias_gbu = $this->_escape($this->UTF8ToLatin1($kb));
|
||||
$alias_gc = $this->_escape($this->utf8StrRev($ka, false, $this->tmprtl));
|
||||
$alias_gcu = $this->_escape($this->utf8StrRev($kb, false, $this->tmprtl));
|
||||
}
|
||||
$temppage = str_replace($alias_gau, $vu, $temppage);
|
||||
if ($this->isunicode) {
|
||||
$temppage = str_replace($alias_gbu, $vu, $temppage);
|
||||
$temppage = str_replace($alias_gcu, $vu, $temppage);
|
||||
$temppage = str_replace($alias_gb, $vs, $temppage);
|
||||
$temppage = str_replace($alias_gc, $vs, $temppage);
|
||||
}
|
||||
$temppage = str_replace($alias_ga, $vs, $temppage);
|
||||
// replace page group numbers
|
||||
$pvs = $this->formatPageNumber($pagegroupnum);
|
||||
$pvu = $this->UTF8ToUTF16BE($pvs, false);
|
||||
$alias_pga = $this->_escape($kpa);
|
||||
$alias_pgau = $this->_escape($kpb);
|
||||
if ($this->isunicode) {
|
||||
$alias_pgb = $this->_escape($this->UTF8ToLatin1($kpa));
|
||||
$alias_pgbu = $this->_escape($this->UTF8ToLatin1($kpb));
|
||||
$alias_pgc = $this->_escape($this->utf8StrRev($kpa, false, $this->tmprtl));
|
||||
$alias_pgcu = $this->_escape($this->utf8StrRev($kpb, false, $this->tmprtl));
|
||||
}
|
||||
$temppage = str_replace($alias_pgau, $pvu, $temppage);
|
||||
if ($this->isunicode) {
|
||||
$temppage = str_replace($alias_pgbu, $pvu, $temppage);
|
||||
$temppage = str_replace($alias_pgcu, $pvu, $temppage);
|
||||
$temppage = str_replace($alias_pgb, $pvs, $temppage);
|
||||
$temppage = str_replace($alias_pgc, $pvs, $temppage);
|
||||
}
|
||||
$temppage = str_replace($alias_pga, $pvs, $temppage);
|
||||
}
|
||||
if (!empty($this->AliasNbPages)) {
|
||||
if (!empty($this->alias_tot_pages)) {
|
||||
// replace total pages number
|
||||
$temppage = str_replace($alias_au, $nbu, $temppage);
|
||||
if ($this->isunicode) {
|
||||
@ -8549,7 +8558,7 @@ class TCPDF {
|
||||
}
|
||||
$temppage = str_replace($alias_a, $nbs, $temppage);
|
||||
}
|
||||
if (!empty($this->AliasNumPage)) {
|
||||
if (!empty($this->alias_num_page)) {
|
||||
// replace page number
|
||||
$pnbs = $this->formatPageNumber($n);
|
||||
$pnbu = $this->UTF8ToUTF16BE($pnbs, false); // replacement for unicode font
|
||||
@ -10536,6 +10545,27 @@ class TCPDF {
|
||||
$filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
|
||||
foreach ($this->imagekeys as $file) {
|
||||
$info = $this->getImageBuffer($file);
|
||||
// set object for alternate images array
|
||||
if (!empty($info['altimgs'])) {
|
||||
$altoid = $this->_newobj();
|
||||
$out = '[';
|
||||
foreach ($info['altimgs'] as $altimage) {
|
||||
if (isset($this->xobjects['I'.$altimage[0]]['n'])) {
|
||||
$out .= ' << /Image '.$this->xobjects['I'.$altimage[0]]['n'].' 0 R';
|
||||
$out .= ' /DefaultForPrinting';
|
||||
if ($altimage[1] === true) {
|
||||
$out .= ' true';
|
||||
} else {
|
||||
$out .= ' false';
|
||||
}
|
||||
$out .= ' >>';
|
||||
}
|
||||
}
|
||||
$out .= ' ]';
|
||||
$out .= "\n".'endobj';
|
||||
$this->_out($out);
|
||||
}
|
||||
// set image object
|
||||
$oid = $this->_newobj();
|
||||
$this->xobjects['I'.$info['i']] = array('n' => $oid);
|
||||
$this->setImageSubBuffer($file, 'n', $this->n);
|
||||
@ -10555,23 +10585,38 @@ class TCPDF {
|
||||
}
|
||||
}
|
||||
$out .= ' /BitsPerComponent '.$info['bpc'];
|
||||
if (isset($info['f'])) {
|
||||
$out .= ' /Filter /'.$info['f'];
|
||||
if (isset($altoid) AND ($altoid > 0)) {
|
||||
// reference to alternate images dictionary
|
||||
$out .= ' /Alternates '.$altoid.' 0 R';
|
||||
}
|
||||
if (isset($info['parms'])) {
|
||||
$out .= ' '.$info['parms'];
|
||||
}
|
||||
if (isset($info['trns']) AND is_array($info['trns'])) {
|
||||
$trns='';
|
||||
$count_info = count($info['trns']);
|
||||
for ($i=0; $i < $count_info; ++$i) {
|
||||
$trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
|
||||
if (isset($info['exurl']) AND !empty($info['exurl'])) {
|
||||
// external stream
|
||||
$out .= ' /Length 0';
|
||||
$out .= ' /F << /FS /URL /F '.$this->_datastring($info['exurl'], $oid).' >>';
|
||||
if (isset($info['f'])) {
|
||||
$out .= ' /FFilter /'.$info['f'];
|
||||
}
|
||||
$out .= ' /Mask ['.$trns.']';
|
||||
$out .= ' >>';
|
||||
$out .= ' stream'."\n".'endstream';
|
||||
} else {
|
||||
if (isset($info['f'])) {
|
||||
$out .= ' /Filter /'.$info['f'];
|
||||
}
|
||||
if (isset($info['parms'])) {
|
||||
$out .= ' '.$info['parms'];
|
||||
}
|
||||
if (isset($info['trns']) AND is_array($info['trns'])) {
|
||||
$trns='';
|
||||
$count_info = count($info['trns']);
|
||||
for ($i=0; $i < $count_info; ++$i) {
|
||||
$trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
|
||||
}
|
||||
$out .= ' /Mask ['.$trns.']';
|
||||
}
|
||||
$stream = $this->_getrawstream($info['data']);
|
||||
$out .= ' /Length '.strlen($stream).' >>';
|
||||
$out .= ' stream'."\n".$stream."\n".'endstream';
|
||||
}
|
||||
$stream = $this->_getrawstream($info['data']);
|
||||
$out .= ' /Length '.strlen($stream).' >>';
|
||||
$out .= ' stream'."\n".$stream."\n".'endstream';
|
||||
$out .= "\n".'endobj';
|
||||
$this->_out($out);
|
||||
//Palette
|
||||
@ -11089,11 +11134,9 @@ class TCPDF {
|
||||
$this->y = $this->tMargin;
|
||||
if (isset($this->newpagegroup[$this->page])) {
|
||||
// start a new group
|
||||
$n = sizeof($this->pagegroups) + 1;
|
||||
$alias = '{nb'.$n.'}';
|
||||
$this->pagegroups[$alias] = 1;
|
||||
$this->currpagegroup = $alias;
|
||||
} elseif ($this->currpagegroup) {
|
||||
$this->currpagegroup = $this->newpagegroup[$this->page];
|
||||
$this->pagegroups[$this->currpagegroup] = 1;
|
||||
} elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) {
|
||||
++$this->pagegroups[$this->currpagegroup];
|
||||
}
|
||||
}
|
||||
@ -11511,7 +11554,7 @@ class TCPDF {
|
||||
* @see UTF8StringToArray(), arrUTF8ToUTF16BE()
|
||||
* @protected
|
||||
*/
|
||||
protected function UTF8ToUTF16BE($str, $setbom=true) {
|
||||
protected function UTF8ToUTF16BE($str, $setbom=false) {
|
||||
if (!$this->isunicode) {
|
||||
return $str; // string is not in unicode
|
||||
}
|
||||
@ -11614,7 +11657,7 @@ class TCPDF {
|
||||
* @since 2.1.000 (2008-01-08)
|
||||
* @see UTF8ToUTF16BE()
|
||||
*/
|
||||
protected function arrUTF8ToUTF16BE($unicode, $setbom=true) {
|
||||
protected function arrUTF8ToUTF16BE($unicode, $setbom=false) {
|
||||
$outstr = ''; // string to be returned
|
||||
if ($setbom) {
|
||||
$outstr .= "\xFE\xFF"; // Byte Order Mark (BOM)
|
||||
@ -15618,8 +15661,8 @@ class TCPDF {
|
||||
$out .= ' /TransformMethod /DocMDP';
|
||||
$out .= ' /TransformParams <<';
|
||||
$out .= ' /Type /TransformParams';
|
||||
$out .= ' /V /1.2';
|
||||
$out .= ' /P '.$this->signature_data['cert_type'];
|
||||
$out .= ' /V /1.2';
|
||||
} else {
|
||||
$out .= ' /TransformMethod /UR3';
|
||||
$out .= ' /TransformParams <<';
|
||||
@ -15783,18 +15826,7 @@ class TCPDF {
|
||||
if (empty($page)) {
|
||||
$page = $this->page + 1;
|
||||
}
|
||||
$this->newpagegroup[$page] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines a string alias for the total number of pages. It will be substituted as the document is closed.
|
||||
* @param $numalias (string) The alias.
|
||||
* @since 1.4
|
||||
* @see getAliasNbPages(), PageNo(), Footer()
|
||||
* @public
|
||||
*/
|
||||
public function AliasNbPages($numalias="{nb}") {
|
||||
$this->AliasNbPages = $numalias;
|
||||
$this->newpagegroup[$page] = sizeof($this->newpagegroup) + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -15802,25 +15834,14 @@ class TCPDF {
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* @return string
|
||||
* @since 4.0.018 (2008-08-08)
|
||||
* @see AliasNbPages(), PageNo(), Footer()
|
||||
* @see alias_tot_pages(), PageNo(), Footer()
|
||||
* @public
|
||||
*/
|
||||
public function getAliasNbPages() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.$this->AliasNbPages.'}';
|
||||
return '{'.$this->alias_tot_pages.'}';
|
||||
}
|
||||
return $this->AliasNbPages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines a string alias for the page number. It will be substituted as the document is closed.
|
||||
* @param $numalias (string) The alias.
|
||||
* @since 4.5.000 (2009-01-02)
|
||||
* @see getAliasNbPages(), PageNo(), Footer()
|
||||
* @public
|
||||
*/
|
||||
public function AliasNumPage($numalias="{pnb}") {
|
||||
$this->AliasNumPage = $numalias;
|
||||
return $this->alias_tot_pages;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -15828,14 +15849,44 @@ class TCPDF {
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* @return string
|
||||
* @since 4.5.000 (2009-01-02)
|
||||
* @see AliasNbPages(), PageNo(), Footer()
|
||||
* @see alias_tot_pages(), PageNo(), Footer()
|
||||
* @public
|
||||
*/
|
||||
public function getAliasNumPage() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.$this->AliasNumPage.'}';
|
||||
return '{'.$this->alias_num_page.'}';
|
||||
}
|
||||
return $this->AliasNumPage;
|
||||
return $this->alias_num_page;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the alias for the total number of pages in the current page group
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* (will be replaced by the total number of pages in this group).
|
||||
* @return alias of the current page group
|
||||
* @public
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
public function getPageGroupAlias() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.$this->alias_group_tot_pages.'}';
|
||||
}
|
||||
return $this->alias_group_tot_pages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the alias for the page number on the current page group
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* (will be replaced by the total number of pages in this group).
|
||||
* @return alias of the current page group
|
||||
* @public
|
||||
* @since 4.5.000 (2009-01-02)
|
||||
*/
|
||||
public function getPageNumGroupAlias() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.$this->alias_group_num_page.'}';
|
||||
}
|
||||
return $this->alias_group_num_page;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -15858,36 +15909,6 @@ class TCPDF {
|
||||
return $this->formatPageNumber($this->getGroupPageNo());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the alias of the current page group
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* (will be replaced by the total number of pages in this group).
|
||||
* @return alias of the current page group
|
||||
* @public
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
public function getPageGroupAlias() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.$this->currpagegroup.'}';
|
||||
}
|
||||
return $this->currpagegroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the alias for the page number on the current page group
|
||||
* If the current font is unicode type, the returned string is surrounded by additional curly braces.
|
||||
* (will be replaced by the total number of pages in this group).
|
||||
* @return alias of the current page group
|
||||
* @public
|
||||
* @since 4.5.000 (2009-01-02)
|
||||
*/
|
||||
public function getPageNumGroupAlias() {
|
||||
if ($this->isUnicodeFont()) {
|
||||
return '{'.str_replace('{nb', '{pnb', $this->currpagegroup).'}';
|
||||
}
|
||||
return str_replace('{nb', '{pnb', $this->currpagegroup);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the page numbers.
|
||||
* This method can be overriden for custom formats.
|
||||
@ -23218,8 +23239,19 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
if (isset($this->PageAnnots[$frompage])) {
|
||||
$tmpannots = $this->PageAnnots[$frompage];
|
||||
}
|
||||
if (isset($this->newpagegroup[$frompage])) {
|
||||
$tmpnewpagegroup = $this->newpagegroup[$frompage];
|
||||
if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) {
|
||||
for ($i = $frompage; $i > $topage; --$i) {
|
||||
if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $frompage)) {
|
||||
--$this->pagegroups[$this->newpagegroup[$i]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
for ($i = $topage; $i > 0; --$i) {
|
||||
if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $topage)) {
|
||||
++$this->pagegroups[$this->newpagegroup[$i]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for ($i = $frompage; $i > $topage; --$i) {
|
||||
$j = $i - 1;
|
||||
@ -23252,8 +23284,10 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
}
|
||||
if (isset($this->newpagegroup[$j])) {
|
||||
$this->newpagegroup[$i] = $this->newpagegroup[$j];
|
||||
} elseif (isset($this->newpagegroup[$i])) {
|
||||
unset($this->newpagegroup[$i]);
|
||||
unset($this->newpagegroup[$j]);
|
||||
}
|
||||
if ($this->currpagegroup == $j) {
|
||||
$this->currpagegroup = $i;
|
||||
}
|
||||
}
|
||||
$this->pages[$topage] = $tmppage;
|
||||
@ -23282,11 +23316,6 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
} elseif (isset($this->PageAnnots[$topage])) {
|
||||
unset($this->PageAnnots[$topage]);
|
||||
}
|
||||
if (isset($tmpnewpagegroup)) {
|
||||
$this->newpagegroup[$topage] = $tmpnewpagegroup;
|
||||
} elseif (isset($this->newpagegroup[$topage])) {
|
||||
unset($this->newpagegroup[$topage]);
|
||||
}
|
||||
// adjust outlines
|
||||
$tmpoutlines = $this->outlines;
|
||||
foreach ($tmpoutlines as $key => $outline) {
|
||||
@ -23357,8 +23386,13 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
if (isset($this->PageAnnots[$page])) {
|
||||
unset($this->PageAnnots[$page]);
|
||||
}
|
||||
if (isset($this->newpagegroup[$page])) {
|
||||
unset($this->newpagegroup[$page]);
|
||||
if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) {
|
||||
for ($i = $page; $i > 0; --$i) {
|
||||
if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $page)) {
|
||||
--$this->pagegroups[$this->newpagegroup[$i]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($this->pageopen[$page])) {
|
||||
unset($this->pageopen[$page]);
|
||||
@ -23396,8 +23430,10 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
}
|
||||
if (isset($this->newpagegroup[$j])) {
|
||||
$this->newpagegroup[$i] = $this->newpagegroup[$j];
|
||||
} elseif (isset($this->newpagegroup[$i])) {
|
||||
unset($this->newpagegroup[$i]);
|
||||
unset($this->newpagegroup[$j]);
|
||||
}
|
||||
if ($this->currpagegroup == $j) {
|
||||
$this->currpagegroup = $i;
|
||||
}
|
||||
if (isset($this->pageopen[$j])) {
|
||||
$this->pageopen[$i] = $this->pageopen[$j];
|
||||
@ -23427,6 +23463,12 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
if (isset($this->newpagegroup[$this->numpages])) {
|
||||
unset($this->newpagegroup[$this->numpages]);
|
||||
}
|
||||
if ($this->currpagegroup == $this->numpages) {
|
||||
$this->currpagegroup = ($this->numpages - 1);
|
||||
}
|
||||
if (isset($this->pagegroups[$this->numpages])) {
|
||||
unset($this->pagegroups[$this->numpages]);
|
||||
}
|
||||
if (isset($this->pageopen[$this->numpages])) {
|
||||
unset($this->pageopen[$this->numpages]);
|
||||
}
|
||||
@ -23487,10 +23529,8 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
if (($page < 1) OR ($page > $this->numpages)) {
|
||||
return false;
|
||||
}
|
||||
if ($page == $this->page) {
|
||||
// close the page before cloning it
|
||||
$this->endPage();
|
||||
}
|
||||
// close the last page
|
||||
$this->endPage();
|
||||
// copy all page-related states
|
||||
++$this->numpages;
|
||||
$this->page = $this->numpages;
|
||||
@ -23514,7 +23554,12 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
$this->PageAnnots[$this->page] = $this->PageAnnots[$page];
|
||||
}
|
||||
if (isset($this->newpagegroup[$page])) {
|
||||
$this->newpagegroup[$this->page] = $this->newpagegroup[$page];
|
||||
// start a new group
|
||||
$this->newpagegroup[$this->page] = sizeof($this->newpagegroup) + 1;
|
||||
$this->currpagegroup = $this->newpagegroup[$this->page];
|
||||
$this->pagegroups[$this->currpagegroup] = 1;
|
||||
} elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) {
|
||||
++$this->pagegroups[$this->currpagegroup];
|
||||
}
|
||||
// copy outlines
|
||||
$tmpoutlines = $this->outlines;
|
||||
|
Loading…
Reference in New Issue
Block a user