hexapdf 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -1
  3. data/LICENSE +1 -1
  4. data/README.md +3 -0
  5. data/Rakefile +1 -1
  6. data/data/hexapdf/fonts/Inter-Bold.ttf +0 -0
  7. data/data/hexapdf/fonts/Inter-BoldItalic.ttf +0 -0
  8. data/data/hexapdf/fonts/Inter-Italic.ttf +0 -0
  9. data/data/hexapdf/fonts/Inter-Regular.ttf +0 -0
  10. data/data/hexapdf/fonts/OFL.txt +92 -0
  11. data/examples/005-merging.rb +2 -1
  12. data/examples/019-acro_form.rb +3 -1
  13. data/examples/030-pdfa.rb +9 -16
  14. data/examples/034-text_shaping.rb +37 -0
  15. data/lib/hexapdf/cli/batch.rb +1 -1
  16. data/lib/hexapdf/cli/command.rb +1 -1
  17. data/lib/hexapdf/cli/debug_info.rb +1 -1
  18. data/lib/hexapdf/cli/files.rb +1 -1
  19. data/lib/hexapdf/cli/fonts.rb +6 -4
  20. data/lib/hexapdf/cli/form.rb +1 -1
  21. data/lib/hexapdf/cli/image2pdf.rb +1 -1
  22. data/lib/hexapdf/cli/images.rb +17 -17
  23. data/lib/hexapdf/cli/info.rb +1 -1
  24. data/lib/hexapdf/cli/inspect.rb +1 -1
  25. data/lib/hexapdf/cli/merge.rb +14 -2
  26. data/lib/hexapdf/cli/modify.rb +1 -1
  27. data/lib/hexapdf/cli/optimize.rb +1 -1
  28. data/lib/hexapdf/cli/split.rb +1 -1
  29. data/lib/hexapdf/cli/usage.rb +1 -1
  30. data/lib/hexapdf/cli/watermark.rb +1 -1
  31. data/lib/hexapdf/cli.rb +1 -1
  32. data/lib/hexapdf/composer.rb +1 -1
  33. data/lib/hexapdf/configuration.rb +15 -2
  34. data/lib/hexapdf/content/canvas.rb +1 -1
  35. data/lib/hexapdf/content/canvas_composer.rb +1 -1
  36. data/lib/hexapdf/content/color_space.rb +1 -1
  37. data/lib/hexapdf/content/graphic_object/arc.rb +1 -1
  38. data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +1 -1
  39. data/lib/hexapdf/content/graphic_object/geom2d.rb +1 -1
  40. data/lib/hexapdf/content/graphic_object/solid_arc.rb +1 -1
  41. data/lib/hexapdf/content/graphic_object.rb +1 -1
  42. data/lib/hexapdf/content/graphics_state.rb +1 -1
  43. data/lib/hexapdf/content/operator.rb +1 -1
  44. data/lib/hexapdf/content/parser.rb +1 -1
  45. data/lib/hexapdf/content/processor.rb +1 -1
  46. data/lib/hexapdf/content/smart_text_extractor.rb +10 -4
  47. data/lib/hexapdf/content/transformation_matrix.rb +1 -1
  48. data/lib/hexapdf/content.rb +1 -1
  49. data/lib/hexapdf/data_dir.rb +1 -1
  50. data/lib/hexapdf/dictionary.rb +1 -1
  51. data/lib/hexapdf/dictionary_fields.rb +1 -1
  52. data/lib/hexapdf/digital_signature/cms_handler.rb +1 -1
  53. data/lib/hexapdf/digital_signature/handler.rb +1 -1
  54. data/lib/hexapdf/digital_signature/pkcs1_handler.rb +1 -1
  55. data/lib/hexapdf/digital_signature/signature.rb +1 -1
  56. data/lib/hexapdf/digital_signature/signatures.rb +1 -1
  57. data/lib/hexapdf/digital_signature/signing/default_handler.rb +1 -1
  58. data/lib/hexapdf/digital_signature/signing/signed_data_creator.rb +1 -1
  59. data/lib/hexapdf/digital_signature/signing/timestamp_handler.rb +1 -1
  60. data/lib/hexapdf/digital_signature/signing.rb +1 -1
  61. data/lib/hexapdf/digital_signature/verification_result.rb +1 -1
  62. data/lib/hexapdf/digital_signature.rb +1 -1
  63. data/lib/hexapdf/document/annotations.rb +26 -1
  64. data/lib/hexapdf/document/destinations.rb +1 -1
  65. data/lib/hexapdf/document/files.rb +1 -1
  66. data/lib/hexapdf/document/fonts.rb +1 -1
  67. data/lib/hexapdf/document/images.rb +1 -1
  68. data/lib/hexapdf/document/layout.rb +1 -1
  69. data/lib/hexapdf/document/metadata.rb +1 -1
  70. data/lib/hexapdf/document/pages.rb +1 -1
  71. data/lib/hexapdf/document.rb +1 -1
  72. data/lib/hexapdf/encryption/aes.rb +1 -1
  73. data/lib/hexapdf/encryption/arc4.rb +1 -1
  74. data/lib/hexapdf/encryption/fast_aes.rb +1 -1
  75. data/lib/hexapdf/encryption/fast_arc4.rb +1 -1
  76. data/lib/hexapdf/encryption/identity.rb +1 -1
  77. data/lib/hexapdf/encryption/ruby_aes.rb +1 -1
  78. data/lib/hexapdf/encryption/ruby_arc4.rb +1 -1
  79. data/lib/hexapdf/encryption/security_handler.rb +1 -1
  80. data/lib/hexapdf/encryption/standard_security_handler.rb +1 -1
  81. data/lib/hexapdf/encryption.rb +1 -1
  82. data/lib/hexapdf/error.rb +1 -1
  83. data/lib/hexapdf/filter/ascii85_decode.rb +1 -1
  84. data/lib/hexapdf/filter/ascii_hex_decode.rb +1 -1
  85. data/lib/hexapdf/filter/brotli_decode.rb +1 -1
  86. data/lib/hexapdf/filter/crypt.rb +1 -1
  87. data/lib/hexapdf/filter/encryption.rb +1 -1
  88. data/lib/hexapdf/filter/flate_decode.rb +1 -1
  89. data/lib/hexapdf/filter/lzw_decode.rb +1 -1
  90. data/lib/hexapdf/filter/pass_through.rb +1 -1
  91. data/lib/hexapdf/filter/predictor.rb +1 -1
  92. data/lib/hexapdf/filter/run_length_decode.rb +1 -1
  93. data/lib/hexapdf/filter.rb +1 -1
  94. data/lib/hexapdf/font/cmap/parser.rb +1 -1
  95. data/lib/hexapdf/font/cmap/writer.rb +16 -10
  96. data/lib/hexapdf/font/cmap.rb +1 -1
  97. data/lib/hexapdf/font/encoding/base.rb +1 -1
  98. data/lib/hexapdf/font/encoding/difference_encoding.rb +1 -1
  99. data/lib/hexapdf/font/encoding/glyph_list.rb +1 -1
  100. data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +1 -1
  101. data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +1 -1
  102. data/lib/hexapdf/font/encoding/standard_encoding.rb +1 -1
  103. data/lib/hexapdf/font/encoding/symbol_encoding.rb +1 -1
  104. data/lib/hexapdf/font/encoding/win_ansi_encoding.rb +1 -1
  105. data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +1 -1
  106. data/lib/hexapdf/font/encoding.rb +1 -1
  107. data/lib/hexapdf/font/invalid_glyph.rb +1 -1
  108. data/lib/hexapdf/font/true_type/builder.rb +1 -1
  109. data/lib/hexapdf/font/true_type/font.rb +1 -1
  110. data/lib/hexapdf/font/true_type/optimizer.rb +1 -1
  111. data/lib/hexapdf/font/true_type/subsetter.rb +4 -4
  112. data/lib/hexapdf/font/true_type/table/cmap.rb +1 -1
  113. data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +1 -1
  114. data/lib/hexapdf/font/true_type/table/directory.rb +1 -1
  115. data/lib/hexapdf/font/true_type/table/glyf.rb +1 -1
  116. data/lib/hexapdf/font/true_type/table/head.rb +1 -1
  117. data/lib/hexapdf/font/true_type/table/hhea.rb +1 -1
  118. data/lib/hexapdf/font/true_type/table/hmtx.rb +1 -1
  119. data/lib/hexapdf/font/true_type/table/kern.rb +1 -1
  120. data/lib/hexapdf/font/true_type/table/loca.rb +1 -1
  121. data/lib/hexapdf/font/true_type/table/maxp.rb +1 -1
  122. data/lib/hexapdf/font/true_type/table/name.rb +1 -1
  123. data/lib/hexapdf/font/true_type/table/os2.rb +1 -1
  124. data/lib/hexapdf/font/true_type/table/post.rb +1 -1
  125. data/lib/hexapdf/font/true_type/table.rb +1 -1
  126. data/lib/hexapdf/font/true_type.rb +1 -1
  127. data/lib/hexapdf/font/true_type_wrapper.rb +9 -6
  128. data/lib/hexapdf/font/type1/afm_parser.rb +1 -1
  129. data/lib/hexapdf/font/type1/character_metrics.rb +1 -1
  130. data/lib/hexapdf/font/type1/font.rb +1 -1
  131. data/lib/hexapdf/font/type1/font_metrics.rb +1 -1
  132. data/lib/hexapdf/font/type1/pfb_parser.rb +1 -1
  133. data/lib/hexapdf/font/type1.rb +1 -1
  134. data/lib/hexapdf/font/type1_wrapper.rb +1 -1
  135. data/lib/hexapdf/font_loader/from_configuration.rb +1 -1
  136. data/lib/hexapdf/font_loader/from_file.rb +5 -1
  137. data/lib/hexapdf/font_loader/standard14.rb +1 -1
  138. data/lib/hexapdf/font_loader/variant_from_name.rb +1 -1
  139. data/lib/hexapdf/font_loader.rb +48 -1
  140. data/lib/hexapdf/image_loader/jpeg.rb +1 -1
  141. data/lib/hexapdf/image_loader/pdf.rb +1 -1
  142. data/lib/hexapdf/image_loader/png.rb +1 -1
  143. data/lib/hexapdf/image_loader.rb +1 -1
  144. data/lib/hexapdf/importer.rb +1 -1
  145. data/lib/hexapdf/layout/box.rb +1 -1
  146. data/lib/hexapdf/layout/box_fitter.rb +1 -1
  147. data/lib/hexapdf/layout/column_box.rb +1 -1
  148. data/lib/hexapdf/layout/container_box.rb +3 -5
  149. data/lib/hexapdf/layout/frame.rb +1 -1
  150. data/lib/hexapdf/layout/image_box.rb +1 -1
  151. data/lib/hexapdf/layout/inline_box.rb +1 -1
  152. data/lib/hexapdf/layout/line.rb +1 -1
  153. data/lib/hexapdf/layout/list_box.rb +1 -1
  154. data/lib/hexapdf/layout/numeric_refinements.rb +1 -1
  155. data/lib/hexapdf/layout/page_style.rb +1 -1
  156. data/lib/hexapdf/layout/style.rb +67 -5
  157. data/lib/hexapdf/layout/table_box.rb +97 -14
  158. data/lib/hexapdf/layout/text_box.rb +1 -1
  159. data/lib/hexapdf/layout/text_fragment.rb +14 -8
  160. data/lib/hexapdf/layout/text_layouter.rb +1 -1
  161. data/lib/hexapdf/layout/text_shaper.rb +163 -11
  162. data/lib/hexapdf/layout/width_from_polygon.rb +1 -1
  163. data/lib/hexapdf/layout.rb +1 -1
  164. data/lib/hexapdf/name_tree_node.rb +1 -1
  165. data/lib/hexapdf/number_tree_node.rb +1 -1
  166. data/lib/hexapdf/object.rb +1 -1
  167. data/lib/hexapdf/parser.rb +1 -1
  168. data/lib/hexapdf/pdf_array.rb +1 -1
  169. data/lib/hexapdf/rectangle.rb +1 -1
  170. data/lib/hexapdf/reference.rb +1 -1
  171. data/lib/hexapdf/revision.rb +1 -1
  172. data/lib/hexapdf/revisions.rb +1 -1
  173. data/lib/hexapdf/serializer.rb +3 -3
  174. data/lib/hexapdf/stream.rb +1 -1
  175. data/lib/hexapdf/task/dereference.rb +1 -1
  176. data/lib/hexapdf/task/import_pages.rb +185 -0
  177. data/lib/hexapdf/task/merge_acro_form.rb +1 -1
  178. data/lib/hexapdf/task/optimize.rb +1 -1
  179. data/lib/hexapdf/task/pdfa.rb +1 -1
  180. data/lib/hexapdf/task.rb +2 -1
  181. data/lib/hexapdf/test_utils.rb +1 -1
  182. data/lib/hexapdf/tokenizer.rb +1 -1
  183. data/lib/hexapdf/type/acro_form/appearance_generator.rb +1 -1
  184. data/lib/hexapdf/type/acro_form/button_field.rb +1 -1
  185. data/lib/hexapdf/type/acro_form/choice_field.rb +1 -1
  186. data/lib/hexapdf/type/acro_form/field.rb +1 -1
  187. data/lib/hexapdf/type/acro_form/form.rb +1 -1
  188. data/lib/hexapdf/type/acro_form/java_script_actions.rb +1 -1
  189. data/lib/hexapdf/type/acro_form/signature_field.rb +1 -1
  190. data/lib/hexapdf/type/acro_form/text_field.rb +1 -1
  191. data/lib/hexapdf/type/acro_form/variable_text_field.rb +1 -1
  192. data/lib/hexapdf/type/acro_form.rb +1 -1
  193. data/lib/hexapdf/type/action.rb +1 -1
  194. data/lib/hexapdf/type/actions/go_to.rb +1 -1
  195. data/lib/hexapdf/type/actions/go_to_r.rb +1 -1
  196. data/lib/hexapdf/type/actions/launch.rb +1 -1
  197. data/lib/hexapdf/type/actions/set_ocg_state.rb +1 -1
  198. data/lib/hexapdf/type/actions/uri.rb +1 -1
  199. data/lib/hexapdf/type/actions.rb +1 -1
  200. data/lib/hexapdf/type/annotation.rb +1 -1
  201. data/lib/hexapdf/type/annotations/appearance_generator.rb +43 -1
  202. data/lib/hexapdf/type/annotations/border_effect.rb +1 -1
  203. data/lib/hexapdf/type/annotations/border_styling.rb +1 -1
  204. data/lib/hexapdf/type/annotations/circle.rb +1 -1
  205. data/lib/hexapdf/type/annotations/ink.rb +107 -0
  206. data/lib/hexapdf/type/annotations/interior_color.rb +1 -1
  207. data/lib/hexapdf/type/annotations/line.rb +1 -1
  208. data/lib/hexapdf/type/annotations/line_ending_styling.rb +1 -1
  209. data/lib/hexapdf/type/annotations/link.rb +1 -1
  210. data/lib/hexapdf/type/annotations/markup_annotation.rb +1 -1
  211. data/lib/hexapdf/type/annotations/polygon.rb +1 -1
  212. data/lib/hexapdf/type/annotations/polygon_polyline.rb +1 -1
  213. data/lib/hexapdf/type/annotations/polyline.rb +1 -1
  214. data/lib/hexapdf/type/annotations/square.rb +1 -1
  215. data/lib/hexapdf/type/annotations/square_circle.rb +1 -1
  216. data/lib/hexapdf/type/annotations/text.rb +1 -1
  217. data/lib/hexapdf/type/annotations/widget.rb +1 -1
  218. data/lib/hexapdf/type/annotations.rb +2 -1
  219. data/lib/hexapdf/type/catalog.rb +1 -1
  220. data/lib/hexapdf/type/cid_font.rb +1 -1
  221. data/lib/hexapdf/type/cmap.rb +1 -1
  222. data/lib/hexapdf/type/document_security_store.rb +1 -1
  223. data/lib/hexapdf/type/embedded_file.rb +1 -1
  224. data/lib/hexapdf/type/file_specification.rb +1 -1
  225. data/lib/hexapdf/type/font.rb +4 -4
  226. data/lib/hexapdf/type/font_descriptor.rb +1 -1
  227. data/lib/hexapdf/type/font_simple.rb +1 -1
  228. data/lib/hexapdf/type/font_true_type.rb +1 -1
  229. data/lib/hexapdf/type/font_type0.rb +1 -1
  230. data/lib/hexapdf/type/font_type1.rb +1 -1
  231. data/lib/hexapdf/type/font_type3.rb +6 -1
  232. data/lib/hexapdf/type/form.rb +1 -1
  233. data/lib/hexapdf/type/graphics_state_parameter.rb +1 -1
  234. data/lib/hexapdf/type/icon_fit.rb +1 -1
  235. data/lib/hexapdf/type/image.rb +1 -1
  236. data/lib/hexapdf/type/info.rb +1 -1
  237. data/lib/hexapdf/type/mark_information.rb +1 -1
  238. data/lib/hexapdf/type/marked_content_reference.rb +1 -1
  239. data/lib/hexapdf/type/measure.rb +1 -1
  240. data/lib/hexapdf/type/metadata.rb +1 -1
  241. data/lib/hexapdf/type/names.rb +1 -1
  242. data/lib/hexapdf/type/namespace.rb +1 -1
  243. data/lib/hexapdf/type/object_reference.rb +1 -1
  244. data/lib/hexapdf/type/object_stream.rb +1 -1
  245. data/lib/hexapdf/type/optional_content_configuration.rb +1 -1
  246. data/lib/hexapdf/type/optional_content_group.rb +1 -1
  247. data/lib/hexapdf/type/optional_content_membership.rb +1 -1
  248. data/lib/hexapdf/type/optional_content_properties.rb +1 -1
  249. data/lib/hexapdf/type/outline.rb +1 -1
  250. data/lib/hexapdf/type/outline_item.rb +1 -1
  251. data/lib/hexapdf/type/output_intent.rb +1 -1
  252. data/lib/hexapdf/type/page.rb +1 -1
  253. data/lib/hexapdf/type/page_label.rb +1 -1
  254. data/lib/hexapdf/type/page_tree_node.rb +1 -1
  255. data/lib/hexapdf/type/resources.rb +1 -1
  256. data/lib/hexapdf/type/struct_elem.rb +1 -1
  257. data/lib/hexapdf/type/struct_tree_root.rb +1 -1
  258. data/lib/hexapdf/type/trailer.rb +1 -1
  259. data/lib/hexapdf/type/viewer_preferences.rb +1 -1
  260. data/lib/hexapdf/type/xref_stream.rb +1 -1
  261. data/lib/hexapdf/type.rb +1 -1
  262. data/lib/hexapdf/utils/bit_field.rb +1 -1
  263. data/lib/hexapdf/utils/bit_stream.rb +1 -1
  264. data/lib/hexapdf/utils/graphics_helpers.rb +1 -1
  265. data/lib/hexapdf/utils/lru_cache.rb +1 -1
  266. data/lib/hexapdf/utils/math_helpers.rb +1 -1
  267. data/lib/hexapdf/utils/object_hash.rb +1 -1
  268. data/lib/hexapdf/utils/pdf_doc_encoding.rb +1 -1
  269. data/lib/hexapdf/utils/sorted_tree_node.rb +1 -1
  270. data/lib/hexapdf/utils.rb +1 -1
  271. data/lib/hexapdf/version.rb +2 -2
  272. data/lib/hexapdf/writer.rb +1 -1
  273. data/lib/hexapdf/xref_section.rb +1 -1
  274. data/lib/hexapdf.rb +1 -1
  275. data/test/hexapdf/digital_signature/common.rb +5 -5
  276. data/test/hexapdf/digital_signature/test_cms_handler.rb +1 -1
  277. data/test/hexapdf/document/test_annotations.rb +10 -0
  278. data/test/hexapdf/document/test_layout.rb +6 -3
  279. data/test/hexapdf/filter/test_brotli_decode.rb +1 -1
  280. data/test/hexapdf/font/cmap/test_writer.rb +8 -6
  281. data/test/hexapdf/font/test_true_type_wrapper.rb +6 -2
  282. data/test/hexapdf/font/true_type/test_subsetter.rb +7 -6
  283. data/test/hexapdf/font_loader/test_from_file.rb +7 -0
  284. data/test/hexapdf/layout/test_container_box.rb +3 -1
  285. data/test/hexapdf/layout/test_style.rb +4 -0
  286. data/test/hexapdf/layout/test_table_box.rb +117 -1
  287. data/test/hexapdf/layout/test_text_fragment.rb +18 -8
  288. data/test/hexapdf/layout/test_text_shaper.rb +55 -5
  289. data/test/hexapdf/task/test_import_pages.rb +126 -0
  290. data/test/hexapdf/test_serializer.rb +1 -1
  291. data/test/hexapdf/type/annotations/test_appearance_generator.rb +63 -0
  292. data/test/hexapdf/type/annotations/test_ink.rb +31 -0
  293. data/test/hexapdf/type/test_font_type3.rb +4 -0
  294. metadata +26 -2
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -36,6 +36,7 @@
36
36
 
37
37
  require 'hexapdf/font/invalid_glyph'
38
38
  require 'hexapdf/error'
39
+ require 'hexapdf/data_dir'
39
40
 
40
41
  module HexaPDF
41
42
 
@@ -333,6 +334,8 @@ module HexaPDF
333
334
  # [italic] For the italic or oblique variant of the font
334
335
  # [bold_italic] For the bold and italic/oblique variant of the font
335
336
  #
337
+ # The default value registers the bundled Inter font (see the files in data/hexapdf/fonts).
338
+ #
336
339
  # font.on_invalid_glyph::
337
340
  # Callback hook when a character cannot be mapped to a glyph and one or more glyphs from a
338
341
  # different font should be used. Only applies when using high-level text creation facilities.
@@ -563,7 +566,14 @@ module HexaPDF
563
566
  },
564
567
  'font.default' => 'Times',
565
568
  'font.fallback' => ['ZapfDingbats', 'Symbol'],
566
- 'font.map' => {},
569
+ 'font.map' => {
570
+ 'Inter' => {
571
+ none: File.join(HexaPDF.data_dir, 'fonts', 'Inter-Regular.ttf'),
572
+ bold: File.join(HexaPDF.data_dir, 'fonts', 'Inter-Bold.ttf'),
573
+ italic: File.join(HexaPDF.data_dir, 'fonts', 'Inter-Italic.ttf'),
574
+ bold_italic: File.join(HexaPDF.data_dir, 'fonts', 'Inter-BoldItalic.ttf'),
575
+ },
576
+ },
567
577
  'font.on_invalid_glyph' => method(:font_on_invalid_glyph),
568
578
  'font.on_missing_glyph' => proc do |char, font_wrapper|
569
579
  HexaPDF::Font::InvalidGlyph.new(font_wrapper, char)
@@ -624,6 +634,7 @@ module HexaPDF
624
634
  dereference: 'HexaPDF::Task::Dereference',
625
635
  pdfa: 'HexaPDF::Task::PDFA',
626
636
  merge_acro_form: 'HexaPDF::Task::MergeAcroForm',
637
+ import_pages: 'HexaPDF::Task::ImportPages',
627
638
  })
628
639
 
629
640
  # The global configuration object, providing the following options:
@@ -785,6 +796,7 @@ module HexaPDF
785
796
  Circle: 'HexaPDF::Type::Annotations::Circle',
786
797
  Polygon: 'HexaPDF::Type::Annotations::Polygon',
787
798
  PolyLine: 'HexaPDF::Type::Annotations::Polyline',
799
+ Ink: 'HexaPDF::Type::Annotations::Ink',
788
800
  XML: 'HexaPDF::Type::Metadata',
789
801
  GTS_PDFX: 'HexaPDF::Type::OutputIntent',
790
802
  GTS_PDFA1: 'HexaPDF::Type::OutputIntent',
@@ -818,6 +830,7 @@ module HexaPDF
818
830
  Circle: 'HexaPDF::Type::Annotations::Circle',
819
831
  Polygon: 'HexaPDF::Type::Annotations::Polygon',
820
832
  PolyLine: 'HexaPDF::Type::Annotations::Polyline',
833
+ Ink: 'HexaPDF::Type::Annotations::Ink',
821
834
  },
822
835
  XXAcroFormField: {
823
836
  Tx: 'HexaPDF::Type::AcroForm::TextField',
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -88,13 +88,19 @@ module HexaPDF
88
88
  # superscript.
89
89
  #
90
90
  # Using this "fake" baseline works well enough and avoids additional calculations.
91
- def baseline = bottom
91
+ def baseline
92
+ bottom
93
+ end
92
94
 
93
95
  # The height of the text run's bounding box.
94
- def height = top - bottom
96
+ def height
97
+ top - bottom
98
+ end
95
99
 
96
100
  # The width of the text run's bounding box.
97
- def width = right - left
101
+ def width
102
+ right - left
103
+ end
98
104
  end
99
105
 
100
106
  # Array with all collected TextRun instances.
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -205,6 +205,31 @@ module HexaPDF
205
205
  border_style(color: 0, width: 1)
206
206
  end
207
207
 
208
+ # :call-seq:
209
+ # annotations.create_scribble(page, *points) -> annotation
210
+ #
211
+ # Creates an ink annotation on the given page and returns it.
212
+ #
213
+ # If +points+ (alternating horizontal and vertical coordinates) are given, the path created
214
+ # from them is added to the annotation.
215
+ #
216
+ # The ink annotation uses a black color and a width of 1pt for the stroke style. It can be
217
+ # further styled using the convenience methods on the returned annotation object.
218
+ #
219
+ # Example:
220
+ #
221
+ # #>pdf-small
222
+ # doc.annotations.create_scribble(doc.pages[0], 20, 20, 30, 70, 80, 60, 40, 30).
223
+ # border_style(color: "hp-blue", width: 2, style: [3, 1]).
224
+ # regenerate_appearance
225
+ #
226
+ # See: Type::Annotations::Ink
227
+ def create_scribble(page, *points)
228
+ annot = create_and_add_to_page(:Ink, page)
229
+ annot.add_path(*points) unless points.empty?
230
+ annot.border_style(color: 0, width: 1)
231
+ end
232
+
208
233
  private
209
234
 
210
235
  # Returns the root of the destinations name tree.
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
data/lib/hexapdf/error.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2025 Thomas Leitner
7
+ # Copyright (C) 2014-2026 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as