1mPDF 8.0.x 2=========================== 3 4* Ability to customize User-Agent header in the HTTP requests sent by cURL (@samuelecat, #1229) 5* Add Page Number Myanmar Language Support (@MinKyawNyunt, #1201) 6* new `Mpdf\Exception\FontException` extending base `MpdfException` was introduced and is thrown on Font manipulation 7* A bit cleaner exception messages for font-related errors 8* Use atomic cache writing. (@PATROMO, #1186) 9* Fix: "Undefined index: group" when calling MultiCell when using font without OTL data (@Kekos, #1213, #941) 10* Add C128RAW barcode type to create any barcode (ex: subtype change in middle of barcode) (#1124) 11* Add proxy support to curl 12* Fixed date and time format in the informations dictionary (#1083, @peterdevpl) 13* Checking allowed stream wrappers in CssManager 14* PHP 7.4 support (until final 7.4 release with composer --ignore-platform-reqs) 15* Improve debugging of remote content issues (@ribeirobreno) 16* Added `exposeVersion` configuration variable allowing to hide mPDF version from Producer tag and HTTP headers 17* Added the check for JPEG SOF header 0xFF 0xC1 (extended) (@jamiejones85) 18* Allows setting `none` as zoom mode in `SetDisplayMode` method, so that OpenAction is not written (#602) 19* Allowed image stream whitelist to be customised (#1005, thanks @jakejackson) 20* Fixed parsing of top-left-bottom-right CSS rules with !important (#1009) 21* Fixed skipping ordered list numbering with page-break-inside: avoid (#339) 22* Compound classes selector support, like `.one.two` or `div.message.special` (#538, @peterdevpl) 23* Fixed CMYK colors in text-shadow (#1115, @lexilya) 24* Skip non supported wrappers when resolving paths (#1204, @MarkVaughn) 25* Fixed SVGs using a style tag, has styles ignored ( Requires ext-dom ) (#450, @antman3351) 26 27mPDF 8.0.0 28=========================== 29 30### 15/03/2019 31 32* Updated FPDI dependency to version 2 (thanks a lot, @JanSlabon) 33 - removed `SetImportUse` method 34 - case of `ImportPage` method changed to `importPage` 35 - similarly, case of `setSourceFile` and `useTemplate` was changed to a lowercase first letter. 36 - signature of `importPage` changed 37 - returned value of `useTemplate` changed 38* Moved QRCode generating code portions to external package _mpdf/qrcode_ 39 - This reduced package size considerably (ca 6MB) 40* Fraction sizes without leading zeros allowed for font sizes (#973, thanks @peterdevpl) 41* WriteHTML is now strict about used `$mode` parameter (#915, thanks, @tomtomau) 42* Fixed regression in nested tables (#860, thanks, @machour) 43* Scientific notation handling in CSS font sizes (#753, thanks, @peterdevpl) 44 45 46mPDF 7.1.x 47=========================== 48 49* PHAR security issue fixed (thanks, @jakejackson) 50* Font temporary data saved as JSON instead of generating PHP files (thanks, @jakejackson) 51* cURL handling enhancements (thanks, @jakejackson) 52* SVG parsing fixes (thanks, @achretien) 53* Write PDF content with *Writer service classes 54* PHP 7.3 is supported 55* Added myclabs/deepcopy dependency, fixed TOC page numbering (thanks, @jakejackson) 56* Custom color for QR codes 57* Added support for orientation config key 58* Code and tests cleanups and enhancements 59 - PHPUnit dedicated assertions (thanks, @carusogabriel) 60 - WriteHTML part constants (thanks, @tomtomau) 61 - Various notice fixes (kudos to all respective authors) 62 63mPDF 7.0.x 64=========================== 65 66* Allow passing file content or file path to `SetAssociatedFiles` (#558) 67* Allowed ^1.4 and ^2.0 of paragon/random_compat to allow wider usage 68* Fix of undefined _getImage function (#539) 69* Code cleanup 70* Better writable rights for temp dir validation (#534) 71* Fix displaying dollar character in footer with core fonts (#520) 72* Fixed missed code2utf call (#531) 73* Refactored and cleaned-up classes and subnamespaces 74 75 76mPDF 7.0.0 77=========================== 78 79### 19/10/2017 80 81Backward incompatible changes 82----------------------------- 83 84- PHP `^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0` is required. 85- Entire project moved under `Mpdf` namespace 86 - Practically all classes renamed to use `PascalCase` and named to be more verbose 87 - Changed directory structure to comply to `PSR-4` 88- Removed explicit require calls, replaced with Composer autoloading 89- Removed configuration files 90 - All configuration now done via `__construct` parameter (see below) 91- Changed `\Mpdf\Mpdf` constructor signature 92 - Class now accepts only single array `$config` parameter 93 - Array keys are former `config.php` and `config_fonts.php` properties 94 - Additionally, former constructor parameters can be used as keys 95- `tempDir` directory now must be writable, otherwise an exception is thrown 96- ICC profile is loaded as entire path to file (to prevent a need to write inside vendor directory) 97- Moved examples to separate repository 98- Moved `TextVars` constants to separate class 99- Moved border constants to separate class 100- `scriptToLang` and `langToFont` in separate interfaced class methods 101- Will now throw an exception when `mbstring.func_overload` is set 102- Moved Glyph operator `GF_` constants in separate `\Mpdf\Fonts\GlyphOperator` class 103- All methods in Barcode class renamed to camelCase including public `dec_to_hex` and `hex_to_dec` 104- Decimal conversion methods (to roman, cjk, etc.) were moved to classes in `\Mpdf\Conversion` namespace 105- Images in PHP variables (`<img src="var:smileyface">`) were moved from direct Mpdf properties to `Mpdf::$imageVars` public property array 106- Removed global `_SVG_AUTOFONT` and `_SVG_CLASSES` constants in favor of `svgAutoFont` and `svgClasses` configuration keys 107- Moved global `_testIntersect`, `_testIntersectCircle` and `calc_bezier_bbox` fucntions inside `Svg` class as private methods. 108 - Changed names to camelCase without underscores and to `computeBezierBoundingBox` 109- Security: Embedded files via `<annotation>` custom tag must be explicitly allowed via `allowAnnotationFiles` configuration key 110- `fontDir` property of Mpdf class is private and must be accessed via configuration variable with array of paths or `AddFontDirectory` method 111- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks 112- cURL is prefered over socket when downloading images. 113- Removed globally defined functions from `functions.php` in favor of `\Mpdf\Utils` classes `PdfDate` and `UtfString`. 114 - Unused global functions were removed entirely. 115 116 117Removed features 118---------------- 119 120- Progressbar support 121- JpGraph support 122- `error_reporting` changes 123- Timezone changes 124- `compress.php` utility 125- `_MPDF_PATH` and `_MPDF_URI` constants 126- `_MPDF_TEMP_PATH` constant in favor of `tempDir` configuration variable 127- `_MPDF_TTFONTDATAPATH` in favor of `tempDir` configuration variable 128- `_MPDFK` constant in favor of `\Mpdf\Mpdf::SCALE` class constant 129- `FONT_DESCRIPTOR` constant in favor of `fontDescriptor` configuration variable 130- `_MPDF_SYSTEM_TTFONTS` constant in favor of `fontDir` configuration variable with array of paths or `AddFontDirectory` method 131- HTML output of error messages and debugs 132- Formerly deprecated methods 133 134 135Fixes and code enhancements 136---------------------------- 137 138- Fixed joining arab letters 139- Fixed redeclared `unicode_hex` function 140- Converted arrays to short syntax 141- Refactored and tested color handling with potential conversion fixes in `hsl*()` color definitions 142- Refactored `Barcode` class with separate class in `Mpdf\Barcode` namespace for each barcode type 143- Fixed colsum calculation for different locales (by @flow-control in #491) 144- Image type guessing from content separated to its own class 145 146 147New features 148------------ 149 150- Refactored caching (custom `Cache` and `FontCache` classes) 151- Implemented `Psr\Log\LoggerAware` interface 152 - All debug and additional messages are now sent to the logger 153 - Messages can be filtered based on `\Mpdf\Log\Context` class constants 154- `FontFileFinder` class allowing to specify multiple paths to search for fonts 155- `MpdfException` now extends `ErrorException` to allow specifying place in code where error occured 156- Generating font metrics moved to separate class 157- Added `\Mpdf\Output\Destination` class with verbose output destination constants 158- Availability to set custom default CSS file 159- Availability to set custom hyphenation dictionary file 160- Refactored code portions to new "separate" classes: 161 - `Mpdf\Color\*` classes 162 - `ColorConvertor` 163 - `ColorModeConvertor` 164 - `ColorSpaceRestrictor` 165 - `Mpdf\SizeConvertor` 166 - `Mpdf\Hyphenator` 167 - `Mpdf\Image\ImageProcessor` 168 - `Mpdf\Image\ImageTypeGuesser` 169 - `Mpdf\Conversion\*` classes 170- Custom watermark angle with `watermarkAngle` configuration variable 171- Custom document properties (idea by @zarubik in #142) 172- PDF/A-3 associated files + additional xmp rdf (by @chab in #130) 173- Additional font directories can be added via `addFontDir` method 174- Introduced `cleanup` method which restores original `mb_` encoding settings (see #421) 175- QR code `<barcode>` element now treats `\r\n` and `\n` as actual line breaks 176- Customizable following of 3xx HTTP redirects, validation of SSL certificates, cURL timeout. 177 - `curlFollowLocation` 178 - `curlAllowUnsafeSslRequests` 179 - `curlTimeout` 180- QR codes can be generated without a border using `disableborder="1"` HTML attribute in `<barcode>` tag 181 182 183Git repository enhancements 184--------------------------- 185 186- Added contributing guidelines 187- Added Issue template 188 189 190mPDF 6.1.0 191=========================== 192 193### 26/04/2016 194 195- Composer updates 196 - First release officially supporting Composer 197 - Updated license in composer.json 198 - Chmod 777 on dirs `ttfontdata`, `tmp`, `graph_cache` after composer install 199- Requiring PHP 5.4.0+ with Composer 200- Code style 201 - Reformated (almost) all PHP files to keep basic code style 202 - Removed trailing whitespaces 203 - Converted all txt, php, css, and htm files to utf8 204 - Removed closing PHP tags 205 - Change all else if calls to elseif 206- Added base PHPUnit tests 207- Added Travis CI integration with unit tests 208- Changed all `mPDF::Error` and `die()` calls to throwing `MpdfException` 209- PDF Import changes 210 - FPDI updated to 1.6.0 to fix incompatible licenses 211 - FPDI loaded from Composer or manually only 212- Removed iccprofiles/CMYK directory 213- Renamed example files: change spaces to underscores to make scripting easier 214- Fixed `LEDGER` and `TABLOID` paper sizes 215- Implemented static cache for mpdf function `ConvertColor`. 216- Removed PHP4 style constructors 217- Work with HTML tags separated to `Tag` class 218- Fixed most Strict standards PHP errors 219- Add config constant so we can define custom font data 220- HTML 221 - fax & tel support in href attribute 222 - Check $html in `$mpdf->WriteHTML()` to see if it is an integer, float, string, boolean or 223 a class with `__toString()` and cast to a string, otherwise throw exception. 224- PHP 7 225 - Fix getting image from internal variable in PHP7 (4dcc2b4) 226 - Fix PHP7 Fatal error: `'break' not in the 'loop' or 'switch' context` (002bb8a) 227- Fixed output file name for `D` and `I` output modes (issue #105, f297546) 228 229mPDF 6.0 230=========================== 231 232### 20/12/2014 233 234New features / Improvements 235--------------------------- 236- Support for OpenTypeLayout tables / features for complex scripts and Advances Typography. 237- Improved bidirectional text handling. 238- Improved line-breaking, including for complex scripts e.g. Lao, Thai and Khmer. 239- Updated page-breaking options. 240- Automatic language mark-up and font selection using autoScriptToLang and autoLangToFont. 241- Kashida for text-justification in arabic scripts. 242- Index collation for non-ASCII characters. 243- Index mark-up allowing control over layout using CSS. 244- `{PAGENO}` and `{nbpg}` can use any of the number types as in list-style e.g. set in `<pagebreak>` using pagenumstyle. 245- CSS support for lists. 246- Default stylesheet - `mpdf.css` - updated. 247 248Added CSS support 249----------------- 250- lang attribute selector e.g. :lang(fr), [lang="fr"] 251- font-variant-position 252- font-variant-caps 253- font-variant-ligatures 254- font-variant-numeric 255- font-variant-alternates - Only [normal | historical-forms] supported (i.e. most are NOT supported) 256- font-variant - as above, and except for: east-asian-variant-values, east-asian-width-values, ruby 257- font-language-override 258- font-feature-settings 259- text-outline is now supported on TD/TH tags 260- hebrew, khmer, cambodian, lao, and cjk-decimal recognised as values for "list-style-type" in numbered lists and page numbering. 261- list-style-image and list-style-position 262- transform (on `<img>` only) 263- text-decoration:overline 264- image-rendering 265- unicode-bidi (also `<bdi>` tag) 266- vertical-align can use lengths e.g. 0.5em 267- line-stacking-strategy 268- line-stacking-shift 269 270mPDF 5.7.4 271================ 272 273### 15/12/2014 274 275Bug Fixes & Minor Additions 276--------------------------- 277- SVG images now support embedded images e.g. `<image xlink:href="image.png" width="100px" height="100px" />` 278- SVG images now supports `<tspan>` element e.g. `<tspan x,y,dx,dy,text-anchor >`, and also `<tref>` 279- SVG images now can use Autofont (see top of `classes/svg.php` file) 280- SVG images now has limited support for CSS classes (see top of `classes/svg.php` file) 281- SVG images - style inheritance improved 282- SVG images - improved handling of comments and other extraneous code 283- SVG images - fix to ensure opacity is reset before another element 284- SVG images - font-size not resetting after a `<text>` element 285- SVG radial gradients bug (if the focus [fx,fy] lies outside circle defined by [cx,cy] and r) cf. pservers-grad-15-b.svg 286- SVG allows spaces in attribute definitions in `<use>` or `<defs>` e.g. `<use x = "0" y = "0" xlink:href = "#s3" />` 287- SVG text which contains a `<` sign, it will break the text - now processed as `<` (despite the fact that this does not conform to XML spec) 288- SVG images - support automatic font selection and (minimal) use of CSS classes - cf. the defined constants at top of svg.php file 289- SVG images - text-anchor now supported as a CSS style, as well as an HTML attribute 290- CSS support for :nth-child() selector improved to fully support the draft CSS3 spec - http://www.w3.org/TR/selectors/#nth-child-pseudo 291 [NB only works on table columns or rows] 292- text-indent when set as "em" - incorrectly calculated if last text in line in different font size than for block 293- CSS not applying cascaded styles on `<A>` elements - [changed MergeCSS() type to INLINE for 'A', LEGEND, METER and PROGRESS] 294- fix for underline/strikethrough/overline so that line position(s) are based correctly on font-size/font in nested situations 295- Error: Strict warning: Only variables should be passed by reference - in PHP5.5.9 296- bug accessing images from some servers (HTTP 403 Forbidden whn accessed using fopen etc.) 297- Setting page format incorrectly set default twice and missed some options 298- bug fixed in Overwrite() when specifying replacement as a string 299- barcode C93 - updated C93 code from TCPDF because of bug - incorrect checksum character for "153-2-4" 300- Tables - bug when using colspan across columns which may have a cell width specified 301 cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug 302- Tables - cell height (when specified) is not resized when table is shrunk 303- Tables - if table width specified, but narrower than minimum cell wdith, and less than page width - table will expand to 304 minimum cell width(s) as long as $keep_table_proportions = true 305- Tables - if using packTableData, and borders-collapse, wider border is overwriting content of adjacent cell 306 Test case: 307 ``` 308 <table style="border-collapse: collapse;"> 309 <tr><td style="border-bottom: 42px solid #0FF; "> Hallo world </td></tr> 310 <tr><td style="border-top: 14px solid #0F0; "> Hallo world </td></tr> 311 </table> 312 ``` 313- Images - image height is reset proportional to original if width is set to maximum e.g. `<img width="100%" height="20mm">` 314- URL handling changed to work with special characters in path fragments; affects `<a>` links, `<img>` images and 315 CSS url() e.g background-image 316 - also to ignore `../` included as a query value 317- Barcodes with bottom numerals e.g. EAN-13 - incorrect numeral size when using core fonts 318 319-------------------------------- 320 321NB Spec. for embedded SVG images: 322as per http://www.w3.org/TR/2003/REC-SVG11-20030114/struct.html#ImageElement 323Attributes supported: 324- x 325- y 326- xlink:href (required) - can be jpeg, png or gif image - not vector (SVG or WMF) image 327- width (required) 328- height (required) 329- preserveAspectRatio 330 331Note: all attribute names and values are case-sensitive 332width and height cannot be assigned by CSS - must be attributes 333 334mPDF 5.7.3 335================ 336 337### 24/8/2014 338 339Bug Fixes & Minor Additions 340--------------------------- 341 342- Tables - cellSpacing and cellPadding taking preference over CSS stylesheet 343- Tables - background images in table inside HTML Footer incorrectly positioned 344- Tables - cell in a nested table with a specified width, should determine width of parent table cell 345 (cf. http://www.mpdf1.com/forum/discussion/1648/nested-table-bug-) 346- Tables - colspan (on a row after first row) exceeds number of columns in table 347- Gradients in Imported documents (mPDFI) causing error in some browsers 348- Fatal error after page-break-after:always on root level block element 349- Support for 'https/SSL' if file_get_contents_by_socket required (e.g. getting images with allow_url_fopen turned off) 350- Improved support for specified ports when getting external CSS stylesheets e.g. www.domain.com:80 351- error accessing local .css files with dummy queries (cache-busting) e.g. mpdfstyleA4.css?v=2.0.18.9 352- start of end tag in PRE incorrectly changed to < 353- error thrown when open.basedir restriction in effect (deleting temporary files) 354- image which forces pagebreak incorrectly positioned at top of page 355- [changes to avoid warning notices by checking if (isset(x)) before referencing it] 356- text with letter-spacing set inside table which needs to be resixed (shrunk) - letter-spacing was not adjusted 357- nested table incorrectly calculating width and unnecessarily wrapping text 358- vertical-align:super|sub can be nested using `<span>` elements 359- inline elements can be nested e.g. text `<sup>text<sup>13</sup>text</sup>` text 360- CSS vertical-align:0.5em (or %) now supported 361- underline and strikethrough now use the parent inline block baseline/fontsize/color for child inline elements *** change in behaviour 362 (Adjusts line height to take account of superscript and subscript except in tables) 363- nested table incorrectly calculating width and unnecessarily wrapping text 364- tables - font size carrying over from one nested table to the next nested table 365- tables - border set as attribute on `<TABLE>` overrides border set as CSS on `<TD>` 366- tables - if table width set to 100% and one cell/column is empty with no padding/border, sizing incorrectly 367 (http://www.mpdf1.com/forum/discussion/1886/td-fontsize-in-nested-table-bug-#Item_5) 368- `<main>` added as recognised tag 369- CSS style transform supported on `<img>` element (only) 370 All transform functions are supported except matrix() i.e. translate(), translateX(), translateY(), skew(), skewX(), skewY(), 371 scale(), scaleX(), scaleY(), rotate() 372 NB When using Columns or Keep-with-table (use_kwt), cannot use transform 373- CSS background-color now supported on `<img>` element 374- @page :first not recognised unless @page {} has styles set 375- left/right margins not allowed on @page :first 376 377mPDF 5.7.2 378================ 379 380### 28/12/2013 381 382Bug Fixes 383--------- 384 385- `<tfoot>` not printing at all (since v5.7) 386- list-style incorrectly overriding list-style-type in cascading CSS 387- page-break-after:avoid not taking into account bottom padding and margin when estimating if next line can fit on page 388- images not displayed when using "https://" if images are referenced by src="//domain.com/image" 389- +aCJK incorrectly parsed when instantiating class e.g. new mpDF('ja+aCJK') 390- line-breaking - zero-width object at end of line (e.g. index entry) causing a space left untrimmed at end of line 391- ToC since v5.7 incorrectly handling non-ascii characters, entities or tags 392- cell height miscalculated when using hard-hyphenate 393- border colors set with transparency not working 394- transparency settings for stroke and fill interfering with one another 395- 'float' inside a HTML header/footer - not clearing the float before first line of text 396- error if script run across date change at midnight 397- temporary file name collisions (e.g. when processing images) if numerous users 398- `<watermarkimage>` position attribute not working 399- `<` (less-than sign) inside a PRE element, and NOT start of a valid tag, was incorrectly removed 400- file attachments not opening in Reader XI 401- JPG images not recognised if not containing JFIF or Exif markers 402- instance of preg_replace with /e modifier causing error in PHP 5.5 403- correctly handle CSS URLs with no scheme 404- Index entries causing errors when repeat entries are used within page-break-inside:avoid, rotated tables etc. 405- table with fixed width column and long word in cell set to colspan across this column (adding spare width to all columns) 406- incorrect hyphenation if multiple soft-hyphens on line before break 407- SVG images - objects contained in `<defs>` being displayed 408- SVG images - multiple, or quoted fonts e.g. style="font-family:'lucida grande', verdana" not recognised 409- SVG images - line with opacity=0 still visible (only in some PDF viewers/browsers) 410- text in an SVG image displaying with incorrect font in some PDF viewers/browsers 411- SVG images - fill:RGB(0,0,0) not recognised when uppercase 412- background images using data:image\/(jpeg|gif|png);base64 format - error when reading in stylesheet 413 414New CSS support 415--------------- 416 417- added support for style="opacity:0.6;" in SVG images - previously only supported style="fill-opacity:0.6; stroke-opacity: 0.6;" 418- improved PNG image handling for some cases of alpha channel transparency 419- khmer, cambodian and lao recognised as list-style-type for numbered lists 420 421SVG Images 422---------- 423 424- Limited support for `<use>` and `<defs>` 425 426mPDF 5.7.1 427================ 428## 01/09/2013 429 4301) FILES: mpdf.php 431 432Bug fix; Dollar sign enclosed by `<pre>` tag causing error. 433Test e.g.: `<pre>Test $1.00 Test</pre> <pre>Test $2.00 Test</pre> <pre>Test $3.00 Test</pre> <pre>Test $4.00 Test</pre>` 434 435----------------------------- 436 4372) FILES: includes/functions.php AND mpdf.php 438 439Changes to `preg_replace` with `/e` modifier to use `preg_replace_callback` 440(/e depracated from PHP 5.5) 441 442----------------------------- 443 4443) FILES: classes/barcode.php 445 446Small change to function `barcode_c128()` which allows ASCII 0 - 31 to be used in C128A e.g. chr(13) in: 447`<barcode code="5432
1068" type="C128A" />` 448 449----------------------------- 450 4514) FILES: mpdf.php 452 453Using $use_kwt ("keep-[heading]-with-table") if `<h4></h4>` before table is on 2 lines and pagebreak occurs after first line 454the first line is displayed at the bottom of the 2nd page. 455Edited so that $use_kwt only works if the HEADING is only one line. Else ignores (but prints correctly) 456 457----------------------------- 458 4595) FILES: mpdf.php 460 461Clearing old temporary files from `_MPDF_TEMP_PATH` will now ignore "hidden" files e.g. starting with a "`.`" `.htaccess`, `.gitignore` etc. 462and also leave `dummy.txt` alone 463 464 465mPDF 5.7 466=========================== 467 468### 14/07/2013 469 470Files changed 471------------- 472- config.php 473- mpdf.php 474- classes/tocontents.php 475- classes/cssmgr.php 476- classes/svg.php 477- includes/functions.php 478- includes/out.php 479- examples/formsubmit.php [Important - Security update] 480 481Updated Example Files in /examples/ 482----------------------------------- 483 484- All example files 485- mpdfstyleA4.css 486 487config.php 488---------- 489 490Removed: 491- $this->hyphenateTables 492- $this->hyphenate 493- $this->orphansAllowed 494Edited: 495- "hyphens: manual" - Added to $this->defaultCSS 496- $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB' 497New: 498- $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-'); 499- $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2); 500- $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2); 501- $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script) 502 503 504Backwards compatability 505----------------------- 506 507Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences: 5081) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever 509 you previously used $mpdf->hyphenate=true; 5102) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get: 511 - No indent (previous default of 5mm) - ($tocindent is ignored) 512 - Any font, font-size set ($tocfont or $tocfontsize) will not work 513 - HyperLinks will appear with your default appearance - usually blue and underlined 514 - line spacing will be narrower (can use line-height or margin-top in CSS) 515 516New features / Improvements 517--------------------------- 518- Layout of Table of Content ToC now controlled using CSS styles 519- Text alignment on decimal mark inside tables 520- Automatically generated bookmarks and/or ToC entries from H1 - H6 tags 521- Support for unit of "rem" as size e.g. font-size: 1rem; 522- Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip 523- Text-outline controlled by CSS (compatible with CSS3 spec.) 524- Use of `<dottab>` enhanced by custom CSS "outdent" property 525- Image HTML attributes `<img>` added: max-height, max-width, min-height and min-width 526- Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9); 527- Lists - added support for "start" attribute in `<ol>` e.g. `<ol start="5">` 528- Hyphenation controlled using CSS, consistent with CSS3 spec. 529- Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0 530- Line breaking in CJK scripts improved (and ability to force hanging punctuation) 531- Numerals in a CJK script are kept together 532- RTL improved support for phrases containing numerals and \ and / 533- Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A, 534 U+202C POP DIRECTIONAL FORMATTING (PDF) 535- Support for `<base href="">` in HTML - uses it to SetBasePath for relative URLs. 536- HTML tag - added support for `<wbr>` or `<wbr />` - converted to a soft-hyphen 537- CSS now takes precedence over HTML attribute e.g. `<table bgcolor="black" style="background-color:yellow">` 538 539Added CSS support 540----------------- 541- max-height, max-width, min-height and min-width for images `<img>` 542- "hyphens: none|manual|auto" as per CSS3 spec. 543- Decimal mark alignment e.g. text-align: "." center; 544- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem 545- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported) 546- background-origin, background-size, background-clip are now supported everywhere except in tables 547- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. `<span>` 548- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec) 549- "z-index" can be used to utilise layers in the PDF document 550- Custom CSS property added: "outdent" - opposite of indent 551 552The HTML elements `<dottab>` and `<textcircle>` can now have CSS properties applied to them. 553 554Bug fixes 555--------- 556- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E) 557- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop 558- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced 559- Tables - Warning notice now given in Table footer or header if `<tfoot>` placed after `<tbody>` and table spans page 560- Columns - block with border-width wider than the length of the border line, line overflows 561- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed 562- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border. 563- TOCpagebreakByArray() when called by function was not adding the pagebreak 564- Border around block element - dashed not showing correctly (not resetting linewidth between different edges) 565- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double 566- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed 567- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser 568 [Inadvertently improves borders in Columns because of change in LineCap] 569- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed 570- Page numbering - Page number total {nbpg} incorrect - e.g. showing decreasing numbers through document, when ToC present 571- RTL numerals - incorrectly reversing a number followed by a comma 572- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts 573- TOCpagebreak - Not setting TOC-FOOTER 574- TOCpagebreak - toc-even-header-name etc. not working 575- Parsing some relative URLs incorrectly 576- Textcircle - when moved to next page by "page-break-inside: avoid" 577- Bookmarks will now work if jump more than one level e.g. 0,2,1 Inserts a new blank entry at level 1 578- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two / 579- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1) 580- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1) 581- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1) 582- `<dottab>` fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL 583- Table {colsum} summed figures in table header 584- list-style-type (custom) colour not working 585- `<tocpagebreak>` toc-preHTML and toc-postHTML can now contain quotes 586 587mPDF 5.6 588=========================== 589 590### 20/01/2013 591 592Files changed 593------------- 594- mpdf.php 595- config.php 596- includes/functions.php 597- classes/meter.php 598- classes/directw.php 599 600 601config.php changes 602------------------ 603 604- $this->allowedCSStags - added HTML5 tags + textcircle AND 605- $this->outerblocktags - added HTML5 tags 606- $this->defaultCSS - added default CSS properties 607 608New features / Improvements 609--------------------------- 610CSS support added for for min-height, min-width, max-height and max-width in `<img>` 611 612Images embedded in CSS 613- `<img src="data:image/gif;base64,....">` improved to make it more robust, and background: `url(data:image...` now added to work 614 615HTML5 tags supported 616- as generic block elements: `<article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>` 617- as in-line elements: `<mark><time><meter><progress>` 618- `<mark>` has a default CSS set in config.php to yellow highlight 619- `<meter>` and `<progress>` support attributes as for HTML5 620- custom appearances for `<meter>` and `<progress>` can be made by editing `classes/meter.php` file 621- `<meter>` and `<progress>` suppress text inside the tags 622 623Textcircle/Circular 624- font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set) 625 NB for this AND ALL CSS on `<textcircle>`: does not inherit CSS styles 626- attribute: divider="[characters including HTML entities]" added 627- `<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" 628 divider=" • " style="font-size: auto" />` 629 630» ’ ‚ „ are now included in "orphan"-management at the end of lines 631 632Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace) 633 634NB mPDF 5.5 added support for `<fieldset>` and `<legend>` (omitted from ChangeLog) 635 636Bug fixes 637--------- 638 639- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal 640 Only a problem in limited circumstances. 641 *****Need to delete all ttfontdata/ files in order for fix to have effect. 642- `<textCircle>` background white even when set to none/transparent 643- border="0" causing mPDF to add border to table CELLS as well as table 644- iteration counter in THEAD crashed in some circumstances 645- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170); 646- CJK not working in table following changes made in v5.4 647- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src) 648- CSS `<style>` within HTML page crashed if CSS is too large (? > 32Kb) 649- SVG image nested int eht HTML failed to show if code too large (? > 32Kb) 650- cyrillic character p р at end of table cell caused cell height to be incorrectly calculated 651 652mPDF 5.5 653=========================== 654 655### 02/03/2012 656 657Files changed 658------------- 659 660- mpdf.php 661- classes/ttfontsuni.php 662- classes/svg.php 663- classes/tocontents.php 664- config.php 665- config_fonts.php 666- utils/font_collections.php 667- utils/font_coverage.php 668- utils/font_dump.php 669 670Files added 671----------- 672 673classes/ttfontsuni_analysis.php 674 675config.php changes 676------------------ 677 678To avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`) 679 680`$this->margBuffer = 0; // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)` 681 682config_fonts.php changes 683------------------------ 684 685Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto 686 'unAGlyphs' => true, 687 688Arabic text 689----------- 690 691Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish 692 Presentation forms added: 693 U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE, 694 U+06B0-U+06B4, U+06B5-U+06B9, U+06BB, U+06BC, U+06BE, U+06BF, U+06C0, U+06CD, U+06CE, U+06D1, U+06D3, U+0678 695 Joining improved: 696 U+0672, U+0675, U+0676, U+0677, U+0679-U+067D, U+067F, U+0680, U+0683, U+0684, U+0687, U+0687, U+0688-U+0692, 697 U+0694, U+0695, U+0697, U+0699, U+068F, U+06A1, U+06A4, U+06A6, U+06A7, U+06A8, U+06AA, U+06BA, U+06C2-U+06CB, U+06CF 698 699Note - Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters. 700However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF). 701 `'unAGlyphs' => true`, added to the config_fonts.php file for appropriate fonts will 702 703This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi: 704 e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS) 705 706NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work! 707Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane). 708 709mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use 710if the font already utilises these codes (unlikely). 711 712mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear 713even though some fonts contain glyphs for these characters. 714 715 716Other New features / Improvements 717--------------------------------- 718Avoid just the border/background-color of the (empty) end of a block being moved on to next page (`</div></div>`) 719using configurable variable: `$this->margBuffer`; 720 721 722The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF 723 724This has been moved to a new file: classes/ttfontsuni_analysis.php. 725 726The 3 utility scripts have been updated to use the new extended class: 727 728- utils/font_collections.php 729- utils/font_coverage.php 730- utils/font_dump.php 731 732 733Bug fixes 734--------- 735- Border & background when closing 2 blocks (e.g. `</div></div>`) incorrectly being moved to next page because incorrectly 736 calculating how much space required 737- Fixed/Absolute-positioned elements not inheriting letter-spacing style 738- Rotated cell - error if text-rotate set on a table cell, but no text content in cell 739- SVG images, text-anchor not working 740- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately 741- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc 742- SVG setting font-size as percent on successive `<text>` elements gives progressively smaller text 743- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message) 744- not resetting after 2 nested tags of same type e.g. `<b><b>bold</b></b>` still bold 745- When using charset_in other than utf-8, HTML Footers using tags e.g. `<htmlpageheader>` do not decode correctly 746- ToC if nested > 3 levels, line spacing reduces and starts to overlap 747 748Older changes can be seen [on the documentation site](https://mpdf.github.io/about-mpdf/changelog.html). 749