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

Changelog History
Page 5

  • v0.14.1 Changes

    January 21, 2021

    ๐Ÿ”„ Changed

    • Validation message when checking for allowed values to include the invalid object
    • [HexaPDF::FontLoader::FromFile] to allow (re)using an existing font object
    • [HexaPDF::Importer] internals to avoid problems with retained memory

    ๐Ÿ›  Fixed

    • ๐Ÿ“œ Parsing of invalid PDF files where whitespace is missing after the integer value of an indirect object
    • [HexaPDF::Dictionary] so that adding new key-value pairs during validation is possible
  • v0.14.0 Changes

    December 30, 2020

    โž• Added

    • ๐Ÿ‘Œ Support for creating AcroForm multiline text fields and their appearances
    • ๐Ÿ‘Œ Support for creating AcroForm comb text fields and their appearances
    • ๐Ÿ‘Œ Support for creating AcroForm password fields and their appearances
    • ๐Ÿ‘Œ Support for creating AcroForm file select fields and their appearances
    • ๐Ÿ‘Œ Support for creating AcroForm list box appearances
    • [HexaPDF::Type::AcroForm::ChoiceField#list_box_top_index] and its setter method
    • โšก๏ธ [HexaPDF::Type::AcroForm::ChoiceField#update_widgets] to create appearances if they don't exist
    • Methods for caching data to [HexaPDF::Object]
    • ๐Ÿ‘Œ Support for splitting by page size to CLI command hexapdf split

    ๐Ÿ”„ Changed

    • [HexaPDF::Utils::ObjectHash#oids] to be public instead of private
    • ๐Ÿ“œ Cross-reference table parsing to handle invalidly numbered main sections
    • โšก๏ธ [HexaPDF::Document#cache] and [HexaPDF::Object#cache] to allow updating values for existing keys
    • Appearance creation methods of AcroForm objects to allow forcing the creation of new appearances
    • [HexaPDF::Type::AcroForm::AppearanceGenerator#create_text_appearances] to re-use existing form objects
    • AcroForm field creation methods to allow specifying often used field properties

    ๐Ÿ›  Fixed

    • Missing usage of :sort flag for AcroForm choice fields
    • Setting the /I field for AcroForm list boxes with multiple selection
    • ๐Ÿšš [HexaPDF::Layout::TextLayouter::SimpleLineWrapping] to remove glue items (whitespace) before a hard line break
    • Infinite loop when reconstructing the cross-reference table
    • ๐Ÿ‘ [HexaPDF::Type::AcroForm::ChoiceField] to support export values for option items
    • AcroForm text field appearance creation to only create a new appearance if the field's value has changed
    • AcroForm choice field appearance creation to only create a new appearance if the involved dictionary fields' values have changed
    • [HexaPDF::Type::AcroForm::ChoiceField#list_box_top_index=] to raise an error if no option items are set
    • [HexaPDF::PDFArray#to_ary] to return an array with preprocessed values
    • [HexaPDF::Type::Form#contents=] to clear cached values to avoid returning e.g. an invalid canvas object later
    • โšก๏ธ [HexaPDF::Type::AcroForm::ButtonField#update_widgets] to create appearances if they don't exist
  • v0.13.0 Changes

    November 15, 2020

    โž• Added

    • Cross-reference table reconstruction for damaged PDFs, controllable via the new 'parser.try_xref_reconstruction' option
    • Two new hexapdf inspect commands for showing page objects and page content streams by page number
    • Flag --check to the CLI command hexapdf info for checking a file for parse and validation errors
    • [HexaPDF::Type::AcroForm::Field#embedded_widget?] for checking if a widget is embedded in the field object
    • [HexaPDF::Type::AcroForm::Field#delete_widget] for deleting a widget
    • [HexaPDF::PDFArray#delete] for deleting an object from a PDF array
    • [HexaPDF::Type::Page#ancestor_nodes] for retrieving all ancestor page tree nodes of a page
    • ๐Ÿšš [HexaPDF::Type::PageTreeNode#move_page] for moving a page to another index

    ๐Ÿ”„ Changed

    • ๐Ÿ’ฅ Breaking change: Overhauled document/object validation interfaces and internals to be more similar and to allow for reporting of multiple validation problems
    • Validation of TrueType fonts to ignore missing fields if the font name suggests that the font is one of the standard 14 PDF fonts
    • Option -p of CLI command hexapdf image2pdf to also allow lowercase page size names

    ๐Ÿ›  Fixed

    • ๐Ÿ“œ Reporting of cross-reference section entry parsing error
    • 0๏ธโƒฃ PDF version used by default for dictionary fields
    • ๐Ÿ“œ Error in CLI command hexapdf inspect when parsing an invalid object number
    • Output of error messages in CLI command hexapdf inspect to go to $stderr
    • ๐Ÿ› Bug in [HexaPDF::Type::AcroForm::TextField] validation due to missing nil handling
  • v0.12.3 Changes

    August 22, 2020

    ๐Ÿ”„ Changed

    • ๐Ÿ‘ Allow any object responding to #to_sym when setting a radio button value

    ๐Ÿ›  Fixed

    • Error in the AcroForm appearance generator for text fields when the font is not found in the default resources
    • ๐Ÿ“œ Parsing of long numbers when reading a file from IO
    • โœ… Usage of unsupported method for Ruby 2.4 so that all tests pass again
  • v0.12.2 Changes

    August 17, 2020

    ๐Ÿ›  Fixed

    • Wrong origin for page canvases when bottom left corner of media box doesn't coincide with origin of coordinate system
    • Wrong origin for Form XObject canvas when bottom left corner of bounding box doesn't coincide with origin of coordinate system
  • v0.12.1 Changes

    August 16, 2020

    โž• Added

    • [HexaPDF::Font::Encoding::Base#code] for retrieving the code for a given glyph name

    ๐Ÿ›  Fixed

    • [HexaPDF::Font::Type1Wrapper#encode] to correctly resolve the code for a glyph name
  • v0.12.0 Changes

    August 12, 2020

    โž• Added

    • Convenience methods for accessing field flags for [HexaPDF::Type::AcroForm::Field]
    • [HexaPDF::Type::AcroForm::TextField] and [HexaPDF::Type::AcroForm::VariableTextField] for basic text field support
    • [HexaPDF::Type::AcroForm::ButtonField] for push button, radio button and check box support
    • ๐Ÿ‘ [HexaPDF::Type::AcroForm::ChoiceField] for combo box and list box support
    • [HexaPDF::Type::AcroForm::AppearanceGenerator] as central class for generating appearance streams for form fields
    • Various convenience methods for [HexaPDF::Type::AcroForm::Form]
    • Various convenience methods for [HexaPDF::Type::AcroForm::Field]
    • Various convenience methods for [HexaPDF::Type::Annotations::Widget]
    • [HexaPDF::Type::Annotation::AppearanceDictionary]
    • [HexaPDF::Document#acro_form] and [HexaPDF::Type::Catalog#acro_form] convenience methods
    • CLI command hexapdf form for listing fields of interactive forms and filling them out
    • [HexaPDF::Rectangle] methods for setting the left, top, right, bottom, width and height
    • Method #prenormalized_color to all color space implementations
    • [HexaPDF::Type::Font#font_wrapper] for accessing an associated font wrapper instance
    • [HexaPDF::Type::FontType1#font_wrapper] for providing a font wrapper for the standard PDF fonts
    • [HexaPDF::Type::Annotation::Border] class
    • [HexaPDF::Content::ColorSpace::device_color_from_specification] for easily getting a device color object
    • [HexaPDF::Content::ColorSpace::prenormalized_device_color] for getting a device color object without normalizing values
    • [HexaPDF::Type::Annotation#appearance] for returning the associated appearance dictionary
    • [HexaPDF::Type::Annotation#appearance?] for checking whether an appearance for the annotation exists
    • Configuration option 'acro_form.create_appearance_streams' for automatically creating appearance streams
    • [HexaPDF::Type::Resources] methods #pattern and add_pattern

    ๐Ÿ”„ Changed

    • Deletion of pages to delete them from the document as well
    • ๐Ÿ”จ Refactored [HexaPDF::Font::Type1Wrapper] and [HexaPDF::Font::TrueTypeWrapper] and renamed #dict to #pdf_object
    • Fall back to the Type1 font's internal encoding when decoding a string
    • All [HexaPDF::Content::ColorSpace] implementations to only normalize values when using the ::color method
    • ๐Ÿ“œ [HexaPDF::Content::Parser#parse] to also accept a block in place of a processor object
    • HexaPDF::Type::AcroForm::Field#full_name to [HexaPDF::Type::AcroForm::Field#full_field_name]
    • Moved HexaPDF::Content::Canvas#color_space_for_components to class method on [HexaPDF::Content::ColorSpace]
    • โž• Added bit unsetter method to[HexaPDF::Utils::BitField]
    • [HexaPDF::Type::AcroForm::Form#find_root_fields] and #each_field to take the field type into account when wrapping a field dictionary
    • Pages specification of CLI commands to allow counting from the end using the new r<N> notation
    • [HexaPDF::Font::Type1Wrapper] to use the internal encoding of a font with a 'Special' character set instead of a custom encoding
    • ๐Ÿ”ง Configuration 'filter.map' to use the pass-through filter on all unsupported filters

    ๐Ÿ›  Fixed

    • Wrong normalization of color values when invoking a color operator
    • Invalid type of /DR field of [HexaPDF::Type::AcroForm::Form]
    • Invalid ordering of types for the /V and /DV fields of [HexaPDF::Type::AcroForm::Field]
    • [HexaPDF::Type::AcroForm::Field#terminal_field?] to work according to the spec
    • ๐Ÿ‘ Handling of empty files by throwing better error messages
    • [HexaPDF::Type::Image#info] to correctly identify images with a soft mask as currently not supported for writing
    • ๐Ÿšš [HexaPDF::Revision#delete] to remove the connection between the object and the document
    • Missing #definition method of DeviceRGB, DeviceCMYK and DeviceGray color spaces
    • ๐Ÿ“œ Handling of 'Pattern' color spaces when parsing content streams
  • v0.11.9 Changes

    June 15, 2020

    ๐Ÿ”„ Changed

    • Encryption dictionaries to always be indirect objects
  • v0.11.8 Changes

    June 11, 2020

    ๐Ÿ›  Fixed

    • Serialization of special / (zero-length name) object in dictionaries and arrays
  • v0.11.7 Changes

    June 10, 2020

    ๐Ÿ›  Fixed

    • โšก๏ธ Deletion of object streams in [HexaPDF::Task::Optimize] to avoid accessing then invalid object streams
    • โšก๏ธ [HexaPDF::Task::Optimize] to work correctly when deleting object streams and generating xref streams