123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- ===========================
- mPDF 5.4
- 14/02/2012
- ===========================
- Files changed
- -------------
- mpdf.php
- config.php
- compress.php
- classes/ttfontsuni.php
- classes/barcode.php
- classes/indic.php
- classes/svg.php
- examples/show_code.php ----- SECURITY RISK**
- examples/example49_changelog.php
- examples/example57_new_mPDF_v5-3_active_forms_b (replace example57_new_mPDF_v5-3_active_forms)
- includes/out.php
- mpdfi/fpdi_pdf_parser.php
- Files added
- -----------
- classes/bmp.php
- classes/directw.php
- classes/form.php
- classes/grad.php
- classes/tocontents.php
- classes/wmf.php
- examples/example58_new_mPDF_v5-4_features
- config.php changes
- ------------------
- Edited: $this->allowedCSStags, $this->innerblocktags, $this->defaultCSS; (CAPTION added in each case)
- Moved: Numerous $form_.. variables are now in /classes/form.php
- New config variables
- --------------------
- $this->bookmarkStyles = array();
- $this->cacheTables = true;
-
- New methods
- -----------
- function CircularText()
- function SetVisibility()
- New/Extended CSS
- ----------------
- box-shadow (block elements - does NOT support "inset")
- text-shadow (all text elements - does NOT support "blur")
- visibility: visible|hidden|printonly|screenonly (block-level elements and images IMG only)
- text-transform: capitalize|uppercase|lowercase (extended to support TD/TH)
- tr|td|th:nth-child(odd|even|2n+1)
- color, strikethrough, underline and background-color (extended to support rotated TD/TH)
- underline and strike-through (extended to support TD/TH)
- underline (line colour) (extended to work correctly in watermark)
- page-break-after: left|right|always (block elements and tables)
- NB respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
- background[-color]: extended to support rgba|cmyka|cmyk|hsla|hsl|spot
- border(extended to support inline elements)
- New HTML
- --------
- <caption>
- <textcircle />
- New features / Improvements
- ---------------------------
- Tables - Zebra Stripes
- Tables: overlapping rowspans (partially) supported
- Tables - Disk caching
- Using progress bars (or $showStats) now reports 'real' memory usage i.e. get_memory_usage(true)
- Support for query string in the URLs for external stylesheets e.g. @import url("style.css?ltcyy7");
- Table caption partially supported
- CircularText
- BookMark styling
- Spread tables i.e. can split table (columns) across several pages width.
- Can use chelvetica, ctimes and ccourier to specify core fonts in a non-core font document
- Spread tables i.e. can split table (columns) across several pages width.
- {colsum} in <tfoot> cell will insert a column total per page.
- SVG embedded as island in HTML supported
- Active Forms
- textarea and input (text types) now accept javascript as:
- onKeystroke, onValidate, onCalculate and onFormat
- onChange is depracated but works as onCalculate (for textarea and input)
- (PS Select still accepts onChange cf. 5.3.37)
- Ledger and Tabloid added as page formats recognised. NB Ledger is same as tabloid but landscape. In mPDF, both give the same size (portrait)
- so need to add -L e.g. Ledger-L for landscape.
- Internal script changes
- -----------------------
- Changed this->k to _MPDFK throughout all scripts
- Changes to color (packed binary data in string rather than array) to reduce memory usage esp in tables
- Internal variables Removed
- $usetableheader;
- $tableheadernrows;
- $tablefooternrows;
- vars $ChangePage, $p_bottom_border, $img_margin_top(+) $issetcolor + other similar removed
- Removed a whole load of // comments
- Updates to remove some more Warning Notices (not all marked in text)
- Border set on TR - changed so set on each cell, rather than retrospectively at end of TR
- All references to table['text'] removed as not needed - uses ['textbuffer'] instead
- OpenTag(TD) changes to reduce memory usage with tables
- Includes different method to set a default timezone
- fn _smallCaps does not need (undefined) $space
- this->chrs and this->ords replaced by chr() and ord()
- Headers in out.php updated to match those used in Output()
- Change to SetFont() to improve performance time
- Change to GetStringWidth() to improve performance time
- Corrected copying of Glyphs 0,1,2, to all subset fonts (non-SMP/SIP), and only setting 32->127 in subset
- Subset fonts (non-SMP/SIP) have additionally Unicode CMap tables (0,0,4 and 0,3,4) as well as Microsoft (3,1,4)
- Subset fonts (SMP/SIP) have CMap tables (1,0,6 and 3,0,4) - rather than 1,0,6 and 3,0,6
- Subset fonts (SMP/SIP) have 'name' table changed to give 1,0 and 3,0. As it is a symbol font (not Unicode encoded) :
- needs to have a name entry in 3,0 (e.g. symbol) - original font will have 3,1 (i.e. Unicode)
- Automatically checks for HTML code length > 100000 characters and gives error warning if
- PHP < 5.2.0 (as not configurable) or increases pcre.backtrack_limit if PHP < 5.3.7
- Removed/Depracated
- ------------------
- function UseTableHeader($opt=true) fn removed / depracated
- function UsePRE($opt=true) removed
- $attr['REPEAT_HEADER'] == true CSS removed / depracated
- $this->usepre=true; removed / depracated as never needed - always respects PRE whitespace
- ToC: NB Values can no longer be set directly e.g. as in example
- $mpdf->TOCheader = array(); // array as for setting header/footer
- $mpdf->TOCfooter = array(); // array as for setting header/footer
- $mpdf->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
- $mpdf->TOCpostHTML = ''; // HTML text to appear after table of contents
- $mpdf->TOCbookmarkText = 'Content list'; // Text as it will appear in the Bookmarks (leave blank for none)
- Need to use TOCpagebreak either direct (or array version) or as HTML
- OR if absolutley necessary, could use:
- $mpdf->tocontents->TOCheader = array(); // array as for setting header/footer
- $mpdf->tocontents->TOCfooter = array(); // array as for setting header/footer
- $mpdf->tocontents->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
- $mpdf->tocontents->TOCpostHTML = ''; // HTML text to appear after table of contents
- $mpdf->tocontents->TOCbookmarkText = 'Content list'; // Text as it will appear in the Bookmarks (leave blank for none)
- Further Details
- ===============
- CSS border on inline elements
- -----------------------------
- Support for CSS border (and variants) on inline elements e.g. <span style="border-bottom: 1px dashed #000000;">
- Border styles solid|dotted|dashed|double only are supported. Border radius not supported.
- Nested inline elements will have repeat left|right borders on the nested content (unlike browsers)
- Tables - Zebra Stripes
- ----------------------
- TABLE - striped rows cf. http://dev.opera.com/articles/view/zebra-striping-tables-with-css3/
- tr:nth-child(odd) { background-color: #99ff99; }
- thead tr:nth-child(3n+2) { background-color: #FFBBFF; }
- td:nth-child(2n+1) { background-color: #BBBBFF; }
- table.zebraTable td:nth-child(2n+1) { background-color: #BBBBFF; }
- table.zebraTable th:nth-child(2n+1) { background-color: #BBBBFF; }
- NB mPDF does NOT correctly apply specificity to all CSS
- table.zebra tbody tr:nth-child(2n+1) td { background-color: #FFFFBB; }
- table.zebra tbody td:nth-child(odd) { background-color: #BBBBFF; }
- should make every odd row yellow, and every odd coloumn blue, but with the row/yellow overriding the column/blue.
- In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using
- table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: #FFFFBB; }
- (The :nth-child(1n+0) selector just selects every td cell.)
- Tables - Disk caching
- ---------------------
- TABLES: using disk caching
- // Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased
- // executon time and disk access (read and write)
- $this->cacheTables = true;
- NB $this->packTableData will be overridden to => true; // required for cacheTables
- $this->simpleTables will be overridden to => false; // Cannot co-exist with cacheTables
- Table caption
- -------------
- Must come immediately after <table...>
- CSS caption-side and HTML align attribute of top|bottom supported (not attribute left|right)
- Handled as a separate block element brought outside the table, so:
- CSS will not cascade correctly on the table
- width of caption block is that of page or of the block element containing the table
- so alignment will be to the page-width not the table width
- if table page-break-after: always, the caption will follow the pagebreak.
- This does work:
- <style>
- .tablecaption { caption-side: bottom; text-align: left; font-weight: bold; color: green; }
- </style>
- ...
- <table>
- <caption class="tablecaption">Caption title here</caption>
- <tbody>
- CSS visibility: printonly, screenonly
- -------------------------------------
- Roughly based on CSS
- Works on Block elements P, DIV etc, or Image
- Cannot nest / layer.
- Inner blocks/image with set visibility are ignored if already set on enclosing block element.
- (Block element) does not work inside table (image does)
- So 'visible' does nothing but is set as default
- (NB Changes output to PDF version 1.5)
- Incompatible with PDFA / PDFX
- 'visibility'
- Value: visible | hidden | (collapse | inherit)
- Initial: visible
- Applies to: all elements
- Inherited: yes
- The 'visibility' property specifies whether the boxes generated by an element are rendered.
- Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether).
- Values have the following meanings:
- visible
- The generated box is visible.
- hidden
- The generated box is invisible (fully transparent, nothing is drawn), but still affects layout.
- Furthermore, descendants of the element will be visible if they have 'visibility: visible'.
- collapse | inherit
- NOT supported in mPDF
- CUSTOM:
- printonly | screenonly
- Added VISIBILITY function
- $mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden'
- (NB Changes output to PDF version 1.5)
- Incompatible with PDFA / PDFX
- CircularText
- ------------
- function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) {
- x: abscissa of center
- y: ordinate of center
- r: radius of circle
- text: text to be printed
- align: text alignment: top or bottom. Default value: top
- kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed.
- fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed
- - now uses Kerning between letters if useKerning == true (set manually see example)
- BookMark styling
- ----------------
- New configurable variable to control appearance of Bookmarks e.g.
- $this->bookmarkStyles = array(
- 0 => array('color'=> array(0,64,128), 'style'=>'B'),
- 1 => array('color'=> array(128,0,0), 'style'=>''),
- 2 => array('color'=> array(0,128,0), 'style'=>'I'),
- );
-
- Column sums
- -----------
- (Also changed some preg_replace to str_replace to improve performance)
- To use: just add {colsum} to any cells of the table footer <tfoot>
- Add a number to specify a fixed number of decimal points e.g. <td>£{colsum2}</td> will give you £123.40
- The width of the column will be calculated using the actual string {colsum} as a placeholder.
- If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____}
- Spread tables
- -------------
- i.e. can split table (columns) across several pages width.
- CSS <table style="overflow: visible">
- Cannot use with:
- $this->kwt - ignored
- $this->table_rotate - ignored
- $this->table_keep_together - ignored
- $this->ColActive - cancels spread tables
- Messes up with:
- $mpdf->forcePortraitHeaders = true;
- $mpdf->forcePortraitMargins = true;
- Problems with CJK, and RTL
- Will do no resizing of fonts at all.
- Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page
- If table row too high for page will die with error message.
- Will override some specs for width if this creates conflicts
- Recommended to specify absolute value of width on each column.
- Bug fixes
- =========
- Dottab - if text after dottab is hyperlinked <a></a> then dots are underlined
- page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
- Annotation() function called directly with colorarray(r,g,b)
- Added urldecode to _getImage to cope with ../name%20of%20image.jpg
- Added urldecode AND htmlspecials_decode to href in <a> link e.g. https://www.google.com/search?hl=en&q=mpdf&filename=name%20of%20file
- [barcode.php] Allow in C39 codes - will be changed to spaces
- <table> inside a <div position:fixed, left:300px;> not calculating table width correctly
- - leading to either upside down table or error width less than 1 character
- Depracated magic_quotes_runtime() in compress.php
- DIRECTW included twice in compress.php
- FORMS mark up for compress.php corrected
- double backslashes not preserved inside <pre> or <textarea>
- font-weight and font-style not recognised in <pageheader>
- Progress bars causing corrupt PDF file (out.php) changed fopen from "r" mode to "rb" (binary)
- Target around image - <a href="#internaltarget"><img ... /></a> - not working
- SmallCaps in <thead> error
- Fonts with "name" table in format 1 not recognised correctly
- Rotated table which does not fit on remaining page, forces a new page even if already at top of page
- Locale causing problems - all instances of sprintf() using %.3f changed to %.3F so not locale aware
- CSS border radius not implemented on fixed/absolute positioned block element
- Background color in rotated table extending way beyond bottom of table
- Nested table containing <thead> or <tfoot> was confused with <thead> or <tfoot> of parent table
- Correct handling of spaces, < or & in textarea
- <option> and <input ..> attributes value/title decoded with fn lesser_entity_decode instead of htmlspecialchars_decode to include '
- line width not restored to correct value after "line-through" text in Cell()
- Kannada - incorrect positioning of Reph
- Forms - In <input> or <option> (select) not correctly handling HTML named entities e.g. < in value or title
- Active forms - as Value or Title incorrectly showing as Euro - PDFDocEncoding fixed
- Unicode data in embedded fonts not encrypted when doc encrypted
- Nested block elements which are empty including innermost one, top margin of innermost block was ignored
- font-size: xx% inside a block was setting on block's parent font-size
- Active forms - radio buttons (removed name from Widget - leave on Radio group)
- causing problems accessing field for radio buttons
- When using simple tables and border-collapse, if table border set, but cell borders not set, should display table border (fixed)
- position:fixed block - if neither top nor bottom nor height specified, was positioned incorrectly (y)
- Leave - if top, bottom, margin-top, margiin-bottom and height are all left unspecified (or auto), will centre vertically
- on the page (specific to mPDF - not consistent with CSS2.1)
- But if any one of them are specified (including e.g. margin-top=0), follows CSS spec, so top is the current "static" position
- background-image-opacity=0 not working on BODY or BLOCK
- Lists - if LI continues after a nested List, would add as a new LI item (should continue as part of earlier LI item)
- fn WriteCell() converts to 'windows-1252' when required
- if multiple calls to mPDF used, cannot redefine function cmp()
- internal link targets <a name="xx" /> in ToC not moved when using: page-break-inside:avoid
- internal link targets <a name="xx" /> not moved when using: columns, page-break-inside:avoid, keep-with-table or table rotate
- Active Forms - onChange not working for SELECT (cf. 5.3.25) Example 57 only worked by chance as JS was carried over from Select to Text field
- Bug is fixed, but example file needed updating to onCalculate for the display field.
- Table cell: if height set as %, currently sets it as % of page-width; instead this now ignores it.
- Bengali letter Khanda Ta (U+09CE) character not recognised; was added in Unicode v4.1 and prior to this, (U+09A4 U+09CD U+200D)
- so mPDF converts to this string and seems to work.
- OCR characters wrong size in barcodes if using different ocr font
|