HexaPDF v0.6.0 Release Notes

Release Date: 2017-10-27 // about 2 years ago
  • ➕ Added

    • [HexaPDF::Layout::Box] as base class for all layout boxes
    • 💅 More styling properties for [HexaPDF::Layout::Style]
    • 💅 Methods for checking whether styling properties in [HexaPDF::Layout::Style] have been accessed or set
    • [HexaPDF::FontLoader::FromFile] to allow specifying a font file directly
    • Configuration option 'page.default_media_orientation' for settig the default orientation of new pages
    • Convenience methods for getting underline and strikeout properties from fonts
    • 💅 Configuration option 'style.layers_map' for pre-defining overlay and underlay callback objects for [HexaPDF::Layout::Style]
    • [HexaPDF::Type::Action] as well as specific implementations for the GoTo, GoToR, Launch and URI actions
    • [HexaPDF::Type::Annotation] as well as specific implementations for the Text Link annotations
    • 💅 [HexaPDF::Layout::Style::LinkLayer] for easy adding of in-document, URI and file links

    🔄 Changed

    • 👍 [HexaPDF::Layout::TextFragment] to support more styling properties
    • 📜 Cross-reference subsection parsing can handle missing whitespace
    • 📇 Renamed HexaPDF::Layout::LineFragment to [HexaPDF::Layout::Line]
    • 📇 Renamed HexaPDF::Layout::TextBox to [HexaPDF::Layout::TextLayouter]
    • [HexaPDF::Layout::TextFragment::new] and [HexaPDF::Layout::TextLayouter::new] to either take a Style object or style options
    • [HexaPDF::Layout::TextLayouter#fit] method signature
    • [HexaPDF::Layout::InlineBox] to wrap a generic box
    • HexaPDF::Document::Fonts#load to [HexaPDF::Document::Fonts#add] for consistency
    • [HexaPDF::Document::Pages#add] to allow setting the paper orientation when creating new pages
    • [HexaPDF::Filter::Predictor] to allow correcting some common problems depending on the new configuration option 'filter.predictor.strict'
    • 🔧 Moved configuration options 'encryption.aes', 'encryption.arc4', 'encryption.filter_map', 'encryption.sub_filter.map', 'filter.map', 'image_loader' and 'task.map' to the document specific configuration object
    • 🔧 [HexaPDF::Configuration#constantize] can now dig into hierarchical values
    • 🔧 [HexaPDF::Document#wrap] class resolution and configuration option structure of 'object.subtype_map'

    ✂ Removed

    • HexaPDF::Dictionary#to_hash method

    🛠 Fixed

    • [HexaPDF::Layout::TextLayouter#fit] to split text fragment into parts if the fragment doesn't fit on an empty line
    • 📜 Parsing of PDF files containing a loop with respect to cross-reference tables
    • [HexaPDF::Layout::InlineBox] to act as placeholder if no drawing block is given
    • Undefined method error in [HexaPDF::Content::Canvas] by raising a proper error
    • Invalid handling of fonts by [HexaPDF::Content::Canvas] when saving and restoring the graphics state
    • [HexaPDF::Layout::TextLayouter] so that text fragments don't pollute the graphics state
    • [HexaPDF::Content::Operator::SetTextRenderingMode] to normalize the value
    • [HexaPDF::Stream#stream_source] to always return a decrypted stream
    • [HexaPDF::Layout::TextLayouter] to correctly indent all paragraphs, not just the first one
    • One-off error in [HexaPDF::Filter::LZWDecode]
    • 🔧 [HexaPDF::Configuration#merge] to duplicate array values to avoid unwanted modifications
    • [HexaPDF::Dictionary#key?] to return false if the key is present but nil
    • [HexaPDF::DictionaryFields::FileSpecificationConverter] to convert hash and dictionaries
    • Field /F definition in [HexaPDF::Stream]