HexaPDF v0.27.0 Release Notes

Release Date: 2022-11-18 // 11 months 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