/phpMyAdmin/libraries/tcpdf/tcpdf.php
PHP | 13952 lines | 8849 code | 485 blank | 4618 comment | 1693 complexity | 5961b6a722f3607ac94f56fe976b534d MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.0, JSON, GPL-2.0, BSD-3-Clause, LGPL-2.1, MIT
Large files files are truncated, but you can click here to view the full file
- <?php
- //============================================================+
- // File name : tcpdf.php
- // Version : 5.9.145
- // Begin : 2002-08-03
- // Last Update : 2012-01-28
- // Author : Nicola Asuni - Tecnick.com LTD - Manor Coach House, Church Hill, Aldershot, Hants, GU12 4RQ, UK - www.tecnick.com - info@tecnick.com
- // License : http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT GNU-LGPLv3
- // -------------------------------------------------------------------
- // Copyright (C) 2002-2012 Nicola Asuni - Tecnick.com LTD
- //
- // This file is part of TCPDF software library.
- //
- // TCPDF is free software: you can redistribute it and/or modify it
- // under the terms of the GNU Lesser General Public License as
- // published by the Free Software Foundation, either version 3 of the
- // License, or (at your option) any later version.
- //
- // TCPDF is distributed in the hope that it will be useful, but
- // WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- // See the GNU Lesser General Public License for more details.
- //
- // You should have received a copy of the License
- // along with TCPDF. If not, see
- // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
- //
- // See LICENSE.TXT file for more information.
- // -------------------------------------------------------------------
- //
- // Description :
- // This is a PHP class for generating PDF documents without requiring external extensions.
- //
- // NOTE:
- // This class was originally derived in 2002 from the Public
- // Domain FPDF class by Olivier Plathey (http://www.fpdf.org),
- // but now is almost entirely rewritten and contains thousands of
- // new lines of code and hundreds new features.
- //
- // Main features:
- // * no external libraries are required for the basic functions;
- // * all standard page formats, custom page formats, custom margins and units of measure;
- // * UTF-8 Unicode and Right-To-Left languages;
- // * TrueTypeUnicode, TrueType, Type1 and CID-0 fonts;
- // * font subsetting;
- // * methods to publish some XHTML + CSS code, Javascript and Forms;
- // * images, graphic (geometric figures) and transformation methods;
- // * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)
- // * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
- // * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
- // * automatic page header and footer management;
- // * document encryption up to 256 bit and digital signature certifications;
- // * transactions to UNDO commands;
- // * PDF annotations, including links, text and file attachments;
- // * text rendering modes (fill, stroke and clipping);
- // * multiple columns mode;
- // * no-write page regions;
- // * bookmarks, named destinations and table of content;
- // * text hyphenation;
- // * text stretching and spacing (tracking/kerning);
- // * automatic page break, line break and text alignments including justification;
- // * automatic page numbering and page groups;
- // * move and delete pages;
- // * page compression (requires php-zlib extension);
- // * XOBject Templates;
- // * Layers and object visibility.
- // * PDF/A-1b support.
- //
- // -----------------------------------------------------------
- // THANKS TO:
- //
- // Olivier Plathey (http://www.fpdf.org) for original FPDF.
- // Efthimios Mavrogeorgiadis (emavro@yahoo.com) for suggestions on RTL language support.
- // Klemen Vodopivec (http://www.fpdf.de/downloads/addons/37/) for Encryption algorithm.
- // Warren Sherliker (wsherliker@gmail.com) for better image handling.
- // dullus for text Justification.
- // Bob Vincent (pillarsdotnet@users.sourceforge.net) for <li> value attribute.
- // Patrick Benny for text stretch suggestion on Cell().
- // Johannes Güntert for JavaScript support.
- // Denis Van Nuffelen for Dynamic Form.
- // Jacek Czekaj for multibyte justification
- // Anthony Ferrara for the reintroduction of legacy image methods.
- // Sourceforge user 1707880 (hucste) for line-trough mode.
- // Larry Stanbery for page groups.
- // Martin Hall-May for transparency.
- // Aaron C. Spike for Polycurve method.
- // Mohamad Ali Golkar, Saleh AlMatrafe, Charles Abbott for Arabic and Persian support.
- // Moritz Wagner and Andreas Wurmser for graphic functions.
- // Andrew Whitehead for core fonts support.
- // Esteban Joël Marín for OpenType font conversion.
- // Teus Hagen for several suggestions and fixes.
- // Yukihiro Nakadaira for CID-0 CJK fonts fixes.
- // Kosmas Papachristos for some CSS improvements.
- // Marcel Partap for some fixes.
- // Won Kyu Park for several suggestions, fixes and patches.
- // Dominik Dzienia for QR-code support.
- // Laurent Minguet for some suggestions.
- // Christian Deligant for some suggestions and fixes.
- // Travis Harris for crop mark suggestion.
- // Anyone that has reported a bug or sent a suggestion.
- //============================================================+
- /**
- * @file
- * This is a PHP class for generating PDF documents without requiring external extensions.<br>
- * TCPDF project (http://www.tcpdf.org) was originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
- * <h3>TCPDF main features are:</h3>
- * <ul>
- * <li>no external libraries are required for the basic functions;</li>
- * <li>all standard page formats, custom page formats, custom margins and units of measure;</li>
- * <li>UTF-8 Unicode and Right-To-Left languages;</li>
- * <li>TrueTypeUnicode, TrueType, Type1 and CID-0 fonts;</li>
- * <li>font subsetting;</li>
- * <li>methods to publish some XHTML + CSS code, Javascript and Forms;</li>
- * <li>images, graphic (geometric figures) and transformation methods;
- * <li>supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)</li>
- * <li>1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;</li>
- * <li>JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;</li>
- * <li>automatic page header and footer management;</li>
- * <li>document encryption up to 256 bit and digital signature certifications;</li>
- * <li>transactions to UNDO commands;</li>
- * <li>PDF annotations, including links, text and file attachments;</li>
- * <li>text rendering modes (fill, stroke and clipping);</li>
- * <li>multiple columns mode;</li>
- * <li>no-write page regions;</li>
- * <li>bookmarks, named destinations and table of content;</li>
- * <li>text hyphenation;</li>
- * <li>text stretching and spacing (tracking/kerning);</li>
- * <li>automatic page break, line break and text alignments including justification;</li>
- * <li>automatic page numbering and page groups;</li>
- * <li>move and delete pages;</li>
- * <li>page compression (requires php-zlib extension);</li>
- * <li>XOBject Templates;</li>
- * <li>Layers and object visibility;</li>
- * <li>PDF/A-1b support.</li>
- * </ul>
- * Tools to encode your unicode fonts are on fonts/utils directory.</p>
- * @package com.tecnick.tcpdf
- * @author Nicola Asuni
- * @version 5.9.145
- */
- // Main configuration file. Define the K_TCPDF_EXTERNAL_CONFIG constant to skip this file.
- require_once(dirname(__FILE__).'/config/tcpdf_config.php');
- /**
- * @class TCPDF
- * PHP class for generating PDF documents without requiring external extensions.
- * 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.145
- * @author Nicola Asuni - info@tecnick.com
- */
- class TCPDF {
- // private properties
- /**
- * Current TCPDF version.
- * @private
- */
- private $tcpdf_version = '5.9.145';
- // Protected properties
- /**
- * Current page number.
- * @protected
- */
- protected $page;
- /**
- * Current object number.
- * @protected
- */
- protected $n;
- /**
- * Array of object offsets.
- * @protected
- */
- protected $offsets;
- /**
- * Buffer holding in-memory PDF.
- * @protected
- */
- protected $buffer;
- /**
- * Array containing pages.
- * @protected
- */
- protected $pages = array();
- /**
- * Current document state.
- * @protected
- */
- protected $state;
- /**
- * Compression flag.
- * @protected
- */
- protected $compress;
- /**
- * Current page orientation (P = Portrait, L = Landscape).
- * @protected
- */
- protected $CurOrientation;
- /**
- * Page dimensions.
- * @protected
- */
- protected $pagedim = array();
- /**
- * Scale factor (number of points in user unit).
- * @protected
- */
- protected $k;
- /**
- * Width of page format in points.
- * @protected
- */
- protected $fwPt;
- /**
- * Height of page format in points.
- * @protected
- */
- protected $fhPt;
- /**
- * Current width of page in points.
- * @protected
- */
- protected $wPt;
- /**
- * Current height of page in points.
- * @protected
- */
- protected $hPt;
- /**
- * Current width of page in user unit.
- * @protected
- */
- protected $w;
- /**
- * Current height of page in user unit.
- * @protected
- */
- protected $h;
- /**
- * Left margin.
- * @protected
- */
- protected $lMargin;
- /**
- * Top margin.
- * @protected
- */
- protected $tMargin;
- /**
- * Right margin.
- * @protected
- */
- protected $rMargin;
- /**
- * Page break margin.
- * @protected
- */
- protected $bMargin;
- /**
- * Array of cell internal paddings ('T' => top, 'R' => right, 'B' => bottom, 'L' => left).
- * @since 5.9.000 (2010-10-03)
- * @protected
- */
- protected $cell_padding = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0);
- /**
- * Array of cell margins ('T' => top, 'R' => right, 'B' => bottom, 'L' => left).
- * @since 5.9.000 (2010-10-04)
- * @protected
- */
- protected $cell_margin = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0);
- /**
- * Current horizontal position in user unit for cell positioning.
- * @protected
- */
- protected $x;
- /**
- * Current vertical position in user unit for cell positioning.
- * @protected
- */
- protected $y;
- /**
- * Height of last cell printed.
- * @protected
- */
- protected $lasth;
- /**
- * Line width in user unit.
- * @protected
- */
- protected $LineWidth;
- /**
- * Array of standard font names.
- * @protected
- */
- protected $CoreFonts;
- /**
- * Array of used fonts.
- * @protected
- */
- protected $fonts = array();
- /**
- * Array of font files.
- * @protected
- */
- protected $FontFiles = array();
- /**
- * Array of encoding differences.
- * @protected
- */
- protected $diffs = array();
- /**
- * Array of used images.
- * @protected
- */
- protected $images = array();
- /**
- * Array of Annotations in pages.
- * @protected
- */
- protected $PageAnnots = array();
- /**
- * Array of internal links.
- * @protected
- */
- protected $links = array();
- /**
- * Current font family.
- * @protected
- */
- protected $FontFamily;
- /**
- * Current font style.
- * @protected
- */
- protected $FontStyle;
- /**
- * Current font ascent (distance between font top and baseline).
- * @protected
- * @since 2.8.000 (2007-03-29)
- */
- protected $FontAscent;
- /**
- * Current font descent (distance between font bottom and baseline).
- * @protected
- * @since 2.8.000 (2007-03-29)
- */
- protected $FontDescent;
- /**
- * Underlining flag.
- * @protected
- */
- protected $underline;
- /**
- * Overlining flag.
- * @protected
- */
- protected $overline;
- /**
- * Current font info.
- * @protected
- */
- protected $CurrentFont;
- /**
- * Current font size in points.
- * @protected
- */
- protected $FontSizePt;
- /**
- * Current font size in user unit.
- * @protected
- */
- protected $FontSize;
- /**
- * Commands for drawing color.
- * @protected
- */
- protected $DrawColor;
- /**
- * Commands for filling color.
- * @protected
- */
- protected $FillColor;
- /**
- * Commands for text color.
- * @protected
- */
- protected $TextColor;
- /**
- * Indicates whether fill and text colors are different.
- * @protected
- */
- protected $ColorFlag;
- /**
- * Automatic page breaking.
- * @protected
- */
- protected $AutoPageBreak;
- /**
- * Threshold used to trigger page breaks.
- * @protected
- */
- protected $PageBreakTrigger;
- /**
- * Flag set when processing page header.
- * @protected
- */
- protected $InHeader = false;
- /**
- * Flag set when processing page footer.
- * @protected
- */
- protected $InFooter = false;
- /**
- * Zoom display mode.
- * @protected
- */
- protected $ZoomMode;
- /**
- * Layout display mode.
- * @protected
- */
- protected $LayoutMode;
- /**
- * If true set the document information dictionary in Unicode.
- * @protected
- */
- protected $docinfounicode = true;
- /**
- * Document title.
- * @protected
- */
- protected $title = '';
- /**
- * Document subject.
- * @protected
- */
- protected $subject = '';
- /**
- * Document author.
- * @protected
- */
- protected $author = '';
- /**
- * Document keywords.
- * @protected
- */
- protected $keywords = '';
- /**
- * Document creator.
- * @protected
- */
- protected $creator = '';
- /**
- * Starting page number.
- * @protected
- */
- protected $starting_page_number = 1;
- /**
- * String alias for total number of pages.
- * @protected
- */
- protected $alias_tot_pages = '{:ptp:}';
- /**
- * String alias for page number.
- * @protected
- */
- protected $alias_num_page = '{:pnp:}';
- /**
- * String alias for total number of pages in a single group.
- * @protected
- */
- protected $alias_group_tot_pages = '{:ptg:}';
- /**
- * String alias for group page number.
- * @protected
- */
- protected $alias_group_num_page = '{:png:}';
- /**
- * String alias for right shift compensation used to correctly align page numbers on the right.
- * @protected
- */
- protected $alias_right_shift = '{rsc:';
- /**
- * The right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image.
- * @since 2002-07-31
- * @author Nicola Asuni
- * @protected
- */
- protected $img_rb_x;
- /**
- * The right-bottom corner Y coordinate of last inserted image.
- * @since 2002-07-31
- * @author Nicola Asuni
- * @protected
- */
- protected $img_rb_y;
- /**
- * Adjusting factor to convert pixels to user units.
- * @since 2004-06-14
- * @author Nicola Asuni
- * @protected
- */
- protected $imgscale = 1;
- /**
- * Boolean flag set to true when the input text is unicode (require unicode fonts).
- * @since 2005-01-02
- * @author Nicola Asuni
- * @protected
- */
- protected $isunicode = false;
- /**
- * Object containing unicode data.
- * @since 5.9.004 (2010-10-18)
- * @author Nicola Asuni
- * @protected
- */
- protected $unicode;
- /**
- * Object containing font encoding maps.
- * @since 5.9.123 (2011-10-01)
- * @author Nicola Asuni
- * @protected
- */
- protected $encmaps;
- /**
- * PDF version.
- * @since 1.5.3
- * @protected
- */
- protected $PDFVersion = '1.7';
- /**
- * ID of the stored default header template (-1 = not set).
- * @protected
- */
- protected $header_xobjid = -1;
- /**
- * If true reset the Header Xobject template at each page
- * @protected
- */
- protected $header_xobj_autoreset = false;
- /**
- * Minimum distance between header and top page margin.
- * @protected
- */
- protected $header_margin;
- /**
- * Minimum distance between footer and bottom page margin.
- * @protected
- */
- protected $footer_margin;
- /**
- * Original left margin value.
- * @protected
- * @since 1.53.0.TC013
- */
- protected $original_lMargin;
- /**
- * Original right margin value.
- * @protected
- * @since 1.53.0.TC013
- */
- protected $original_rMargin;
- /**
- * Default font used on page header.
- * @protected
- */
- protected $header_font;
- /**
- * Default font used on page footer.
- * @protected
- */
- protected $footer_font;
- /**
- * Language templates.
- * @protected
- */
- protected $l;
- /**
- * Barcode to print on page footer (only if set).
- * @protected
- */
- protected $barcode = false;
- /**
- * Boolean flag to print/hide page header.
- * @protected
- */
- protected $print_header = true;
- /**
- * Boolean flag to print/hide page footer.
- * @protected
- */
- protected $print_footer = true;
- /**
- * Header image logo.
- * @protected
- */
- protected $header_logo = '';
- /**
- * Width of header image logo in user units.
- * @protected
- */
- protected $header_logo_width = 30;
- /**
- * Title to be printed on default page header.
- * @protected
- */
- protected $header_title = '';
- /**
- * String to pring on page header after title.
- * @protected
- */
- protected $header_string = '';
- /**
- * Default number of columns for html table.
- * @protected
- */
- protected $default_table_columns = 4;
- // variables for html parser
- /**
- * HTML PARSER: array to store current link and rendering styles.
- * @protected
- */
- protected $HREF = array();
- /**
- * List of available fonts on filesystem.
- * @protected
- */
- protected $fontlist = array();
- /**
- * Current foreground color.
- * @protected
- */
- protected $fgcolor;
- /**
- * HTML PARSER: array of boolean values, true in case of ordered list (OL), false otherwise.
- * @protected
- */
- protected $listordered = array();
- /**
- * HTML PARSER: array count list items on nested lists.
- * @protected
- */
- protected $listcount = array();
- /**
- * HTML PARSER: current list nesting level.
- * @protected
- */
- protected $listnum = 0;
- /**
- * HTML PARSER: indent amount for lists.
- * @protected
- */
- protected $listindent = 0;
- /**
- * HTML PARSER: current list indententation level.
- * @protected
- */
- protected $listindentlevel = 0;
- /**
- * Current background color.
- * @protected
- */
- protected $bgcolor;
- /**
- * Temporary font size in points.
- * @protected
- */
- protected $tempfontsize = 10;
- /**
- * Spacer string for LI tags.
- * @protected
- */
- protected $lispacer = '';
- /**
- * Default encoding.
- * @protected
- * @since 1.53.0.TC010
- */
- protected $encoding = 'UTF-8';
- /**
- * PHP internal encoding.
- * @protected
- * @since 1.53.0.TC016
- */
- protected $internal_encoding;
- /**
- * Boolean flag to indicate if the document language is Right-To-Left.
- * @protected
- * @since 2.0.000
- */
- protected $rtl = false;
- /**
- * Boolean flag used to force RTL or LTR string direction.
- * @protected
- * @since 2.0.000
- */
- protected $tmprtl = false;
- // --- Variables used for document encryption:
- /**
- * IBoolean flag indicating whether document is protected.
- * @protected
- * @since 2.0.000 (2008-01-02)
- */
- protected $encrypted;
- /**
- * Array containing encryption settings.
- * @protected
- * @since 5.0.005 (2010-05-11)
- */
- protected $encryptdata = array();
- /**
- * Last RC4 key encrypted (cached for optimisation).
- * @protected
- * @since 2.0.000 (2008-01-02)
- */
- protected $last_enc_key;
- /**
- * Last RC4 computed key.
- * @protected
- * @since 2.0.000 (2008-01-02)
- */
- protected $last_enc_key_c;
- /**
- * Encryption padding string.
- * @protected
- */
- protected $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
- /**
- * File ID (used on document trailer).
- * @protected
- * @since 5.0.005 (2010-05-12)
- */
- protected $file_id;
- // --- bookmark ---
- /**
- * Outlines for bookmark.
- * @protected
- * @since 2.1.002 (2008-02-12)
- */
- protected $outlines = array();
- /**
- * Outline root for bookmark.
- * @protected
- * @since 2.1.002 (2008-02-12)
- */
- protected $OutlineRoot;
- // --- javascript and form ---
- /**
- * Javascript code.
- * @protected
- * @since 2.1.002 (2008-02-12)
- */
- protected $javascript = '';
- /**
- * Javascript counter.
- * @protected
- * @since 2.1.002 (2008-02-12)
- */
- protected $n_js;
- /**
- * line trough state
- * @protected
- * @since 2.8.000 (2008-03-19)
- */
- protected $linethrough;
- /**
- * Array with additional document-wide usage rights for the document.
- * @protected
- * @since 5.8.014 (2010-08-23)
- */
- protected $ur = array();
- /**
- * DPI (Dot Per Inch) Document Resolution (do not change).
- * @protected
- * @since 3.0.000 (2008-03-27)
- */
- protected $dpi = 72;
- /**
- * 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();
- /**
- * Array that contains the number of pages in each page group.
- * @protected
- * @since 3.0.000 (2008-03-27)
- */
- protected $pagegroups = array();
- /**
- * Current page group number.
- * @protected
- * @since 3.0.000 (2008-03-27)
- */
- protected $currpagegroup = 0;
- /**
- * Array of transparency objects and parameters.
- * @protected
- * @since 3.0.000 (2008-03-27)
- */
- protected $extgstates;
- /**
- * Set the default JPEG compression quality (1-100).
- * @protected
- * @since 3.0.000 (2008-03-27)
- */
- protected $jpeg_quality;
- /**
- * Default cell height ratio.
- * @protected
- * @since 3.0.014 (2008-05-23)
- */
- protected $cell_height_ratio = K_CELL_HEIGHT_RATIO;
- /**
- * PDF viewer preferences.
- * @protected
- * @since 3.1.000 (2008-06-09)
- */
- protected $viewer_preferences;
- /**
- * A name object specifying how the document should be displayed when opened.
- * @protected
- * @since 3.1.000 (2008-06-09)
- */
- protected $PageMode;
- /**
- * Array for storing gradient information.
- * @protected
- * @since 3.1.000 (2008-06-09)
- */
- protected $gradients = array();
- /**
- * Array used to store positions inside the pages buffer (keys are the page numbers).
- * @protected
- * @since 3.2.000 (2008-06-26)
- */
- protected $intmrk = array();
- /**
- * Array used to store positions inside the pages buffer (keys are the page numbers).
- * @protected
- * @since 5.7.000 (2010-08-03)
- */
- protected $bordermrk = array();
- /**
- * Array used to store page positions to track empty pages (keys are the page numbers).
- * @protected
- * @since 5.8.007 (2010-08-18)
- */
- protected $emptypagemrk = array();
- /**
- * Array used to store content positions inside the pages buffer (keys are the page numbers).
- * @protected
- * @since 4.6.021 (2009-07-20)
- */
- protected $cntmrk = array();
- /**
- * Array used to store footer positions of each page.
- * @protected
- * @since 3.2.000 (2008-07-01)
- */
- protected $footerpos = array();
- /**
- * Array used to store footer length of each page.
- * @protected
- * @since 4.0.014 (2008-07-29)
- */
- protected $footerlen = array();
- /**
- * Boolean flag to indicate if a new line is created.
- * @protected
- * @since 3.2.000 (2008-07-01)
- */
- protected $newline = true;
- /**
- * End position of the latest inserted line.
- * @protected
- * @since 3.2.000 (2008-07-01)
- */
- protected $endlinex = 0;
- /**
- * PDF string for width value of the last line.
- * @protected
- * @since 4.0.006 (2008-07-16)
- */
- protected $linestyleWidth = '';
- /**
- * PDF string for CAP value of the last line.
- * @protected
- * @since 4.0.006 (2008-07-16)
- */
- protected $linestyleCap = '0 J';
- /**
- * PDF string for join value of the last line.
- * @protected
- * @since 4.0.006 (2008-07-16)
- */
- protected $linestyleJoin = '0 j';
- /**
- * PDF string for dash value of the last line.
- * @protected
- * @since 4.0.006 (2008-07-16)
- */
- protected $linestyleDash = '[] 0 d';
- /**
- * Boolean flag to indicate if marked-content sequence is open.
- * @protected
- * @since 4.0.013 (2008-07-28)
- */
- protected $openMarkedContent = false;
- /**
- * Count the latest inserted vertical spaces on HTML.
- * @protected
- * @since 4.0.021 (2008-08-24)
- */
- protected $htmlvspace = 0;
- /**
- * Array of Spot colors.
- * @protected
- * @since 4.0.024 (2008-09-12)
- */
- protected $spot_colors = array();
- /**
- * Symbol used for HTML unordered list items.
- * @protected
- * @since 4.0.028 (2008-09-26)
- */
- protected $lisymbol = '';
- /**
- * String used to mark the beginning and end of EPS image blocks.
- * @protected
- * @since 4.1.000 (2008-10-18)
- */
- protected $epsmarker = 'x#!#EPS#!#x';
- /**
- * Array of transformation matrix.
- * @protected
- * @since 4.2.000 (2008-10-29)
- */
- protected $transfmatrix = array();
- /**
- * Current key for transformation matrix.
- * @protected
- * @since 4.8.005 (2009-09-17)
- */
- protected $transfmatrix_key = 0;
- /**
- * Booklet mode for double-sided pages.
- * @protected
- * @since 4.2.000 (2008-10-29)
- */
- protected $booklet = false;
- /**
- * Epsilon value used for float calculations.
- * @protected
- * @since 4.2.000 (2008-10-29)
- */
- protected $feps = 0.005;
- /**
- * Array used for custom vertical spaces for HTML tags.
- * @protected
- * @since 4.2.001 (2008-10-30)
- */
- protected $tagvspaces = array();
- /**
- * HTML PARSER: custom indent amount for lists. Negative value means disabled.
- * @protected
- * @since 4.2.007 (2008-11-12)
- */
- protected $customlistindent = -1;
- /**
- * Boolean flag to indicate if the border of the cell sides that cross the page should be removed.
- * @protected
- * @since 4.2.010 (2008-11-14)
- */
- protected $opencell = true;
- /**
- * Array of files to embedd.
- * @protected
- * @since 4.4.000 (2008-12-07)
- */
- protected $embeddedfiles = array();
- /**
- * Boolean flag to indicate if we are inside a PRE tag.
- * @protected
- * @since 4.4.001 (2008-12-08)
- */
- protected $premode = false;
- /**
- * Array used to store positions of graphics transformation blocks inside the page buffer.
- * keys are the page numbers
- * @protected
- * @since 4.4.002 (2008-12-09)
- */
- protected $transfmrk = array();
- /**
- * Default color for html links.
- * @protected
- * @since 4.4.003 (2008-12-09)
- */
- protected $htmlLinkColorArray = array(0, 0, 255);
- /**
- * Default font style to add to html links.
- * @protected
- * @since 4.4.003 (2008-12-09)
- */
- protected $htmlLinkFontStyle = 'U';
- /**
- * Counts the number of pages.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $numpages = 0;
- /**
- * Array containing page lengths in bytes.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $pagelen = array();
- /**
- * Counts the number of pages.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $numimages = 0;
- /**
- * Store the image keys.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $imagekeys = array();
- /**
- * Length of the buffer in bytes.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $bufferlen = 0;
- /**
- * If true enables disk caching.
- * @protected
- * @since 4.5.000 (2008-12-31)
- */
- protected $diskcache = false;
- /**
- * Counts the number of fonts.
- * @protected
- * @since 4.5.000 (2009-01-02)
- */
- protected $numfonts = 0;
- /**
- * Store the font keys.
- * @protected
- * @since 4.5.000 (2009-01-02)
- */
- protected $fontkeys = array();
- /**
- * Store the font object IDs.
- * @protected
- * @since 4.8.001 (2009-09-09)
- */
- protected $font_obj_ids = array();
- /**
- * Store the fage status (true when opened, false when closed).
- * @protected
- * @since 4.5.000 (2009-01-02)
- */
- protected $pageopen = array();
- /**
- * Default monospace font.
- * @protected
- * @since 4.5.025 (2009-03-10)
- */
- protected $default_monospaced_font = 'courier';
- /**
- * Cloned copy of the current class object.
- * @protected
- * @since 4.5.029 (2009-03-19)
- */
- protected $objcopy;
- /**
- * Array used to store the lengths of cache files.
- * @protected
- * @since 4.5.029 (2009-03-19)
- */
- protected $cache_file_length = array();
- /**
- * Table header content to be repeated on each new page.
- * @protected
- * @since 4.5.030 (2009-03-20)
- */
- protected $thead = '';
- /**
- * Margins used for table header.
- * @protected
- * @since 4.5.030 (2009-03-20)
- */
- protected $theadMargins = array();
- /**
- * Cache array for UTF8StringToArray() method.
- * @protected
- * @since 4.5.037 (2009-04-07)
- */
- protected $cache_UTF8StringToArray = array();
- /**
- * Maximum size of cache array used for UTF8StringToArray() method.
- * @protected
- * @since 4.5.037 (2009-04-07)
- */
- protected $cache_maxsize_UTF8StringToArray = 8;
- /**
- * Current size of cache array used for UTF8StringToArray() method.
- * @protected
- * @since 4.5.037 (2009-04-07)
- */
- protected $cache_size_UTF8StringToArray = 0;
- /**
- * Boolean flag to enable document digital signature.
- * @protected
- * @since 4.6.005 (2009-04-24)
- */
- protected $sign = false;
- /**
- * Digital signature data.
- * @protected
- * @since 4.6.005 (2009-04-24)
- */
- protected $signature_data = array();
- /**
- * Digital signature max length.
- * @protected
- * @since 4.6.005 (2009-04-24)
- */
- protected $signature_max_length = 11742;
- /**
- * Data for digital signature appearance.
- * @protected
- * @since 5.3.011 (2010-06-16)
- */
- protected $signature_appearance = array('page' => 1, 'rect' => '0 0 0 0');
- /**
- * Array of empty digital signature appearances.
- * @protected
- * @since 5.9.101 (2011-07-06)
- */
- protected $empty_signature_appearance = array();
- /**
- * Regular expression used to find blank characters (required for word-wrapping).
- * @protected
- * @since 4.6.006 (2009-04-28)
- */
- protected $re_spaces = '/[^\S\xa0]/';
- /**
- * Array of $re_spaces parts.
- * @protected
- * @since 5.5.011 (2010-07-09)
- */
- protected $re_space = array('p' => '[^\S\xa0]', 'm' => '');
- /**
- * Digital signature object ID.
- * @protected
- * @since 4.6.022 (2009-06-23)
- */
- protected $sig_obj_id = 0;
- /**
- * ByteRange placemark used during digital signature process.
- * @protected
- * @since 4.6.028 (2009-08-25)
- */
- protected $byterange_string = '/ByteRange[0 ********** ********** **********]';
- /**
- * Placemark used during digital signature process.
- * @protected
- * @since 4.6.028 (2009-08-25)
- */
- protected $sig_annot_ref = '***SIGANNREF*** 0 R';
- /**
- * ID of page objects.
- * @protected
- * @since 4.7.000 (2009-08-29)
- */
- protected $page_obj_id = array();
- /**
- * List of form annotations IDs.
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $form_obj_id = array();
- /**
- * Deafult Javascript field properties. Possible values are described on official Javascript for Acrobat API reference. Annotation options can be directly specified using the 'aopt' entry.
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128));
- /**
- * Javascript objects array.
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $js_objects = array();
- /**
- * Current form action (used during XHTML rendering).
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $form_action = '';
- /**
- * Current form encryption type (used during XHTML rendering).
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $form_enctype = 'application/x-www-form-urlencoded';
- /**
- * Current method to submit forms.
- * @protected
- * @since 4.8.000 (2009-09-07)
- */
- protected $form_mode = 'post';
- /**
- * List of fonts used on form fields (fontname => fontkey).
- * @protected
- * @since 4.8.001 (2009-09-09)
- */
- protected $annotation_fonts = array();
- /**
- * List of radio buttons parent objects.
- * @protected
- * @since 4.8.001 (2009-09-09)
- */
- protected $radiobutton_groups = array();
- /**
- * List of radio group objects IDs.
- * @protected
- * @since 4.8.001 (2009-09-09)
- */
- protected $radio_groups = array();
- /**
- * Text indentation value (used for text-indent CSS attribute).
- * @protected
- * @since 4.8.006 (2009-09-23)
- */
- protected $textindent = 0;
- /**
- * Store page number when startTransaction() is called.
- * @protected
- * @since 4.8.006 (2009-09-23)
- */
- protected $start_transaction_page = 0;
- /**
- * Store Y position when startTransaction() is called.
- * @protected
- * @since 4.9.001 (2010-03-28)
- */
- protected $start_transaction_y = 0;
- /**
- * True when we are printing the thead section on a new page.
- * @protected
- * @since 4.8.027 (2010-01-25)
- */
- protected $inthead = false;
- /**
- * Array of column measures (width, space, starting Y position).
- * @protected
- * @since 4.9.001 (2010-03-28)
- */
- protected $columns = array();
- /**
- * Number of colums.
- * @protected
- * @since 4.9.001 (2010-03-28)
- */
- protected $num_columns = 1;
- /**
- * Current column number.
- * @protected
- * @since 4.9.001 (2010-03-28)
- */
- protected $current_column = 0;
- /**
- * Starting page for columns.
- * @protected
- * @since 4.9.001 (2010-03-28)
- */
- protected $column_start_page = 0;
- /**
- * Maximum page and column selected.
- * @protected
- * @since 5.8.000 (2010-08-11)
- */
- protected $maxselcol = array('page' => 0, 'column' => 0);
- /**
- * Array of: X difference between table cell x start and starting page margin, cellspacing, cellpadding.
- * @protected
- * @since 5.8.000 (2010-08-11)
- */
- protected $colxshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0));
- /**
- * Text rendering mode: 0 = Fill text; 1 = Stroke text; 2 = Fill, then stroke text; 3 = Neither fill nor stroke text (invisible); 4 = Fill text and add to path for clipping; 5 = Stroke text and add to path for clipping; 6 = Fill, then stroke text and add to path for clipping; 7 = Add text to path for clipping.
- * @protected
- * @since 4.9.008 (2010-04-03)
- */
- protected $textrendermode = 0;
- /**
- * Text stroke width in doc units.
- * @protected
- * @since 4.9.008 (2010-04-03)
- */
- protected $textstrokewidth = 0;
- /**
- * Current stroke color.
- * @protected
- * @since 4.9.008 (2010-04-03)
- */
- protected $strokecolor;
- /**
- * Default unit of measure for document.
- * @protected
- * @since 5.0.000 (2010-04-22)
- */
- protected $pdfunit = 'mm';
- /**
- * Boolean flag true when we are on TOC (Table Of Content) page.
- * @protected
- */
- protected $tocpage = false;
- /**
- * Boolean flag: if true convert vector images (SVG, EPS) to raster image using GD or ImageMagick library.
- * @protected
- * @since 5.0.000 (2010-04-26)
- */
- protected $rasterize_vector_images = false;
- /**
- * Boolean flag: if true enables font subsetting by default.
- * @protected
- * @since 5.3.002 (2010-06-07)
- */
- protected $font_subsetting = true;
- /**
- * Array of default graphic settings.
- * @protected
- * @since 5.5.008 (2010-07-02)
- */
- protected $default_graphic_vars = array();
- /**
- * Array of XObjects.
- * @protected
- * @since 5.8.014 (2010-08-23)
- */
- protected $xobjects = array();
- /**
- * Boolean value true when we are inside an XObject.
- * @protected
- * @since 5.8.017 (2010-08-24)
- */
- protected $inxobj = false;
- /**
- * Current XObject ID.
- * @protected
- * @since 5.8.017 (2010-08-24)
- */
- protected $xobjid = '';
- /**
- * Percentage of character stretching.
- * @protected
- * @since 5.9.000 (2010-09-29)
- */
- protected $font_stretching = 100;
- /**
- * Increases or decreases the space between characters in a text by the specified amount (tracking/kerning).
- * @protected
- * @since 5.9.000 (2010-09-29)
- */
- protected $font_spacing = 0;
- /**
- * Array of no-write regions.
- * ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right)
- * @protected
- * @since 5.9.003 (2010-10-14)
- */
- protected $page_regions = array();
- /**
- * Array containing HTML color names and values.
- * @protected
- * @since 5.9.004 (2010-10-18)
- */
- protected $webcolor = array();
- /**
- * Array containing spot color names and values.
- * @protected
- * @since 5.9.012 (2010-11-11)
- */
- protected $spotcolor = array();
- /**
- * Array of PDF layers data.
- * @protected
- * @since 5.9.102 (2011-07-13)
- */
- protected $pdflayers = array();
- /**
- * A dictionary of names and corresponding destinations (Dests key on document Catalog).
- * @protected
- * @since 5.9.097 (2011-06-23)
- */
- protected $dests = array();
- /**
- * Object ID for Named Destinations
- * @protected
- * @since 5.9.097 (2011-06-23)
- */
- protected $n_dests;
- /**
- * Directory used for the last SVG image.
- * @protected
- * @since 5.0.000 (2010-05-05)
- */
- protected $svgdir = '';
- /**
- * Deafult unit of measure for SVG.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgunit = 'px';
- /**
- * Array of SVG gradients.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svggradients = array();
- /**
- * ID of last SVG gradient.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svggradientid = 0;
- /**
- * Boolean value true when in SVG defs group.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgdefsmode = false;
- /**
- * Array of SVG defs.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgdefs = array();
- /**
- * Boolean value true when in SVG clipPath tag.
- * @protected
- * @since 5.0.000 (2010-04-26)
- */
- protected $svgclipmode = false;
- /**
- * Array of SVG clipPath commands.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgclippaths = array();
- /**
- * Array of SVG clipPath tranformation matrix.
- * @protected
- * @since 5.8.022 (2010-08-31)
- */
- protected $svgcliptm = array();
- /**
- * ID of last SVG clipPath.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgclipid = 0;
- /**
- * SVG text.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgtext = '';
- /**
- * SVG text properties.
- * @protected
- * @since 5.8.013 (2010-08-23)
- */
- protected $svgtextmode = array();
- /**
- * Array of hinheritable SVG properties.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svginheritprop = array('clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'visibility', 'word-spacing', 'writing-mode');
- /**
- * Array of SVG properties.
- * @protected
- * @since 5.0.000 (2010-05-02)
- */
- protected $svgstyles = array(array(
- 'alignment-baseline' => 'auto',
- 'baseline-shift' => 'baseline',
- 'clip' => 'auto',
- 'clip-path' => 'none',
- 'clip-rule' => 'nonzero',
- 'color' => 'black',
- 'color-interpolation' => 'sRGB',
- 'color-interpolation-filters' => 'linearRGB',
- 'color-profile' => 'auto',
- 'color-rendering' => 'auto',
- 'cursor' => 'auto',
- 'direction' => 'ltr',
- 'display' => 'inline',
- 'dominant-baseline' => 'auto',
- 'enable-background' => 'accumulate',
- 'fill' => 'black',
- 'fill-opacity' => 1,
- 'fill-rule' => 'nonzero',
- 'filter' => 'none',
- 'flood-color' => 'black',
- 'flood-opacity' => 1,
- 'font' => '',
- 'font-family' => 'helvetica',
- 'font-size' => 'medium',
- 'font-size-adjust' => 'none',
- 'font-stretch' => 'normal',
- 'font-style' => 'normal',
- 'font-variant' => 'normal',
- 'font-weight' => 'normal',
- 'glyph-orientation-horizontal' => '0deg',
- 'glyph-orientation-vertical' => 'auto',
- 'image-rendering' => 'auto',
- 'kerning' => 'auto',
- 'letter-spacing' => 'normal',
- 'lighting-color' => 'white',
- 'marker' => '',
- 'marker-end' => 'none',
- 'marker-mid' => 'none',
- 'marker-start' => 'none',
- 'mask' => 'none',
- 'opacity' => 1,
- 'overflow' => 'auto',
- 'pointer-events' => 'visiblePainted',
- 'shape-rendering' => 'auto',
- 'stop-color' => 'black',
- 'stop-opacity' => 1,
- 'stroke' => 'none',
- 'stroke-dasharray' => 'none',
- 'stroke-dashoffset' => 0,
- 'stroke-linecap' => 'butt',
- 'stroke-linejoin' => 'miter',
- 'stroke-miterlimit' => 4,
- 'stroke-opacity' => 1,
- 'stroke-width' => 1,
- 'text-anchor' => 'start',
- 'text-decoration' => 'none',
- 'text-rendering' => 'auto',
- 'unicode-bidi' => 'normal',
- 'visibility' => 'visible',
- 'word-spacing' => 'normal',
- 'writing-mode' => 'lr-tb',
- 'text-color' => 'black',
- 'transfmatrix' => array(1, 0, 0, 1, 0, 0)
- ));
- /**
- * If true force sRGB color profile for all document.
- * @protected
- * @since 5.9.121 (2011-09-28)
- */
- protected $force_srgb = false;
- /**
- * If true set the document to PDF/A mode.
- * @protected
- * @since 5.9.121 (2011-09-27)
- */
- protected $pdfa_mode = false;
- /**
- * Document creation date
- * @protected
- * @since 5.9.121 (2011-09-28)
- */
- protected $doc_date;
- /**
- * Custom XMP data.
- * @protected
- * @since 5.9.128 (2011-10-06)
- */
- protected $custom_xmp = '';
- //------------------------------------------------------------
- // METHODS
- //------------------------------------------------------------
- /**
- * This is the class constructor.
- * It allows to set up the page format, the orientation and the measure unit used in all the methods (except for the font sizes).
- * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or Portrait (default)</li><li>L or Landscape</li><li>'' (empty string) for automatic orientation</li></ul>
- * @param $unit (string) User measure unit. Possible values are:<ul><li>pt: point</li><li>mm: millimeter (default)</li><li>cm: centimeter</li><li>in: inch</li></ul><br />A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit.
- * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
- * @param $unicode (boolean) TRUE means that the input text is unicode (default = true)
- * @param $encoding (string) Charset encoding; default is UTF-8.
- * @param $diskcache (boolean) If TRUE reduce the RAM memory usage by caching temporary data on filesystem (slower).
- * @param $pdfa (boolean) If TRUE set the document to PDF/A mode.
- * @public
- * @see getPageSizeFromFormat(), setPageFormat()
- */
- public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false) {
- /* Set internal character encoding to ASCII */
- if (function_exists('mb_internal_encoding') AND mb_internal_encoding()) {
- $this->internal_encoding = mb_internal_encoding();
- mb_internal_encoding('ASCII');
- }
- // get array of HTML colors
- require(dirname(__FILE__).'/htmlcolors.php');
- $this->webcolor = $webcolor;
- // get array of custom spot colors
- if (file_exists(dirname(__FILE__).'/spotcolors.php')) {
- require(dirname(__FILE__).'/spotcolors.php');
- $this->spotcolor = $spotcolor;
- } else {
- $this->spotcolor = array();
- }
- require_once(dirname(__FILE__).'/unicode_data.php');
- $this->unicode = new TCPDF_UNICODE_DATA();
- require_once(dirname(__FILE__).'/encodings_maps.php');
- $this->encmaps = new TCPDF_ENCODING_MAPS();
- $this->font_obj_ids = array();
- $this->page_obj_id = array();
- $this->form_obj_id = array();
- // set pdf/a mode
- $this->pdfa_mode = $pdfa;
- $this->force_srgb = false;
- // set disk caching
- $this->diskcache = $diskcache ? true : false;
- // set language direction
- $this->rtl = false;
- $this->tmprtl = false;
- // some checks
- $this->_dochecks();
- // initialization of properties
- $this->isunicode = $unicode;
- $this->page = 0;
- $this->transfmrk[0] = array();
- $this->pagedim = array();
- $this->n = 2;
- $this->buffer = '';
- $this->pages = array();
- $this->state = 0;
- $this->fonts = array();
- $this->FontFiles = array();
- $this->diffs = array();
- $this->images = array();
- $this->links = array();
- $this->gradients = array();
- $this->InFooter = false;
- $this->lasth = 0;
- $this->FontFamily = 'helvetica';
- $this->FontStyle = '';
- $this->FontSizePt = 12;
- $this->underline = false;
- $this->overline = false;
- $this->linethrough = false;
- $this->DrawColor = '0 G';
- $this->FillColor = '0 g';
- $this->TextColor = '0 g';
- $this->ColorFlag = false;
- $this->pdflayers = array();
- // encryption values
- $this->encrypted = false;
- $this->last_enc_key = '';
- // standard Unicode fonts
- $this->CoreFonts = array(
- 'courier'=>'Courier',
- 'courierB'=>'Courier-Bold',
- 'courierI'=>'Courier-Oblique',
- 'courierBI'=>'Courier-BoldOblique',
- 'helvetica'=>'Helvetica',
- 'helveticaB'=>'Helvetica-Bold',
- 'helveticaI'=>'Helvetica-Oblique',
- 'helveticaBI'=>'Helvetica-BoldOblique',
- 'times'=>'Times-Roman',
- 'timesB'=>'Times-Bold',
- 'timesI'=>'Times-Italic',
- 'timesBI'=>'Times-BoldItalic',
- 'symbol'=>'Symbol',
- 'zapfdingbats'=>'ZapfDingbats'
- );
- // set scale factor
- $this->setPageUnit($unit);
- // set page format and orientation
- $this->setPageFormat($format, $orientation);
- // page margins (1 cm)
- $margin = 28.35 / $this->k;
- $this->SetMargins($margin, $margin);
- // internal cell padding
- $cpadding = $margin / 10;
- $this->setCellPaddings($cpadding, 0, $cpadding, 0);
- // cell margins
- $this->setCellMargins(0, 0, 0, 0);
- // line width (0.2 mm)
- $this->LineWidth = 0.57 / $this->k;
- $this->linestyleWidth = sprintf('%.2F w', ($this->LineWidth * $this->k));
- $this->linestyleCap = '0 J';
- $this->linestyleJoin = '0 j';
- $this->linestyleDash = '[] 0 d';
- // automatic page break
- $this->SetAutoPageBreak(true, (2 * $margin));
- // full width display mode
- $this->SetDisplayMode('fullwidth');
- // compression
- $this->SetCompression();
- // set default PDF version number
- $this->setPDFVersion();
- $this->encoding = $encoding;
- $this->HREF = array();
- $this->getFontsList();
- $this->fgcolor = array('R' => 0, 'G' => 0, 'B' => 0);
- $this->strokecolor = array('R' => 0, 'G' => 0, 'B' => 0);
- $this->bgcolor = array('R' => 255, 'G' => 255, 'B' => 255);
- $this->extgstates = array();
- // user's rights
- $this->sign = false;
- $this->ur['enabled'] = false;
- $this->ur['document'] = '/FullSave';
- $this->ur['annots'] = '/Create/Delete/Modify/Copy/Import/Export';
- $this->ur['form'] = '/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate';
- $this->ur['signature'] = '/Modify';
- $this->ur['ef'] = '/Create/Delete/Modify/Import';
- $this->ur['formex'] = '';
- $this->signature_appearance = array('page' => 1, 'rect' => '0 0 0 0');
- $this->empty_signature_appearance = array();
- // set default JPEG quality
- $this->jpeg_quality = 75;
- // initialize some settings
- $this->utf8Bidi(array(''), '');
- // set default font
- $this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt);
- // check if PCRE Unicode support is enabled
- if ($this->isunicode AND (@preg_match('/\pL/u', 'a') == 1)) {
- // PCRE unicode support is turned ON
- // \p{Z} or \p{Separator}: any kind of Unicode whitespace or invisible separator.
- // \p{Lo} or \p{Other_Letter}: a Unicode letter or ideograph that does not have lowercase and uppercase variants.
- // \p{Lo} is needed because Chinese characters are packed next to each other without spaces in between.
- //$this->setSpacesRE('/[^\S\P{Z}\P{Lo}\xa0]/u');
- $this->setSpacesRE('/[^\S\P{Z}\xa0]/u');
- } else {
- // PCRE unicode support is turned OFF
- $this->setSpacesRE('/[^\S\xa0]/');
- }
- $this->default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128));
- // set file ID for trailer
- $this->file_id = md5($this->getRandomSeed('TCPDF'.$orientation.$unit.$format.$encoding));
- // set document date
- $this->doc_date = substr_replace(date('YmdHisO'), '\'', (0 - 2), 0).'\'';
- // get default graphic vars
- $this->default_graphic_vars = $this->getGraphicVars();
- $this->header_xobj_autoreset = false;
- $this->custom_xmp = '';
- }
- /**
- * Default destructor.
- * @public
- * @since 1.53.0.TC016
- */
- public function __destruct() {
- // restore internal encoding
- if (isset($this->internal_encoding) AND !empty($this->internal_encoding)) {
- mb_internal_encoding($this->internal_encoding);
- }
- // unset all class variables
- $this->_destroy(true);
- }
- /**
- * Return the current TCPDF version.
- * @return TCPDF version string
- * @public
- * @since 5.9.012 (2010-11-10)
- */
- public function getTCPDFVersion() {
- return $this->tcpdf_version;
- }
- /**
- * Set the units of measure for the document.
- * @param $unit (string) User measure unit. Possible values are:<ul><li>pt: point</li><li>mm: millimeter (default)</li><li>cm: centimeter</li><li>in: inch</li></ul><br />A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit.
- * @public
- * @since 3.0.015 (2008-06-06)
- */
- public function setPageUnit($unit) {
- $unit = strtolower($unit);
- //Set scale factor
- switch ($unit) {
- // points
- case 'px':
- case 'pt': {
- $this->k = 1;
- break;
- }
- // millimeters
- case 'mm': {
- $this->k = $this->dpi / 25.4;
- break;
- }
- // centimeters
- case 'cm': {
- $t…
Large files files are truncated, but you can click here to view the full file