Christmas Release of all SetaPDF Components2020-12-22
With this SetaPDF release we want to wish you a Merry Christmas and a Happy New Year!
We hope you made the best from this strange year and you are looking forward to better times coming, too.
This release comes with new minor versions for all SetaPDF components. We ensured compatibility with PHP 8 and added several tweaks, small features and bug fixes. Most work was done in the SetaPDF-Core component which results in improvements for all components.
We also rewrote all demos with a nice GUI and put them into a public respository at GitHub. It is also planned to have these demos living on a live site so we can give you more ideas and more better support when it comes to "how can I do" questions. As soon as this is deployed you will get an update from us.
Some highlights of this release:
- PHP 8 compatibility for all components.
- A new TempStream writer class was implemented to reduce CPU an memory usage.
- The SetaPDF-FormFiller component can finally handle XFA forms without data-bindings.
- The HttpCurlResolver in the SetaPDF-Signer component got a retries option when resolving validation related information (certificates or CRLs).
- All demos are completely rewritten.
Check the release notes of the components below.
Log in to download the latest version of the related packages!
Release date: 2020-12-22
Rev. 1508 to 1597
- Added TempStream writer class which uses buffering and a temporary stream internally. Both combined result in best CPU and memory usage.
- Updated Http writer to extend the new TempStream writer class to reduce CPU and memory usage.
- Added support for multiple quadrilaterals in setQuadPoints() method in all annoation classes supporting quad points.
- Added SetaPDF_Core_Canvas_Draw::polygon() method.
- Fixed fallback logic in Flate filter class.
- Ignore invalid references in AcroForm data and handle them as they would not exist.
- Allow DateTimeInterface instances in set*Date() methods in Annotation classes.
- Handle missing encoding information in Type0 font instead of throwing a fatal error.
- Handle empty Keyword array in XmpHelper class.
- Resolve values of FontBBox array in several font classes (instead of accessing it directly).
- Fixed access to undefined annotation appearance streams.
- Added compatibility for PHP 8.
- Handle invalid /Parent values in form field structures.
- Recreate FirstChar or LastChar entries in faulty Type1 and TrueType fonts (if possible).
- Added support for DateTimeInterface in SetaPDF_Core_DataStructure_Date class.
- Return color space instance in SetaPDF_Core_TransparencyGroup::getColorSpace() instead of raw value.
- Fixed too many recursions in gif frame handling.
- Micro optimization in pdf parser classes.
- Ignore empty strings or streams in AES encrypted documents.
- Moved SetaPDF_Core_Font::getFontBBox($recalculate=true) to own method (recalculateFontBBox).
- Optimized performance of implementations of SetaPDF_Core_Font_FontInterface::getFontBBox().
- Optimized performance of SetaPDF_Core_Geometry Rectangle and Vector.
- Ensure that SetaPDF_Core_Document_Info::getDictionary(true) resolves to, or creates a dictionary if needed.
- Speed optimization for parsing of JPEG files.
- Optimized SetaPDF_Core_Document_Catalog::setOpenAction() to accept "null" as parameter which removes the OpenAction entry from the catalog dictionary.
- Optimized handling of custom lists in SetaPDF_Core_Font_Glyph_List.
- Optimized handling of the /Difference array in Simple and Type3 fonts.
- Reduce extending page boundaries to their intersection with the media box.
- Optimized SetaPDF_Core_Type_Dictionary_Helper::resolveAttribute() to ignore not found references.
- Completely rewritten with a structured GUI and hosted on GitHub now.