HexaPDF v0.24.0 Release Notes

Release Date: 2022-08-01 // almost 2 years ago
  • โž• 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