News Archive

SetaPDF Version 2.47.0.2095 released!2025-03-19

Finally, we've introduced namespaces in SetaPDF 😎 – yes, we know that most of you may not know the times where no namespaces existed in PHP and wondered why our class names were that long and structured with underscores: That’s how it was done back in the days before PHP 5.3 – and that’s where our journey started.

Backwards compatibility has always been and remains an important requirement for us so that our customers can use the latest versions without any problem. We thought that introducing namespaces would break backwards compatibility and that we would only be able to integrate this “change” in a major release. However, after intensive research, development and testing, we have found ways to achieve almost complete backward compatibility which landed in this release.

So there's no real need to refactor any code but it's simply a cosmetic change and a matter of style. The old class names are still valid and registered as class aliases. All our demos and documentation will use the new namespaced version in the future. They will be updated in the coming days accordingly.

For a general overview of the migration from 2.46 to 2.47 we prepared an article in our manual. There you will also find information about very rarely edge cases where an upgrade may need some adjustments.

Check the release notes of the components below.
Log in to download the latest version of the related packages!

switch product

Version 2.47.0.2095

Release date: 2025-03-19
SetaPDF-Core Component
Feature
  • Added markedContent() method to Canvas\Operators class.
  • Added namespaces to all classes (setasign\SetaPDF2\Core) and class aliases for backwards compatibility.
Bugfix
  • Fixed possible infinite loop in AbstractType::ensure() when indirect objects are recursive.
  • Handle recursion in various helper methods of SetaPDF_Core_Type_Dictionary_Helper.
  • Recognize PDF/A part and conformance in attributes, too.
Tweak
  • Added public createSubset() method to TrueType\Subset and Type0\Subset classes to allow control over the moment the PDF objects are created.
  • Added getCanvas() method to SetaPDF_Core_Canvas_ContainerInterface interface.
  • Canvas\MarkedContent class extends Canvas\StandardOperators now.
  • Added missing parent::decode() call in Flate fallback logic.
  • Addes support for individual schema extension namespaces for ZUGFeRD extraction.
  • Moved SetaPDF_Core_DataStructure_Color::hexToRgb() to SetaPDF_Core_DataStructure_Color_Rgb and marked old method as deprecated.
  • Added missing abstract keyword to SetaPDF_Core_DataStructure_Color class.