All Versions
70
Latest Version
Avg Release Cycle
17 days
Latest Release
549 days ago

Changelog History
Page 1

  • v0.27.0 Changes

    November 18, 2022

    โž• 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
  • v0.26.2 Changes

    October 22, 2022

    โž• 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
  • v0.26.1 Changes

    October 14, 2022

    ๐Ÿ”„ Changed

    • ๐Ÿ‘ [HexaPDF::Serializer] to provide better error messages when encountering unserializable objects

    ๐Ÿ›  Fixed

    • [HexaPDF::Importer] to correctly expose previously mapped objects
  • v0.26.0 Changes

    October 14, 2022

    โž• Added

    • ๐Ÿ‘Œ Support for page labels
    • [HexaPDF::Type::MarkInformation]

    ๐Ÿ”„ Changed

    • 0๏ธโƒฃ [HexaPDF::Rectangle] to recover from invalid values by defaulting to [0, 0, 0, 0]

    ๐Ÿ›  Fixed

    • โœ… [HexaPDF::DictionaryFields::PDFByteStringConverter] to duplicate the string before conversion
    • [HexaPDF::Type::FileSpecification#path=] to duplicate the given string value due to using it for two different fields
  • v0.25.0 Changes

    October 02, 2022

    โž• Added

    • ๐Ÿ‘Œ Support for the document outline
    • ๐Ÿ’… [HexaPDF::Layout::Style#line_height] for setting a custom line height independent of the font size
    • [HexaPDF::Document::Destinations#use_or_create] as unified interface for using or creating destinations
    • [HexaPDF::Document::Destinations::Destination#valid?] and class method for checking whether a destination array is valid

    ๐Ÿ›  Fixed

    • ๐Ÿ’… Calculation of text related [HexaPDF::Layout::Style] values for Type3 fonts
    • [HexaPDF::Encryption::SecurityHandler#encrypt_string] to either return a dupped or encrypted string
    • [HexaPDF::Layout::TextLayouter#fit] to avoid infinite loop when encountering a non-zero width breakpoint penalty
    • ๐Ÿ“œ [HexaPDF::Type::ObjectStream] to parse the initial stream data right after initialization to avoid access errors
    • ๐Ÿ”€ [HexaPDF::Revisions::from_io] to merge a completely empty revision with just a /XRefStm pointing into the previous one with the latter
    • ๐Ÿ”ง [HexaPDF::Revisions::from_io] to handle the case of the configuration option 'parser.try_xref_reconstruction' being false
  • v0.24.2 Changes

    August 31, 2022

    ๐Ÿ›  Fixed

    • [HexaPDF::Importer] to detect loops in a fully-loaded document
    • HexaPDF::Type::PageTreeNode#perform_validation to only do the validation for the document's root page tree node
    • HexaPDF::Type::Page#perform_validation to only do the validation if the page is part of the document's page tree
    • Box layouting to take small floating point differences into account
  • v0.24.1 Changes

    August 11, 2022

    โž• Added

    • โœ… [HexaPDF::TestUtils] module that contains helper methods useful for testing various parts of HexaPDF

    ๐Ÿ”„ Changed

    • All applicable places to only load the current version of PDF objects, to avoid possible inconsistencies when working with files containing multiple revisions

    ๐Ÿ›  Fixed

    • ๐Ÿ“œ Parsing of streams with an invalid length value that led to a parsing error
    • [HexaPDF::Object#==] to only allow comparing simple values to non-indirect objects and not also other HexaPDF::Object instances
  • v0.24.0 Changes

    August 01, 2022

    โž• Added

    • [HexaPDF::Layout::ListBox] for rendering ordered and unordered lists
    • [HexaPDF::Layout::ColumnBox] for rendering content inside columns
    • [HexaPDF::Layout::BoxFitter] for placing boxes into multiple frames
    • ๐Ÿ†• New configuration option 'debug' for enabling debug output
    • ๐Ÿšš [HexaPDF::Document::Pages#move] for moving pages around the same document
    • [HexaPDF::Composer#box] for drawing arbitrary, registered boxes
    • [HexaPDF::Layout::Box#split_box?] for determining whether a box is a split box, i.e. the continuation of another box
    • [HexaPDF::Document::Layout::ChildrenCollector] to provide an easy method for defining children boxes of a container box

    ๐Ÿ”„ Changed

    • ๐Ÿ’ฅ Breaking change: Refactored [HexaPDF::Layout::Frame] and associated data structures so that the complete result of fitting a box is returned
    • ๐Ÿ‘ [HexaPDF::Layout::Frame] to use a better algorithm for trimming the shape
    • [HexaPDF::Layout::Frame::new] to allow setting the initial shape
    • ๐Ÿ’ฅ Breaking change: Removed contour line from [HexaPDF::Layout::Frame]
    • ๐Ÿ’ฅ Breaking change: Changed positional arguments of [HexaPDF::Layout::TextBox::new] and [HexaPDF::Layout::ImageBox::new] to keyword arguments for a consistent box initialization interface
    • 0๏ธโƒฃ [HexaPDF::Layout::Box#split] to provide a default implementation that is useful for most subclasses
    • Layout box implementations to provide a #supports_position_flow? method that indicates whether the box supports flowing its content around other content.
    • hexapdf info --check to only check the current version of each object
    • [HexaPDF::Writer] to make sure the producer information is written when writing the file incrementally

    ๐Ÿ›  Fixed

    • [HexaPDF::Layout::TextLayouter] to freeze the new items when a text fragment needs to be split
    • [HexaPDF::Layout::TextLayouter] to avoid the possible splitting of a text fragment if there would not be enough height left anyway
    • [HexaPDF::Layout::WidthFromPolygon] to work correctly in case of very small floating point errors
    • HexaPDF::Layout::TextFragment#inspect to work in case of interspersed numbers
    • [HexaPDF::Layout::TextBox#split] to work for position :flow when box is wider than the initial available width
    • [HexaPDF::Layout::Frame#fit] to create minimally sized mask rectangles
    • [HexaPDF::Content::GraphicObject::Geom2D] to close the path when drawing polygons
    • [HexaPDF::Layout::WidthFromPolygon] to work for all counterclockwise polygons
    • ๐Ÿšš [HexaPDF::Type::PageTreeNode#move_page] to work in case the parent node of the moved node doesn't change
    • ๐Ÿšš [HexaPDF::Type::PageTreeNode#move_page] to use the correct target position when the moved node is before the target position
    • [HexaPDF::Document::Signatures#add] to work in case the signature object is the last object written
    • CLI command hexapdf inspect to show correct byte range of the last revision
    • [HexaPDF::Writer#write_incremental] to only use a cross-reference stream if a revision directly used one and not through an /XRefStm entry
    • ๐Ÿ’Ž [HexaPDF::Encryption::FastARC4] to use RubyARC4 as fallback if OpenSSL has RC4 disabled
    • [HexaPDF::Font::Encoding::GlyphList] to use binary reading to avoid problems on Windows
    • [HexaPDF::Document::Signatures#add] to use binary writing to avoid problems on Windows
  • v0.23.0 Changes

    May 26, 2022

    โž• Added

    • [HexaPDF::Composer#create_stamp] for creating a form Xobject
    • [HexaPDF::Revision#reset_objects] for deleting all live loaded and added objects
    • ๐Ÿ‘Œ Support for removing or flattening annotations to the hexapdf modify command
    • Option to CLI command hexapdf form to allow generation of a template file
    • ๐Ÿ‘Œ Support for centering a floating box in [HexaPDF::Layout::Frame]
    • [HexaPDF::Type::Catalog#names] for easier access to the name dictionary
    • [HexaPDF::Type::Names#destinations] for easier access to the destinations name tree
    • [HexaPDF::Document::Destinations], accessible via [HexaPDF::Document#destinations], as convenience interface for working with destination arrays

    ๐Ÿ”„ Changed

    • ๐Ÿ’ฅ Breaking change: Refactored the [HexaPDF::Document] interface for working with objects and move parts into [HexaPDF::Revisions]
    • ๐Ÿ’ฅ Breaking change: [HexaPDF::Layout::TextBox] to use whole available width when aligning to the center or right
    • ๐Ÿ’ฅ Breaking change: [HexaPDF::Layout::TextBox] to use whole available height when vertically aligning to the center or bottom
    • CLI command hexapdf inspect to show the type of revisions, as well as the number of objects per revision
    • โšก๏ธ [HexaPDF::Task::Optimize] to allow skipping invalid content stream operations
    • [HexaPDF::Composer#image] to allow using a form xobject in place of the image

    ๐Ÿ›  Fixed

    • [HexaPDF::Writer#write] to write modified objects into the correct revision
    • [HexaPDF::Revisions::from_io] to correctly handle hybrid-reference files
    • [HexaPDF::Writer] to assign a valid object number to a created cross-reference stream in all cases
    • [HexaPDF::Type::AcroForm::TextField] to validate the existence of a /MaxLen value for comb text fields
    • [HexaPDF::Type::AcroForm::TextField#field_value=] to check for the existence of /MaxLen when setting a value for a comb text field
    • [HexaPDF::Type::AcroForm::TextField#field_value=] to check the value against /MaxLen
    • ๐Ÿ’… [HexaPDF::Layout::TextLayouter#fit] to not use style valign when doing variable width layouting
    • [HexaPDF::Utils::SortedTreeNode#find_entry] to work in case of a node without a container name or kids key
    • CLI command hexapdf form to allow setting array values when using a template
    • CLI command hexapdf form to allow setting file select fields
  • v0.22.0 Changes

    March 26, 2022

    โž• Added

    • ๐Ÿ‘Œ Support for writing images with an ICCBased color space
    • ๐Ÿ‘Œ Support for writing images with soft masks

    ๐Ÿ”„ Changed

    • โš  CLI command hexapdf form to show a warning when working with a file containing an XFA form

    ๐Ÿ›  Fixed

    • [HexaPDF::Type::AcroForm::Form#field_by_name] to work correctly when field name parts are UTF-16BE encoded
    • hexapdf inspect command 'revision' to correctly detect the end of revisions
    • [HexaPDF::DictionaryFields::StringConverter] to use correct method name HexaPDF::Document#config