PHP & PDF Solutions

 

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.

donate via PayPal


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