mirror of
https://github.com/vdm-io/tcpdf.git
synced 2025-01-26 21:58:24 +00:00
5.9.102
This commit is contained in:
parent
2dccb9c03f
commit
078642c3f6
@ -1,3 +1,7 @@
|
||||
5.9.102 (2011-07-13)
|
||||
- Methods startLayer() and endLayer() were added to support arbitrary PDF layers.
|
||||
- Some improvements/fixes for images were added (thanks to Brendan Abbott).
|
||||
|
||||
5.9.101 (2011-07-07)
|
||||
- Support for JPEG and PNG ICC Color Profiles was added.
|
||||
- Method addEmptySignatureAppearance() was added to add empty signature fields (see example n. 52).
|
||||
|
@ -8,8 +8,8 @@ http://sourceforge.net/donate/index.php?group_id=128076
|
||||
------------------------------------------------------------
|
||||
|
||||
Name: TCPDF
|
||||
Version: 5.9.101
|
||||
Release date: 2011-07-07
|
||||
Version: 5.9.102
|
||||
Release date: 2011-07-13
|
||||
Author: Nicola Asuni
|
||||
|
||||
Copyright (c) 2002-2011:
|
||||
@ -53,6 +53,7 @@ Main Features:
|
||||
* move and delete pages;
|
||||
* page compression (requires php-zlib extension);
|
||||
* XOBject Templates;
|
||||
* Layers and object visibility.
|
||||
|
||||
Installation (full instructions on http: www.tcpdf.org):
|
||||
1. copy the folder on your Web server
|
||||
|
@ -5,7 +5,7 @@
|
||||
// Last Update : 2010-08-08
|
||||
//
|
||||
// Description : Example 024 for TCPDF class
|
||||
// Object Visibility
|
||||
// Object Visibility and Layers
|
||||
//
|
||||
// Author: Nicola Asuni
|
||||
//
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* Creates an example PDF TEST document using TCPDF
|
||||
* @package com.tecnick.tcpdf
|
||||
* @abstract TCPDF - Example: Object Visibility
|
||||
* @abstract TCPDF - Example: Object Visibility and Layers
|
||||
* @author Nicola Asuni
|
||||
* @since 2008-03-04
|
||||
*/
|
||||
@ -110,6 +110,28 @@ $pdf->setVisibility('all');
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
// LAYERS
|
||||
|
||||
// start a new layer
|
||||
$pdf->startLayer('layer1', true, true);
|
||||
|
||||
// change font size
|
||||
$pdf->SetFontSize(18);
|
||||
|
||||
// change text color
|
||||
$pdf->SetTextColor(0,127,0);
|
||||
|
||||
$txt = 'Using the startLayer() method you can group PDF objects into layers.
|
||||
This text is on "layer1".';
|
||||
|
||||
// write something
|
||||
$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0);
|
||||
|
||||
// close the current layer
|
||||
$pdf->endLayer();
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
//Close and output PDF document
|
||||
$pdf->Output('example_024.pdf', 'I');
|
||||
|
||||
|
@ -41,7 +41,7 @@ echo '<'.'?'.'xml version="1.0" encoding="UTF-8"'.'?'.'>';
|
||||
<li>writeHTML alignment: [<a href="example_021.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>CMYK colors: [<a href="example_022.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Page Groups: [<a href="example_023.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Object Visibility: [<a href="example_024.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Object Visibility and Layers: [<a href="example_024.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Object Transparency: [<a href="example_025.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Text Rendering Modes and Text Clipping: [<a href="example_026.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
<li>Barcodes: [<a href="example_027.php" title="PDF [new window]" target="_blank">PDF</a>]</li>
|
||||
|
155
tcpdf.php
155
tcpdf.php
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
//============================================================+
|
||||
// File name : tcpdf.php
|
||||
// Version : 5.9.101
|
||||
// Version : 5.9.102
|
||||
// Begin : 2002-08-03
|
||||
// Last Update : 2011-07-07
|
||||
// Last Update : 2011-07-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.
|
||||
// -------------------------------------------------------------------
|
||||
@ -65,6 +65,7 @@
|
||||
// * move and delete pages;
|
||||
// * page compression (requires php-zlib extension);
|
||||
// * XOBject Templates;
|
||||
// * Layers and object visibility.
|
||||
//
|
||||
// -----------------------------------------------------------
|
||||
// THANKS TO:
|
||||
@ -130,11 +131,12 @@
|
||||
* <li>move and delete pages;</li>
|
||||
* <li>page compression (requires php-zlib extension);</li>
|
||||
* <li>XOBject Templates;</li>
|
||||
* <li>Layers and object visibility;</li>
|
||||
* </ul>
|
||||
* Tools to encode your unicode fonts are on fonts/utils directory.</p>
|
||||
* @package com.tecnick.tcpdf
|
||||
* @author Nicola Asuni
|
||||
* @version 5.9.101
|
||||
* @version 5.9.102
|
||||
*/
|
||||
|
||||
// Main configuration file. Define the K_TCPDF_EXTERNAL_CONFIG constant to skip this file.
|
||||
@ -146,7 +148,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.101
|
||||
* @version 5.9.102
|
||||
* @author Nicola Asuni - info@tecnick.com
|
||||
*/
|
||||
class TCPDF {
|
||||
@ -157,7 +159,7 @@ class TCPDF {
|
||||
* Current TCPDF version.
|
||||
* @private
|
||||
*/
|
||||
private $tcpdf_version = '5.9.101';
|
||||
private $tcpdf_version = '5.9.102';
|
||||
|
||||
// Protected properties
|
||||
|
||||
@ -913,27 +915,6 @@ class TCPDF {
|
||||
*/
|
||||
protected $currpagegroup = 0;
|
||||
|
||||
/**
|
||||
* Restrict the rendering of some elements to screen or printout.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $visibility = 'all';
|
||||
|
||||
/**
|
||||
* Print visibility.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $n_ocg_print;
|
||||
|
||||
/**
|
||||
* View visibility.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected $n_ocg_view;
|
||||
|
||||
/**
|
||||
* Array of transparency objects and parameters.
|
||||
* @protected
|
||||
@ -1629,11 +1610,11 @@ class TCPDF {
|
||||
protected $spotcolor = array();
|
||||
|
||||
/**
|
||||
* Boolean value true when PDF layers are used.
|
||||
* Array of PDF layers data.
|
||||
* @protected
|
||||
* @since 5.9.046 (2011-01-18)
|
||||
* @since 5.9.102 (2011-07-13)
|
||||
*/
|
||||
protected $pdflayers = false;
|
||||
protected $pdflayers = array();
|
||||
|
||||
/**
|
||||
* A dictionary of names and corresponding destinations (Dests key on document Catalog).
|
||||
@ -1882,7 +1863,7 @@ class TCPDF {
|
||||
$this->FillColor = '0 g';
|
||||
$this->TextColor = '0 g';
|
||||
$this->ColorFlag = false;
|
||||
$this->pdflayers = false;
|
||||
$this->pdflayers = array();
|
||||
// encryption values
|
||||
$this->encrypted = false;
|
||||
$this->last_enc_key = '';
|
||||
@ -3704,6 +3685,7 @@ class TCPDF {
|
||||
if ($this->page == 0) {
|
||||
$this->AddPage();
|
||||
}
|
||||
$this->endLayer();
|
||||
// save current graphic settings
|
||||
$gvars = $this->getGraphicVars();
|
||||
$this->setEqualColumns();
|
||||
@ -7387,6 +7369,7 @@ class TCPDF {
|
||||
curl_setopt($cs, CURLOPT_BINARYTRANSFER, true);
|
||||
curl_setopt($cs, CURLOPT_FAILONERROR, true);
|
||||
curl_setopt($cs, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
curl_setopt($cs, CURLOPT_TIMEOUT, 30);
|
||||
$imgdata = curl_exec($cs);
|
||||
@ -11002,9 +10985,13 @@ class TCPDF {
|
||||
$out .= ' /XObject <<';
|
||||
$out .= $this->_getxobjectdict();
|
||||
$out .= ' >>';
|
||||
// visibility
|
||||
if ($this->pdflayers) {
|
||||
$out .= ' /Properties <</OC1 '.$this->n_ocg_print.' 0 R /OC2 '.$this->n_ocg_view.' 0 R>>';
|
||||
// layers
|
||||
if (!empty($this->pdflayers)) {
|
||||
$out .= ' /Properties <<';
|
||||
foreach ($this->pdflayers as $layer) {
|
||||
$out .= ' /'.$layer['layer'].' '.$layer['objid'].' 0 R';
|
||||
}
|
||||
$out .= ' >>';
|
||||
}
|
||||
// transparency
|
||||
$out .= ' /ExtGState <<';
|
||||
@ -11169,11 +11156,26 @@ class TCPDF {
|
||||
//$out .= ' /SpiderInfo <<>>';
|
||||
//$out .= ' /OutputIntents []';
|
||||
//$out .= ' /PieceInfo <<>>';
|
||||
if ($this->pdflayers) {
|
||||
$p = $this->n_ocg_print.' 0 R';
|
||||
$v = $this->n_ocg_view.' 0 R';
|
||||
$as = '<< /Event /Print /OCGs ['.$p.' '.$v.'] /Category [/Print] >> << /Event /View /OCGs ['.$p.' '.$v.'] /Category [/View] >>';
|
||||
$out .= ' /OCProperties << /OCGs ['.$p.' '.$v.'] /D << /ON ['.$p.'] /OFF ['.$v.'] /AS ['.$as.'] >> >>';
|
||||
if (!empty($this->pdflayers)) {
|
||||
$lyrobjs = '';
|
||||
$lyrobjs_print = '';
|
||||
$lyrobjs_view = '';
|
||||
foreach ($this->pdflayers as $layer) {
|
||||
$lyrobjs .= ' '.$layer['objid'].' 0 R';
|
||||
if ($layer['print']) {
|
||||
$lyrobjs_print .= ' '.$layer['objid'].' 0 R';
|
||||
}
|
||||
if ($layer['view']) {
|
||||
$lyrobjs_view .= ' '.$layer['objid'].' 0 R';
|
||||
}
|
||||
}
|
||||
$out .= ' /OCProperties << /OCGs ['.$lyrobjs.']';
|
||||
$out .= ' /D << /ON ['.$lyrobjs_print.']';
|
||||
$out .= ' /OFF ['.$lyrobjs_view.']';
|
||||
$out .= ' /AS [';
|
||||
$out .= '<< /Event /Print /OCGs ['.$lyrobjs.'] /Category [/Print] >> << /Event /View /OCGs ['.$lyrobjs.'] /Category [/View] >>';
|
||||
$out .= ' ]';
|
||||
$out .= ' >> >>';
|
||||
}
|
||||
// AcroForm
|
||||
if (!empty($this->form_obj_id) OR ($this->sign AND isset($this->signature_data['cert_type']))) {
|
||||
@ -16438,16 +16440,57 @@ class TCPDF {
|
||||
}
|
||||
|
||||
/**
|
||||
* Put visibility settings.
|
||||
* Put pdf layers.
|
||||
* @protected
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
protected function _putocg() {
|
||||
if ($this->pdflayers) {
|
||||
$this->n_ocg_print = $this->_newobj();
|
||||
$this->_out('<< /Type /OCG /Name '.$this->_textstring('print', $this->n_ocg_print).' /Usage << /Print <</PrintState /ON>> /View <</ViewState /OFF>> >> >>'."\n".'endobj');
|
||||
$this->n_ocg_view = $this->_newobj();
|
||||
$this->_out('<< /Type /OCG /Name '.$this->_textstring('view', $this->n_ocg_view).' /Usage << /Print <</PrintState /OFF>> /View <</ViewState /ON>> >> >>'."\n".'endobj');
|
||||
if (empty($this->pdflayers)) {
|
||||
return;
|
||||
}
|
||||
foreach ($this->pdflayers as $key => $layer) {
|
||||
$this->pdflayers[$key]['objid'] = $this->_newobj();
|
||||
$out = '<< /Type /OCG';
|
||||
$out .= ' /Name '.$this->_textstring($layer['name'], $this->pdflayers[$key]['objid']);
|
||||
$out .= ' /Usage <<';
|
||||
$out .= ' /Print <</PrintState /'.($layer['print']?'ON':'OFF').'>>';
|
||||
$out .= ' /View <</ViewState /'.($layer['view']?'ON':'OFF').'>>';
|
||||
$out .= ' >> >>';
|
||||
$out .= "\n".'endobj';
|
||||
$this->_out($out);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start a new pdf layer.
|
||||
* @param $name (string) Layer name (only a-z letters and numbers). Leave empty for automatic name.
|
||||
* @param $print (boolean) Set to true to print this layer.
|
||||
* @param $view (boolean) Set to true to view this layer.
|
||||
* @public
|
||||
* @since 5.9.102 (2011-07-13)
|
||||
*/
|
||||
public function startLayer($name='', $print=true, $view=true) {
|
||||
$layer = sprintf('LYR%03d', (count($this->pdflayers) + 1));
|
||||
if (empty($name)) {
|
||||
$name = $layer;
|
||||
} else {
|
||||
$name = preg_replace('/[^a-zA-Z0-9_]/', '', $name);
|
||||
}
|
||||
$this->pdflayers[] = array('layer' => $layer, 'name' => $name, 'print' => $print, 'view' => $view);
|
||||
$this->openMarkedContent = true;
|
||||
$this->_out('/OC /'.$layer.' BDC');
|
||||
}
|
||||
|
||||
/**
|
||||
* End the current PDF layer.
|
||||
* @public
|
||||
* @since 5.9.102 (2011-07-13)
|
||||
*/
|
||||
public function endLayer() {
|
||||
if ($this->openMarkedContent) {
|
||||
// close existing open marked-content layer
|
||||
$this->_out('EMC');
|
||||
$this->openMarkedContent = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16455,27 +16498,20 @@ class TCPDF {
|
||||
* Set the visibility of the successive elements.
|
||||
* This can be useful, for instance, to put a background
|
||||
* image or color that will show on screen but won't print.
|
||||
* @param $v (string) visibility mode. Legal values are: all, print, screen.
|
||||
* @param $v (string) visibility mode. Legal values are: all, print, screen or view.
|
||||
* @public
|
||||
* @since 3.0.000 (2008-03-27)
|
||||
*/
|
||||
public function setVisibility($v) {
|
||||
if ($this->openMarkedContent) {
|
||||
// close existing open marked-content
|
||||
$this->_out('EMC');
|
||||
$this->openMarkedContent = false;
|
||||
}
|
||||
$this->endLayer();
|
||||
switch($v) {
|
||||
case 'print': {
|
||||
$this->_out('/OC /OC1 BDC');
|
||||
$this->openMarkedContent = true;
|
||||
$this->pdflayers = true;
|
||||
$this->startLayer('Print', true, false);
|
||||
break;
|
||||
}
|
||||
case 'view':
|
||||
case 'screen': {
|
||||
$this->_out('/OC /OC2 BDC');
|
||||
$this->openMarkedContent = true;
|
||||
$this->pdflayers = true;
|
||||
$this->startLayer('View', false, true);
|
||||
break;
|
||||
}
|
||||
case 'all': {
|
||||
@ -16487,7 +16523,6 @@ class TCPDF {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->visibility = $v;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -21566,6 +21601,10 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
}
|
||||
case 'img': {
|
||||
if (isset($tag['attribute']['src'])) {
|
||||
// check for images without protocol
|
||||
if (preg_match('%^/{2}%', $tag['attribute']['src'])) {
|
||||
$tag['attribute']['src'] = 'http:'.$tag['attribute']['src'];
|
||||
}
|
||||
// replace relative path with real server path
|
||||
if (($tag['attribute']['src'][0] == '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
|
||||
$findroot = strpos($tag['attribute']['src'], $_SERVER['DOCUMENT_ROOT']);
|
||||
@ -21577,7 +21616,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
|
||||
}
|
||||
}
|
||||
}
|
||||
$tag['attribute']['src'] = urldecode($tag['attribute']['src']);
|
||||
$tag['attribute']['src'] = htmlspecialchars_decode(urldecode($tag['attribute']['src']));
|
||||
$type = $this->getImageFileType($tag['attribute']['src']);
|
||||
$testscrtype = @parse_url($tag['attribute']['src']);
|
||||
if (!isset($testscrtype['query']) OR empty($testscrtype['query'])) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user