Version 1.7.4 (Release date: 2011-03-16) 
general changes in SetaPDF core:
- Changes in pdf_context to prevent a possible endless
loop on special OS / PHP combinations.
Version 1.7.3 (Release date: 2010-10-07) 
- Optimized "keep aspect ratio" handling for PNG and JPG stamps
- Added 2 new pdf-stamp demos
general changes in SetaPDF core:
- Removed locale aware behaviour
- Optimized handling of zero size files
- Added handling of incorrect byte offset positions
- Fixed a bug related to the matching of the xref-keyword if its
near to the beginning of the file (<20 bytes)
- Added missing initial $filters-var which had produced a
warning on "compressed" xref streams without a filter
Version 1.7.2 (Release date: 2010-04-09) 
PRO-Version: Fixed updating of encrypted Info-Dictionary
Version 1.7.1 (Release date: 2010-03-25) 
- Added PHP 5.3 support
general changes in SetaPDF core:
- Simple fallback for errorious object offsets
- Removed wrapper_functions.php
- Updated stream wrappers
- Optimized support for stream wrappers
- Optimized handling of very smal files through stream wrappers
- Added a wrapper class around iconv for transparent en/decoding
of PdfDocEncoding and UTF-16BE
Version 1.7 (Release date: 2010-02-08) 
- Added support for PDF stamps - stamp your documents with
pages of others or dynamically created PDF documents. (PHP5 only)
- changed some eval()-calls to call_user_func_array()
- extended parser class rewritten to be compatible with PDF import/stamp
- optimized pages box handling
- optimized parsing of the page tree
- fixed handling of rotated pages
- fixed errorhandling in PRO version
- REMOVED old cache "feature"! Please use the new global mechanism
- new methods in the main stamper class: getPageCount(),
getPageBoxes(), getOriginBox(), getPageRotation()
general changes in SetaPDF core:
- Fixed a bug in the xref parser function
(raised e.g. by PDF documents created with MS Office 2007 PDF Plugin)
- Changed "Decoders" folder to "Filters" renamed all classes
- Fixed missing filename in error message
- Optimized handling of very smal files through stream wrappers
Version 1.6.2 (Release date: 2009-07-03) 
- Added cleanUp()-method to free memory.
general changes in SetaPDF core:
- fixed a bug in the parser related to compressed object streams
Version 1.6.1 (Release date: 2009-03-16) 
- Fixed updating of compressed xref-streams.
- Pro-Version: Optimized handling of encrypted documents.
(unescaping of file identifier)
general changes in SetaPDF core:
- Optimized parser for errorious documents.
(handling of unbalanced tokens in dictionaries)
- Optimized handling of documents including PDF comments
- Optimized output of very smal float values.
Version 1.6 (Release date: 2008-10-20) 
general changes in SetaPDF core:
- Added global cache function to the pdf parser class. This feature
allows you to cache objects and/or xref tables to your filesystem.
The cached data is reusable with any SetaPDF API. For often reused
documents this feature will bring an exiting performance boost.
For more informations see the manual of any SetaPDF API.
(http://www.setasign.de/support/manuals/)
- Fixed output of very smal float values.
- Unescaping of strings completely rewritten.
- Optimized document id updates
- Removed _fgets()-wrapper function from wrapper_functions.php
- Added Tools directory which includes some helper functions, like
stream-wrappers
- Optimized handling of documents including PDF comments
Version 1.5 (Release date: 2008-09-18) 
- fixed bug in setFileName()-method of SetaPDF_JPGStamp and SetaPDF_PNGStamp:
If the passed file is not an image the error object was not returned but simply null.
- New Feature: Define the visibility of a stamp for printing or viewing-purpose.
Version 1.4 (Release date: 2008-03-28) 
- Supports PDF files up to version 1.7 now!
- encapsulate of exiting content streams with "q" and "Q" tokens fixed.
- prevent of writing modified objects twice.
- fixed resource lookup for PHP 5.
- PRO version: fixed a missing "endobj"-token
- PRO version: detection of the encryption dictinary optimized
general changes in SetaPDF core:
- xref-parser method completely rewritten:
The parser is able to parse pdf documents with different lineendings
and doesn't rely on the "auto_detect_line_endings" setting anymore.
Also it is able to parse some errorious xref tables without perfomance loss.
Compressed xref-streams which were introduced in PDF 1.5 are supported now!
- The parser also supports compressed object-streams which were also introduced
in PDF 1.5 now!
- Added a new static method for smart pdf version retrival:
SetaPDF_Parser::getPDFVersionSmart($fileName)
- Added new error codes refering to the PDF 1.5 features
- Added new native PDF types to the parser: PDF_TYPE_REAL and PDF_TYPE_BOOLEAN
- Optimized the output to the filesystem through a buffer system so that less
writing procedures are required.
- Added a decoder for predictor algorithms (needed for compressed xref streams)
- Fix for __autoload() on PHP5
- fixed issue with a stream length of zero
Version 1.3.6 (Release date: 2007-11-14) 
- fixed a positioning bug by encapsulating the exisitng page content into a
seperate graphic state.
- PRO version: fixed an escaping issue.
- PRO version: optimized generation of the encryption key
(accept unsigned integer in /P entry)
Version 1.3.5 (Release date: 2007-11-07) 
- fixed undefined index if useUpdate is set to false
- fixed conditional stamps (array of 2 integer values was handled wrong)
- optimized handling of objects with a generation number greater than 0.
- Changes for the text stamp:
- Added feature to draw a background rect behind the text.
New methods are:
- SetaPDF_TextStamp::setDrawBackground()
- SetaPDF_TextStamp::setBackgroundColor()
- all SetaPDF_TextStamp::set*Color() methods accepts also
CMYK data: SetaPDF_TextStamp::set*Color($c, $m, $y, $k)
- Added callback possibilities for all stamp objects. With this
feature you can adjust the size or style of a stamp object dynamically
before the stamp is processed.
The callback function/method can be defined in the 8th parameter of:
SetaPDF_Stamper::setStamp(&$stamp, $position="LT", $showOnPage="all",
$translate_x=0, $translate_y=0, $rotation=0, $underlay=false, $callback=null)
- fixed: updating document id in a referenced object
general changes in SetaPDF core:
- optimized/fixed handling of documents with different line endings
- allows the search for the xref pointer to be variable in length.
This can be controlled by a global var
$GLOBALS['SETAPDF_SEARCH_FOR_XREF_OFFSET'].
Standard value is 1500 bytes from the end of file.
- optimized match of the trailer-keyword
- optimized deescaping of strings
- misspelled constant name fixed: E_SETAPDF_ENC_UNSOPPORTED_REVISION becomes
E_SETAPDF_ENC_UNSUPPORTED_REVISION
(the old constant will still be available)
- prepared the parser to be used with stream wrappers (for the 8192 "limit" needed)
Version 1.3.4 (Release date: 2007-10-10) 
- Pro-Version: fix for encryption key creation
(fixed unescaping issue of some special chars)
- Throws an error object if SetaPDF_ImageStampe::setDimensions()
is called and no file was defined in SetaPDF_ImageStampe::setFileName()
or SetaPDF_ImageStampe::setFileName() was not successful
- fixed some require-path settings
Version 1.3.3 (Release date: 2007-09-27) 
- fixed some undefinded index notices.
- new feature: handle stamp conditions through callback functions/methods
Version 1.3.2 (Release date: 2007-07-24) 
- fixed box extraction
- fixed compression flag
- fix for pages without /Content entry
- fixed some undefinded index notices.
- link handling in stamp objects optimized
- SetaPDF_TextStamp::setAlign() accepts now 'center', 'left',
'right' instead of only single chars.
general changes in SetaPDF core:
- optimized string matching in pdf parser
- optimized error reporting in pdf parser
- the parser allows you to parse invalid files. This mechanism can be
controlled by a global variable named:
$GLOBALS['SETAPDF_PARSE_INVALID_FILES'] = (boolean)true/false
- added check for versioned files
Version 1.3.1 (Release date: 2007-05-20)