Info
It's FREE!
The 'F' in FPDI stands for 'free': you may use it for any kind of project and adapt it to your needs -the license conditions of ASL 2.0 are met nevertheless.

PDF Documents > 1.4
Do you need support for PDF documents with a version higher than 1.4? Check out the new FPDI PDF-Parser!
FPDI - Changelog
As of Version 1.3 the changelogs
are available on the download page.
v1.2.1 (2008-09-11)
- !IMPORTANT CHANGE! As FPDI is usable with FPDF and TCPDF from now on you need to include the desired class before you inlcude FPDI/FPDF_TPL!
- added compatibility for TCPDF (4.0.023)
- removed unused var FPDI::$importVersion
- removed constructor in FPDI
- multiple FPDI::importPage()-calls will not create multiple xform objects, now.
- added additional standard value for graphic state before template usage
(FPDI::useTemplate()) - corrected handling of $_obj_stack in FPDI::_putimportedobjects()
- removed FPDI::setVersion()
- added "new" PDF variable types: PDF_TYPE_REAL, PDF_TYPE_BOOLEAN
- corrected handling of FPDI::PDFVersion
- fixed pdf_parser::pdf_find_xref()
- pdf_parser::pdf_read_xref() completely rewritten:
- the new method is not that strict as the last one
- parses some errorious documents
- does not rely on fgets/lineendings anymore.
- does not care about any recursive-stack limitations of php/apache - optimized parsing of strings (pdf_parser::pdf_read_value())
- added parsing of PDF comments (pdf_parser::pdf_read_value())
- removed _fgets()-wrapper function (wrapper_functions.php)
- FPDI will now work with stream wrappers (in pdf_context.php).
- smal changes in the LZWDecode-Class (removed handling by reference)
- added fpdi2tcpdf_bridge.php which remaps TCPDF to the name FPDF so FPDF_TPL can
inherit from FPDF further. - added compatibility for FPDF 1.6
Generally the usage of FPDI is identically to v1.2 - so no "seen" feature is added, beacause of this we just did a jump to 1.2.1 and not 1.3.
Known Issues for/with TCPDF in 1.2.1
- As TCPDF writes some content to the begining of a content stream, border- and
background gets behind a template, while the text still stays in front of it.
v1.2 (2007-05-20)
- cleaned up the whole code and prefixed private methods and properties with an underscore.
- renamed various private methods to suggestive names
- fixed fpdi_pdf_parser::getContent(): "unknown token qQ"
- fixed fpdi_pdf_parser::getPageBox(): Correct calculation of page size
- fixed fpdi::_closeParsers(): method call was on a copy of the parserobjects instead of reference
- added fpdi::_enddoc(): automatically calls fpdi::_closeParsers()
- fixed fpdi::setSourceFile so it doesn't recreates parser objects for already used pdf documents.
- fixed pdf_parser::pdf_find_xref (): works now specification recommend
- fixed pdf_parser::pdf_read_value(): string-matching with escaped parenthesis is "really" fixed
- pdf_context::reset(): catch length of zero bytes
- removed fpdi_pdf_parser::getInfo(), fpdi_pdf_parser::deescapeString() and fpdi_pdf_parser::hex2String(): useless for FPDI
- fpdi.php: removed superfluous constant definations
- fixed some smal bugs... ( =& new)
- removed FPDF 1.52 compatibility
- changed the handling for decodefilter
- New feature: FPDI can handle different boxes than simply the MediaBox
- New feature: FPDI automaticaly rotation of rotated pages
v1.1.1 (2005-06-29)
- fixed all fgets-calls with the second parameter to bring compatibility to PHP 4.1.2
v1.1 (2005-04-06, 2005-05-06):
- added some things to free memory when objects are not longer used.
- made FPDI 1.1 compatible with FPDF 1.53
- fixed method getPageBox() in fpdi_pdf_parser.php, which did not work correct, when the box is an object reference.
v1.1beta (2004-11-12):
Various changes:
- splitted pdf_parser in 2 classes
- Fixed major bugs for PHP Version < 4.3
- Correct fpdi_pdf_parser::hex2String to handle big/little endian hexstrings
Fixed pdf_parser::pdf_read_value:
- In very few situations it rans into an infinite loop.
- string-matching with escaped parenthesis is fixed
- hex-matching fixed
- included stream-matching and improved speed due using the length value of the stream-dictionary. (pdf_context::read_stream() is removed)
Fixes, changes in fpdi-class:
- Added own _out()-Method to disable linebreaks after _out-call
- Added "var $obj_stack;" to class
- Added LZW-Decoder
- Added ASCII85-Decoder
- renamed fpdi_functions to wrapper_functions.php
- Added methods for closing opened PDF-Documents (fclose)
v1.02beta (2004-08-24):
- back to the roots... make FPDI usable with older php versions up 4.1+ ;-) I used some function wrappers to do this - comments are welcome.
- fixed bug in parser, if it reaches a tab-character.
- include error handling if zlib is not supported.
- fixed a bug in pdf_parser::getPageContent() if content reference is an array
v1.01 (2004-08-10):
- fixed regex in php_parser::find_xref_table to handle files with whitespaces before xref position.
- fixed php_parser::rebuildContentStream to run without notice if error_reporting is set to all and no Filter is given.
FPDF_TPL - Changelog
v1.1.1 (2008-09-11)
- added compatibility for TCPDF (with limitations):
- HTML-Output in a template will not work.
- As TCPDF writes some content to the begining of a content stream, border
- and background gets behind a template, while the text still stays in front of it. - removed require_once('fpdf.php') for TCPDF compatibility.
- removed constructor
- added compatibility for FPDF 1.6
v1.1 (2006-10-30)
- prefixed private methods and properties with an underscore.
- renamed various private methods to suggestive names
- moved SetAutoPageBreak-call to the end of the endTemplate-method
- removed $fontprefix-property and FPDF_TPL::findNextAvailFont()
- cleaned up FPDF_TPL::beginTemplate()
- cleaned up FPDF_TPL::endTemplate()
- cleaned up FPDF_TPL::useTemplate() and FPDF_TPL::getTemplateSize(): removed extract()-call
- cleaned up FPDF_TPL::SetFont(): No FPDF_FONTPATH is required now