HexaPDF v0.27.0 Release Notes

Release Date: 2022-11-18 // almost 2 years ago
  • ➕ Added

    • 👌 Support for timestamp signatures through the [HexaPDF::Document::Signatures::TimestampHandler]
    • [HexaPDF::Document::Destinations#resolve] for resolving destination values
    • [HexaPDF::Document::Destinations::Destination#value] to return the destination array
    • 👌 Support for verifying document timestamp signatures
    • 0️⃣ [HexaPDF::Document::Signatures::DefaultHandler#signature_size] to support setting custom signature sizes
    • 0️⃣ [HexaPDF::Document::Signatures::DefaultHandler#external_signing] to support signing via custom mechanisms
    • [HexaPDF::Document::Signatures::embed_signature] to enable asynchronous external signing

    🔄 Changed

    • 💥 Breaking change: The crop box is now used instead of the media box in most cases to be in line with the specification
    • 0️⃣ [HexaPDF::Document::Signatures::DefaultHandler] to allow setting the used signature method
    • 💥 Breaking change: [HexaPDF::Document::Signatures::DefaultHandler#sign] needs to accept the IO object and the byte range instead of just the data
    • 💥 Breaking change: Enhanced support for outline items with new methods #level and #destination_page as well as changes to #add and #each_item
    • 💥 Breaking change: Removed #filter_name and #sub_filter_name from [HexaPDF::Document::Signatures::DefaultHandler]
    • 0️⃣ HexaPDF::Type::Resources#perform_validation to not add a default procedure set since this feature is deprecated

    🛠 Fixed

    • [HexaPDF::Document::Destinations::Destination::new] to also accept a hash
    • [HexaPDF::Type::Catalog] auto-conversion of /Outlines to correct class
    • [HexaPDF::Type::AcroForm::Form#flatten] to return the unflattened form fields instead of the widgets
    • [HexaPDF::Writer#write_incremental] to set the /Version in the catalog dictionary when necessary
    • [HexaPDF::Importer#import] to always return an imported object with the same class as the argument
    • [HexaPDF::Type::OutlineItem] to always be an indirect object
    • 📜 HexaPDF::Tokenizer#parse_number to handle references correctly in all cases
    • [HexaPDF::Type::Page#rotate] to correctly flatten all page boxes
    • [HexaPDF::Document::Signatures#add] to raise an error if the reserved space for the signature is not enough
    • HexaPDF::Type::AcroForm::Form#perform_validation to fix broken /Parent entries and to remove invalid objects from the field hierarchy
    • HexaPDF::Type::OutlineItem#perform_validation bug where a missing /Count key was deemed invalid
    • [HexaPDF::Revisions::from_io] to use the correct /Prev offset when revisions have been merged
    • Handling of indirect objects with invalid values for more situations

Previous changes from v0.26.2

  • ➕ Added

    • 👌 Support for setting custom properties on [HexaPDF::Layout::Box] and [HexaPDF::Layout::TextFragment]

    🔄 Changed

    • 💅 [HexaPDF::Layout::Style::LinkLayer] to use the 'link' custom box property if no target is set

    🛠 Fixed

    • 💅 [HexaPDF::Layout::Style::Layers] to allow named layers without options
    • [HexaPDF::Revision#each_modified_object] to not yield signature objects
    • [HexaPDF::Revision#each_modified_object] to force comparison of direct objects
    • [HexaPDF::Type::ObjectStream] to work for encrypted documents again