pdfrb 0.3.0 → 0.7.1

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 (422) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/CHANGELOG.md +51 -0
  4. data/Gemfile +1 -0
  5. data/PROPOSAL.canvas-clip.md +92 -0
  6. data/PROPOSAL.canvas-draw-image-matrix.md +87 -0
  7. data/PROPOSAL.canvas-rich-text.md +103 -0
  8. data/PROPOSAL.canvas-text-lines.md +77 -0
  9. data/PROPOSAL.canvas-transparency.md +106 -0
  10. data/PROPOSAL.external-font-metrics.md +129 -0
  11. data/PROPOSAL.font-embedding-fontfile2.md +88 -0
  12. data/PROPOSAL.font-resolver-ttc.md +105 -0
  13. data/PROPOSAL.font-resolver.md +96 -0
  14. data/PROPOSAL.font-subsetting.md +98 -0
  15. data/PROPOSAL.gradient-shadings.md +110 -0
  16. data/PROPOSAL.page-mediabox-setter.md +66 -0
  17. data/PROPOSAL.per-glyph-width.md +91 -0
  18. data/PROPOSAL.stringio-require.md +53 -0
  19. data/PROPOSAL.struct-tree-root.md +102 -0
  20. data/PROPOSAL.text-measurement.md +93 -0
  21. data/PROPOSAL.ttf-table-parsing-fix.md +112 -0
  22. data/RELEASE.md +61 -0
  23. data/data/pdfrb/afm/Courier-Bold.afm +342 -342
  24. data/data/pdfrb/afm/Courier-BoldOblique.afm +342 -342
  25. data/data/pdfrb/afm/Courier-Oblique.afm +342 -342
  26. data/data/pdfrb/afm/Courier.afm +342 -342
  27. data/data/pdfrb/afm/Helvetica-Bold.afm +2827 -2827
  28. data/data/pdfrb/afm/Helvetica-BoldOblique.afm +2827 -2827
  29. data/data/pdfrb/afm/Helvetica-Oblique.afm +3051 -3051
  30. data/data/pdfrb/afm/Helvetica.afm +3051 -3051
  31. data/data/pdfrb/afm/Symbol.afm +213 -213
  32. data/data/pdfrb/afm/Times-Bold.afm +2588 -2588
  33. data/data/pdfrb/afm/Times-BoldItalic.afm +2384 -2384
  34. data/data/pdfrb/afm/Times-Italic.afm +2667 -2667
  35. data/data/pdfrb/afm/Times-Roman.afm +2419 -2419
  36. data/data/pdfrb/afm/ZapfDingbats.afm +225 -225
  37. data/lib/pdfrb/action/base.rb +21 -0
  38. data/lib/pdfrb/action/types.rb +178 -0
  39. data/lib/pdfrb/action.rb +55 -0
  40. data/lib/pdfrb/annotation/base.rb +79 -0
  41. data/lib/pdfrb/annotation/types.rb +222 -0
  42. data/lib/pdfrb/annotation.rb +78 -0
  43. data/lib/pdfrb/appearance/generator.rb +216 -0
  44. data/lib/pdfrb/appearance.rb +11 -0
  45. data/lib/pdfrb/arlington/object_definition.rb +2 -2
  46. data/lib/pdfrb/arlington/predicate/evaluator.rb +1 -1
  47. data/lib/pdfrb/arlington/predicate/functions.rb +25 -9
  48. data/lib/pdfrb/arlington/predicate.rb +1 -5
  49. data/lib/pdfrb/cli/batch.rb +18 -0
  50. data/lib/pdfrb/cli/debug_info.rb +18 -0
  51. data/lib/pdfrb/cli/files.rb +16 -0
  52. data/lib/pdfrb/cli/fonts.rb +16 -0
  53. data/lib/pdfrb/cli/form.rb +18 -0
  54. data/lib/pdfrb/cli/image2pdf.rb +18 -0
  55. data/lib/pdfrb/cli/images.rb +34 -0
  56. data/lib/pdfrb/cli/info.rb +20 -0
  57. data/lib/pdfrb/cli/inspect.rb +18 -0
  58. data/lib/pdfrb/cli/merge.rb +18 -0
  59. data/lib/pdfrb/cli/modify.rb +18 -0
  60. data/lib/pdfrb/cli/optimize.rb +18 -0
  61. data/lib/pdfrb/cli/split.rb +21 -0
  62. data/lib/pdfrb/cli/watermark.rb +18 -0
  63. data/lib/pdfrb/cli.rb +291 -7
  64. data/lib/pdfrb/color/color_space.rb +259 -0
  65. data/lib/pdfrb/color/icc_profile.rb +90 -0
  66. data/lib/pdfrb/color.rb +12 -0
  67. data/lib/pdfrb/compare/comparator.rb +244 -0
  68. data/lib/pdfrb/compare/report.rb +78 -0
  69. data/lib/pdfrb/compare.rb +42 -0
  70. data/lib/pdfrb/composer.rb +161 -0
  71. data/lib/pdfrb/conformance/pdf_a.rb +317 -56
  72. data/lib/pdfrb/conformance/pdf_ua.rb +186 -29
  73. data/lib/pdfrb/conformance/pdf_x.rb +247 -0
  74. data/lib/pdfrb/conformance/rule.rb +78 -0
  75. data/lib/pdfrb/conformance/structure_elements.rb +174 -0
  76. data/lib/pdfrb/conformance/verapdf_bridge.rb +92 -0
  77. data/lib/pdfrb/conformance.rb +7 -3
  78. data/lib/pdfrb/content/canvas.rb +354 -72
  79. data/lib/pdfrb/content/color_space.rb +157 -0
  80. data/lib/pdfrb/content/hidden_text_detector.rb +167 -0
  81. data/lib/pdfrb/content/operator.rb +21 -1
  82. data/lib/pdfrb/content/operators/clipping.rb +36 -0
  83. data/lib/pdfrb/content/operators/graphics_state_params.rb +15 -0
  84. data/lib/pdfrb/content/operators/inline_image.rb +53 -0
  85. data/lib/pdfrb/content/operators.rb +22 -0
  86. data/lib/pdfrb/content/shading/base.rb +139 -0
  87. data/lib/pdfrb/content/shading.rb +17 -0
  88. data/lib/pdfrb/content/smart_text_extractor.rb +85 -0
  89. data/lib/pdfrb/content/tiling_pattern.rb +78 -0
  90. data/lib/pdfrb/content/transformation_matrix.rb +61 -0
  91. data/lib/pdfrb/content.rb +7 -26
  92. data/lib/pdfrb/destination/fit.rb +185 -0
  93. data/lib/pdfrb/destination.rb +13 -0
  94. data/lib/pdfrb/digital_signature/cms_handler.rb +22 -0
  95. data/lib/pdfrb/digital_signature/signing.rb +107 -11
  96. data/lib/pdfrb/digital_signature/timestamp_handler.rb +45 -0
  97. data/lib/pdfrb/digital_signature/verification.rb +88 -9
  98. data/lib/pdfrb/digital_signature/verification_result.rb +14 -0
  99. data/lib/pdfrb/digital_signature.rb +26 -2
  100. data/lib/pdfrb/document/annotations.rb +120 -3
  101. data/lib/pdfrb/document/associated_files.rb +104 -0
  102. data/lib/pdfrb/document/colors.rb +95 -0
  103. data/lib/pdfrb/document/destinations.rb +127 -5
  104. data/lib/pdfrb/document/display.rb +84 -0
  105. data/lib/pdfrb/document/fonts.rb +417 -45
  106. data/lib/pdfrb/document/form.rb +338 -0
  107. data/lib/pdfrb/document/graphics_state.rb +91 -0
  108. data/lib/pdfrb/document/images.rb +4 -4
  109. data/lib/pdfrb/document/info.rb +102 -0
  110. data/lib/pdfrb/document/layers.rb +62 -0
  111. data/lib/pdfrb/document/metadata.rb +12 -5
  112. data/lib/pdfrb/document/output_intents.rb +91 -0
  113. data/lib/pdfrb/document/page_labels.rb +80 -0
  114. data/lib/pdfrb/document/pages.rb +68 -19
  115. data/lib/pdfrb/document/portfolio.rb +119 -0
  116. data/lib/pdfrb/document/shadings.rb +159 -0
  117. data/lib/pdfrb/document/stamps.rb +68 -0
  118. data/lib/pdfrb/document/structure.rb +242 -0
  119. data/lib/pdfrb/document.rb +73 -4
  120. data/lib/pdfrb/encryption/identity.rb +13 -0
  121. data/lib/pdfrb/encryption/password_verification.rb +53 -8
  122. data/lib/pdfrb/encryption/security_handler.rb +8 -5
  123. data/lib/pdfrb/encryption/standard_security_handler.rb +154 -81
  124. data/lib/pdfrb/encryption.rb +17 -0
  125. data/lib/pdfrb/error.rb +2 -2
  126. data/lib/pdfrb/filter/brotli_decode.rb +32 -0
  127. data/lib/pdfrb/filter/ccitt_fax_decode.rb +12 -0
  128. data/lib/pdfrb/filter/crypt.rb +2 -2
  129. data/lib/pdfrb/filter/dct_decode.rb +18 -0
  130. data/lib/pdfrb/filter/flate_decode.rb +4 -18
  131. data/lib/pdfrb/filter/jbig2_decode.rb +12 -0
  132. data/lib/pdfrb/filter/jpx_decode.rb +18 -0
  133. data/lib/pdfrb/filter/lzw_decode.rb +3 -2
  134. data/lib/pdfrb/filter/png_predictor.rb +94 -0
  135. data/lib/pdfrb/filter.rb +26 -13
  136. data/lib/pdfrb/font/afm_parser.rb +50 -26
  137. data/lib/pdfrb/font/cmap/writer.rb +9 -0
  138. data/lib/pdfrb/font/encoding/win_ansi_encoding.rb +17 -0
  139. data/lib/pdfrb/font/encoding.rb +32 -3
  140. data/lib/pdfrb/font/metrics_helper.rb +121 -0
  141. data/lib/pdfrb/font/true_type/file.rb +10 -1
  142. data/lib/pdfrb/font/true_type/glyf.rb +82 -0
  143. data/lib/pdfrb/font/true_type/kern.rb +58 -0
  144. data/lib/pdfrb/font/true_type/loca.rb +42 -0
  145. data/lib/pdfrb/font/true_type/maxp.rb +44 -0
  146. data/lib/pdfrb/font/true_type/name.rb +53 -0
  147. data/lib/pdfrb/font/true_type/post.rb +93 -0
  148. data/lib/pdfrb/font/true_type/subsetter.rb +3 -5
  149. data/lib/pdfrb/font/true_type/wrapper.rb +102 -0
  150. data/lib/pdfrb/font/true_type.rb +7 -0
  151. data/lib/pdfrb/font.rb +2 -0
  152. data/lib/pdfrb/font_loader/from_configuration.rb +19 -0
  153. data/lib/pdfrb/font_loader/from_file.rb +20 -0
  154. data/lib/pdfrb/font_loader/standard14.rb +20 -0
  155. data/lib/pdfrb/font_loader/variant_from_name.rb +36 -0
  156. data/lib/pdfrb/font_loader.rb +4 -0
  157. data/lib/pdfrb/font_resolver.rb +138 -0
  158. data/lib/pdfrb/image/audit.rb +94 -0
  159. data/lib/pdfrb/image/downsampler.rb +124 -0
  160. data/lib/pdfrb/image.rb +13 -0
  161. data/lib/pdfrb/image_loader/jpeg.rb +39 -58
  162. data/lib/pdfrb/image_loader/png.rb +82 -251
  163. data/lib/pdfrb/layout/bidi.rb +198 -0
  164. data/lib/pdfrb/layout/box.rb +49 -0
  165. data/lib/pdfrb/layout/box_fitter.rb +54 -0
  166. data/lib/pdfrb/layout/column_box.rb +71 -0
  167. data/lib/pdfrb/layout/container_box.rb +45 -0
  168. data/lib/pdfrb/layout/frame.rb +67 -0
  169. data/lib/pdfrb/layout/image_box.rb +44 -0
  170. data/lib/pdfrb/layout/inline_box.rb +25 -0
  171. data/lib/pdfrb/layout/line.rb +55 -0
  172. data/lib/pdfrb/layout/list_box.rb +87 -0
  173. data/lib/pdfrb/layout/numeric_refinements.rb +43 -0
  174. data/lib/pdfrb/layout/page_style.rb +65 -0
  175. data/lib/pdfrb/layout/style.rb +62 -0
  176. data/lib/pdfrb/layout/table_box.rb +66 -0
  177. data/lib/pdfrb/layout/text_box.rb +38 -0
  178. data/lib/pdfrb/layout/text_fragment.rb +45 -0
  179. data/lib/pdfrb/layout/text_layouter.rb +123 -0
  180. data/lib/pdfrb/layout.rb +28 -0
  181. data/lib/pdfrb/linearization/hint_stream.rb +93 -0
  182. data/lib/pdfrb/linearization/writer.rb +259 -0
  183. data/lib/pdfrb/linearization.rb +21 -0
  184. data/lib/pdfrb/model/cos/dictionary.rb +12 -0
  185. data/lib/pdfrb/model/pdf_array.rb +2 -2
  186. data/lib/pdfrb/model/type/action.rb +42 -0
  187. data/lib/pdfrb/model/type/action_go_to_3d_view.rb +14 -0
  188. data/lib/pdfrb/model/type/action_go_to_dp.rb +16 -0
  189. data/lib/pdfrb/model/type/action_go_to_r.rb +26 -0
  190. data/lib/pdfrb/model/type/action_goto.rb +34 -0
  191. data/lib/pdfrb/model/type/action_hide.rb +26 -0
  192. data/lib/pdfrb/model/type/action_import_data.rb +18 -0
  193. data/lib/pdfrb/model/type/action_java_script.rb +18 -0
  194. data/lib/pdfrb/model/type/action_launch.rb +22 -0
  195. data/lib/pdfrb/model/type/action_movie.rb +22 -0
  196. data/lib/pdfrb/model/type/action_named.rb +23 -0
  197. data/lib/pdfrb/model/type/action_nop.rb +12 -0
  198. data/lib/pdfrb/model/type/action_rendition.rb +28 -0
  199. data/lib/pdfrb/model/type/action_reset_form.rb +22 -0
  200. data/lib/pdfrb/model/type/action_rich_media_execute.rb +17 -0
  201. data/lib/pdfrb/model/type/action_set_ocg_state.rb +32 -0
  202. data/lib/pdfrb/model/type/action_set_state.rb +14 -0
  203. data/lib/pdfrb/model/type/action_sound_action.rb +23 -0
  204. data/lib/pdfrb/model/type/action_submit_form.rb +64 -0
  205. data/lib/pdfrb/model/type/action_thread.rb +23 -0
  206. data/lib/pdfrb/model/type/action_trans.rb +30 -0
  207. data/lib/pdfrb/model/type/action_uri.rb +30 -0
  208. data/lib/pdfrb/model/type/af_embedded_file.rb +11 -0
  209. data/lib/pdfrb/model/type/af_file_specification.rb +34 -0
  210. data/lib/pdfrb/model/type/annotation.rb +49 -10
  211. data/lib/pdfrb/model/type/appearance.rb +41 -0
  212. data/lib/pdfrb/model/type/appearance_characteristics.rb +36 -0
  213. data/lib/pdfrb/model/type/appearance_generator.rb +22 -0
  214. data/lib/pdfrb/model/type/appearance_trap_net.rb +84 -0
  215. data/lib/pdfrb/model/type/border_effect.rb +25 -0
  216. data/lib/pdfrb/model/type/border_styling.rb +38 -0
  217. data/lib/pdfrb/model/type/box_color_info.rb +21 -0
  218. data/lib/pdfrb/model/type/box_style.rb +19 -0
  219. data/lib/pdfrb/model/type/button.rb +17 -0
  220. data/lib/pdfrb/model/type/cal_gray.rb +17 -0
  221. data/lib/pdfrb/model/type/cal_rgb.rb +22 -0
  222. data/lib/pdfrb/model/type/caret_annotation.rb +21 -0
  223. data/lib/pdfrb/model/type/catalog.rb +99 -16
  224. data/lib/pdfrb/model/type/choice.rb +21 -0
  225. data/lib/pdfrb/model/type/cid_font.rb +52 -1
  226. data/lib/pdfrb/model/type/cid_font_descriptor_metrics.rb +28 -0
  227. data/lib/pdfrb/model/type/cid_system_info.rb +28 -0
  228. data/lib/pdfrb/model/type/circle_annotation.rb +20 -0
  229. data/lib/pdfrb/model/type/collection.rb +27 -0
  230. data/lib/pdfrb/model/type/collection_field.rb +24 -0
  231. data/lib/pdfrb/model/type/collection_item.rb +19 -0
  232. data/lib/pdfrb/model/type/collection_schema.rb +25 -0
  233. data/lib/pdfrb/model/type/collection_sort.rb +13 -0
  234. data/lib/pdfrb/model/type/crypt_filter.rb +58 -0
  235. data/lib/pdfrb/model/type/device_n.rb +37 -0
  236. data/lib/pdfrb/model/type/device_n_mixing_hints.rb +17 -0
  237. data/lib/pdfrb/model/type/device_n_process.rb +13 -0
  238. data/lib/pdfrb/model/type/doc_mdp_transform_parameters.rb +21 -0
  239. data/lib/pdfrb/model/type/document_security_store.rb +55 -0
  240. data/lib/pdfrb/model/type/embedded_file.rb +19 -0
  241. data/lib/pdfrb/model/type/embedded_file_parameter.rb +48 -0
  242. data/lib/pdfrb/model/type/encryption_public_key.rb +38 -0
  243. data/lib/pdfrb/model/type/encryption_standard.rb +68 -0
  244. data/lib/pdfrb/model/type/field_mdp_transform_parameters.rb +26 -0
  245. data/lib/pdfrb/model/type/file_attachment_annotation.rb +29 -0
  246. data/lib/pdfrb/model/type/file_spec_ef.rb +22 -0
  247. data/lib/pdfrb/model/type/file_spec_rf.rb +21 -0
  248. data/lib/pdfrb/model/type/file_specification.rb +43 -0
  249. data/lib/pdfrb/model/type/file_trailer.rb +54 -0
  250. data/lib/pdfrb/model/type/font.rb +73 -2
  251. data/lib/pdfrb/model/type/font_cid_type0.rb +17 -0
  252. data/lib/pdfrb/model/type/font_cid_type2.rb +17 -0
  253. data/lib/pdfrb/model/type/font_descriptor.rb +47 -0
  254. data/lib/pdfrb/model/type/font_descriptor_cid_type0.rb +15 -0
  255. data/lib/pdfrb/model/type/font_descriptor_cid_type2.rb +15 -0
  256. data/lib/pdfrb/model/type/font_encoding.rb +47 -0
  257. data/lib/pdfrb/model/type/font_file.rb +28 -0
  258. data/lib/pdfrb/model/type/font_file2.rb +32 -0
  259. data/lib/pdfrb/model/type/font_file3.rb +23 -0
  260. data/lib/pdfrb/model/type/font_multiple_master.rb +60 -0
  261. data/lib/pdfrb/model/type/font_true_type.rb +1 -1
  262. data/lib/pdfrb/model/type/font_type0.rb +1 -1
  263. data/lib/pdfrb/model/type/font_type1.rb +1 -1
  264. data/lib/pdfrb/model/type/font_type3.rb +1 -1
  265. data/lib/pdfrb/model/type/form_field.rb +73 -0
  266. data/lib/pdfrb/model/type/free_text_annotation.rb +37 -0
  267. data/lib/pdfrb/model/type/function.rb +42 -0
  268. data/lib/pdfrb/model/type/function_exponential.rb +31 -0
  269. data/lib/pdfrb/model/type/function_postscript.rb +25 -0
  270. data/lib/pdfrb/model/type/function_sampled.rb +55 -0
  271. data/lib/pdfrb/model/type/function_stitching.rb +33 -0
  272. data/lib/pdfrb/model/type/generic_appearance.rb +40 -0
  273. data/lib/pdfrb/model/type/graphics_state_parameter.rb +69 -0
  274. data/lib/pdfrb/model/type/halftone.rb +21 -0
  275. data/lib/pdfrb/model/type/halftone_type1.rb +17 -0
  276. data/lib/pdfrb/model/type/halftone_type10.rb +16 -0
  277. data/lib/pdfrb/model/type/halftone_type16.rb +11 -0
  278. data/lib/pdfrb/model/type/halftone_type5.rb +24 -0
  279. data/lib/pdfrb/model/type/halftone_type6.rb +16 -0
  280. data/lib/pdfrb/model/type/highlight_annotation.rb +11 -0
  281. data/lib/pdfrb/model/type/icc_based_color_space.rb +24 -0
  282. data/lib/pdfrb/model/type/icon_fit.rb +31 -0
  283. data/lib/pdfrb/model/type/indexed.rb +32 -0
  284. data/lib/pdfrb/model/type/info.rb +44 -0
  285. data/lib/pdfrb/model/type/ink_annotation.rb +29 -0
  286. data/lib/pdfrb/model/type/interactive_form.rb +36 -0
  287. data/lib/pdfrb/model/type/interior_color.rb +12 -0
  288. data/lib/pdfrb/model/type/jbig2_globals.rb +15 -0
  289. data/lib/pdfrb/model/type/lab.rb +27 -0
  290. data/lib/pdfrb/model/type/line_annotation.rb +44 -0
  291. data/lib/pdfrb/model/type/line_ending_styling.rb +39 -0
  292. data/lib/pdfrb/model/type/link_annotation.rb +41 -0
  293. data/lib/pdfrb/model/type/link_appearance.rb +9 -0
  294. data/lib/pdfrb/model/type/mark_information.rb +23 -0
  295. data/lib/pdfrb/model/type/marked_content_reference.rb +24 -0
  296. data/lib/pdfrb/model/type/markup_annotation.rb +36 -0
  297. data/lib/pdfrb/model/type/mdp_dict.rb +28 -0
  298. data/lib/pdfrb/model/type/measure.rb +39 -0
  299. data/lib/pdfrb/model/type/media_clip.rb +28 -0
  300. data/lib/pdfrb/model/type/media_offset.rb +106 -0
  301. data/lib/pdfrb/model/type/metadata.rb +27 -3
  302. data/lib/pdfrb/model/type/misc_helpers.rb +75 -0
  303. data/lib/pdfrb/model/type/movie.rb +28 -0
  304. data/lib/pdfrb/model/type/names.rb +51 -0
  305. data/lib/pdfrb/model/type/namespace.rb +27 -0
  306. data/lib/pdfrb/model/type/object_reference.rb +31 -0
  307. data/lib/pdfrb/model/type/object_stream.rb +38 -0
  308. data/lib/pdfrb/model/type/opt_content_ext.rb +94 -0
  309. data/lib/pdfrb/model/type/opt_content_page_element.rb +18 -0
  310. data/lib/pdfrb/model/type/optional_content_config.rb +56 -0
  311. data/lib/pdfrb/model/type/optional_content_group.rb +35 -10
  312. data/lib/pdfrb/model/type/optional_content_membership.rb +36 -2
  313. data/lib/pdfrb/model/type/optional_content_properties.rb +16 -1
  314. data/lib/pdfrb/model/type/outline.rb +40 -6
  315. data/lib/pdfrb/model/type/outline_item.rb +45 -0
  316. data/lib/pdfrb/model/type/output_intent.rb +30 -0
  317. data/lib/pdfrb/model/type/page.rb +127 -0
  318. data/lib/pdfrb/model/type/page_label.rb +68 -0
  319. data/lib/pdfrb/model/type/page_piece_info.rb +58 -0
  320. data/lib/pdfrb/model/type/page_tree_node.rb +51 -16
  321. data/lib/pdfrb/model/type/page_tree_node_root.rb +15 -0
  322. data/lib/pdfrb/model/type/pattern.rb +16 -0
  323. data/lib/pdfrb/model/type/pattern_shading.rb +25 -0
  324. data/lib/pdfrb/model/type/pattern_tiling.rb +25 -0
  325. data/lib/pdfrb/model/type/polygon_annotation.rb +29 -0
  326. data/lib/pdfrb/model/type/polygon_polyline.rb +14 -0
  327. data/lib/pdfrb/model/type/polyline_annotation.rb +29 -0
  328. data/lib/pdfrb/model/type/popup_annotation.rb +20 -0
  329. data/lib/pdfrb/model/type/printer_mark_annotation.rb +13 -0
  330. data/lib/pdfrb/model/type/redact_annotation.rb +28 -0
  331. data/lib/pdfrb/model/type/rendition.rb +31 -0
  332. data/lib/pdfrb/model/type/resources.rb +59 -14
  333. data/lib/pdfrb/model/type/rich_media_activation.rb +24 -0
  334. data/lib/pdfrb/model/type/rich_media_animation.rb +25 -0
  335. data/lib/pdfrb/model/type/rich_media_annotation.rb +18 -0
  336. data/lib/pdfrb/model/type/rich_media_command.rb +19 -0
  337. data/lib/pdfrb/model/type/rich_media_configuration.rb +32 -0
  338. data/lib/pdfrb/model/type/rich_media_content.rb +28 -0
  339. data/lib/pdfrb/model/type/rich_media_cue_point.rb +18 -0
  340. data/lib/pdfrb/model/type/rich_media_deactivation.rb +17 -0
  341. data/lib/pdfrb/model/type/rich_media_instance.rb +33 -0
  342. data/lib/pdfrb/model/type/rich_media_presentation.rb +29 -0
  343. data/lib/pdfrb/model/type/rich_media_settings.rb +33 -0
  344. data/lib/pdfrb/model/type/rich_media_window.rb +20 -0
  345. data/lib/pdfrb/model/type/screen_annotation.rb +19 -0
  346. data/lib/pdfrb/model/type/separation.rb +25 -0
  347. data/lib/pdfrb/model/type/sig_field_lock.rb +25 -0
  348. data/lib/pdfrb/model/type/sig_field_seed_value.rb +25 -0
  349. data/lib/pdfrb/model/type/signature.rb +65 -0
  350. data/lib/pdfrb/model/type/signature_build.rb +86 -0
  351. data/lib/pdfrb/model/type/signature_field.rb +17 -0
  352. data/lib/pdfrb/model/type/software_identifier.rb +19 -0
  353. data/lib/pdfrb/model/type/sound.rb +38 -0
  354. data/lib/pdfrb/model/type/sound_annotation.rb +21 -0
  355. data/lib/pdfrb/model/type/square_annotation.rb +24 -0
  356. data/lib/pdfrb/model/type/square_circle.rb +13 -0
  357. data/lib/pdfrb/model/type/squiggly_annotation.rb +11 -0
  358. data/lib/pdfrb/model/type/stamp_annotation.rb +19 -0
  359. data/lib/pdfrb/model/type/strikeout_annotation.rb +11 -0
  360. data/lib/pdfrb/model/type/struct_elem.rb +75 -0
  361. data/lib/pdfrb/model/type/struct_tree_root.rb +34 -0
  362. data/lib/pdfrb/model/type/structure_attributes.rb +44 -0
  363. data/lib/pdfrb/model/type/structure_element_kid.rb +33 -0
  364. data/lib/pdfrb/model/type/text_annotation.rb +25 -0
  365. data/lib/pdfrb/model/type/text_appearance.rb +9 -0
  366. data/lib/pdfrb/model/type/text_field.rb +21 -0
  367. data/lib/pdfrb/model/type/text_markup_annotation.rb +30 -0
  368. data/lib/pdfrb/model/type/three_d_activation.rb +32 -0
  369. data/lib/pdfrb/model/type/three_d_animation_style.rb +24 -0
  370. data/lib/pdfrb/model/type/three_d_background.rb +28 -0
  371. data/lib/pdfrb/model/type/three_d_cross_section.rb +25 -0
  372. data/lib/pdfrb/model/type/three_d_lighting_scheme.rb +26 -0
  373. data/lib/pdfrb/model/type/three_d_measure.rb +20 -0
  374. data/lib/pdfrb/model/type/three_d_measure_3dc.rb +23 -0
  375. data/lib/pdfrb/model/type/three_d_measure_ad3.rb +14 -0
  376. data/lib/pdfrb/model/type/three_d_measure_ld3.rb +14 -0
  377. data/lib/pdfrb/model/type/three_d_measure_pd3.rb +20 -0
  378. data/lib/pdfrb/model/type/three_d_measure_rd3.rb +14 -0
  379. data/lib/pdfrb/model/type/three_d_node.rb +37 -0
  380. data/lib/pdfrb/model/type/three_d_reference.rb +21 -0
  381. data/lib/pdfrb/model/type/three_d_render_mode.rb +34 -0
  382. data/lib/pdfrb/model/type/three_d_stream.rb +48 -0
  383. data/lib/pdfrb/model/type/three_d_units.rb +18 -0
  384. data/lib/pdfrb/model/type/three_d_view.rb +40 -0
  385. data/lib/pdfrb/model/type/to_unicode_cmap_stream.rb +23 -0
  386. data/lib/pdfrb/model/type/transition.rb +68 -0
  387. data/lib/pdfrb/model/type/underline_annotation.rb +11 -0
  388. data/lib/pdfrb/model/type/ur_transform_parameters.rb +33 -0
  389. data/lib/pdfrb/model/type/uri_dict.rb +18 -0
  390. data/lib/pdfrb/model/type/url_alias.rb +19 -0
  391. data/lib/pdfrb/model/type/variable_text_field.rb +47 -0
  392. data/lib/pdfrb/model/type/viewer_preferences.rb +42 -0
  393. data/lib/pdfrb/model/type/watermark_annotation.rb +13 -0
  394. data/lib/pdfrb/model/type/widget_annotation.rb +48 -0
  395. data/lib/pdfrb/model/type/widget_appearance.rb +9 -0
  396. data/lib/pdfrb/model/type/xobject_form.rb +41 -0
  397. data/lib/pdfrb/model/type/xobject_image.rb +56 -0
  398. data/lib/pdfrb/model/type/xref_stream.rb +37 -0
  399. data/lib/pdfrb/model/type.rb +289 -6
  400. data/lib/pdfrb/serializer.rb +2 -2
  401. data/lib/pdfrb/source/tokenizer.rb +0 -2
  402. data/lib/pdfrb/task/benchmark.rb +83 -0
  403. data/lib/pdfrb/task/extract_text.rb +1 -1
  404. data/lib/pdfrb/task/generate_corpus.rb +130 -0
  405. data/lib/pdfrb/task/memory_profile.rb +84 -0
  406. data/lib/pdfrb/task/optimize.rb +97 -7
  407. data/lib/pdfrb/task/regenerate_appearances.rb +98 -0
  408. data/lib/pdfrb/task.rb +4 -3
  409. data/lib/pdfrb/test_utils.rb +112 -0
  410. data/lib/pdfrb/validator.rb +82 -0
  411. data/lib/pdfrb/version.rb +1 -1
  412. data/lib/pdfrb/writer.rb +117 -27
  413. data/lib/pdfrb/xmp/packet.rb +122 -0
  414. data/lib/pdfrb/xmp/schemas.rb +96 -0
  415. data/lib/pdfrb/xmp.rb +44 -0
  416. data/lib/pdfrb/xref_section.rb +2 -2
  417. data/lib/pdfrb.rb +24 -54
  418. data/pdfrb.gemspec +45 -0
  419. data/script/apply_fixes.sh +843 -0
  420. data/script/make_jpeg_fixture.rb +53 -0
  421. data/script/make_png_fixture.rb +25 -0
  422. metadata +319 -4
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Build a minimal 2x1 RGB JPEG fixture for image_loader specs.
4
+ # Uses the JPEG spec directly (no ImageMagick). The output is intentionally
5
+ # minimal — just enough to be recognized by JPEG parsers and contain valid
6
+ # SOF/SOS segments describing a 2x1 RGB image.
7
+ bytes = +""
8
+ # SOI
9
+ bytes << "\xFF\xD8".b
10
+ # DQT (Define Quantization Table) — minimal valid 1-byte table
11
+ bytes << "\xFF\xDB".b # marker
12
+ bytes << "\x00\x43".b # length = 67
13
+ bytes << "\x00".b # table id 0, precision 0 (8-bit)
14
+ # 64 quantization values, all 1
15
+ 64.times { bytes << "\x01".b }
16
+ # SOF0 (Start Of Frame, baseline) — 2x1 RGB
17
+ bytes << "\xFF\xC0".b # marker
18
+ bytes << "\x00\x0B".b # length = 11
19
+ bytes << "\x08".b # precision 8-bit
20
+ bytes << "\x00\x01".b # height = 1
21
+ bytes << "\x00\x02".b # width = 2
22
+ bytes << "\x03".b # num components = 3 (YCbCr)
23
+ bytes << "\x01\x11\x00".b # Y component (id=1, sampling 1x1, quant table 0)
24
+ bytes << "\x02\x11\x00".b # Cb component (id=2, sampling 1x1, quant table 0)
25
+ bytes << "\x03\x11\x00".b # Cr component (id=3, sampling 1x1, quant table 0)
26
+ # DHT (Define Huffman Table) — minimal DC table for each component
27
+ def huffman_table(bytes, table_class, table_id)
28
+ bytes << "\xFF\xC4".b
29
+ # 16 bytes of bit-length counts (all zero for simplicity except code 0)
30
+ lengths = [0] * 16
31
+ lengths[0] = 1 # one code of length 1
32
+ payload = [(table_class << 4) | table_id].pack("C") + lengths.pack("C16")
33
+ body = payload
34
+ body << "\x00".b # one symbol value = 0
35
+ bytes << ([body.bytesize + 2].pack("n") + body.b)
36
+ end
37
+ huffman_table(bytes, 0, 0) # DC table 0
38
+ huffman_table(bytes, 1, 0) # AC table 0
39
+ # SOS (Start Of Scan)
40
+ bytes << "\xFF\xDA".b
41
+ bytes << "\x00\x08".b # length
42
+ bytes << "\x03".b # 3 components
43
+ bytes << "\x01\x00".b # Y id=1, DC table 0, AC table 0
44
+ bytes << "\x02\x00".b # Cb id=2, DC table 0, AC table 0
45
+ bytes << "\x03\x00".b # Cr id=3, DC table 0, AC table 0
46
+ bytes << "\x00\x3F\x00".b # spectral selection 0..63, successive approx 0
47
+ # Entropy-coded data — minimal placeholder bytes; not a valid scan but accepted
48
+ bytes << "\x00".b
49
+ # EOI
50
+ bytes << "\xFF\xD9".b
51
+ bytes.force_encoding(Encoding::BINARY)
52
+ File.binwrite("spec/fixtures/images/test.jpg", bytes)
53
+ puts "JPEG written: #{bytes.bytesize} bytes"
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "zlib"
4
+
5
+ width = 2
6
+ height = 2
7
+ raw = +""
8
+ raw << "\x00".b << "\xff\x00\x00".b << "\x00\xff\x00".b
9
+ raw << "\x00".b << "\x00\x00\xff".b << "\xff\xff\x00".b
10
+ raw.force_encoding(Encoding::BINARY)
11
+ compressed = Zlib::Deflate.deflate(raw)
12
+
13
+ def chunk(name, data)
14
+ name_b = name.dup.force_encoding(Encoding::BINARY)
15
+ len = [data.bytesize].pack("N")
16
+ crc = [Zlib::crc32(name_b + data, 0)].pack("N")
17
+ (len + name_b + data + crc).force_encoding(Encoding::BINARY)
18
+ end
19
+
20
+ png = "\x89PNG\r\n\x1a\n".b
21
+ png << chunk("IHDR", [width, height, 8, 2, 0, 0, 0].pack("NNCCCCC"))
22
+ png << chunk("IDAT", compressed)
23
+ png << chunk("IEND", "")
24
+ File.binwrite("spec/fixtures/images/test.png", png)
25
+ puts "PNG written: #{png.bytesize} bytes"
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdfrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-08-08 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: thor
@@ -49,7 +50,25 @@ files:
49
50
  - CLAUDE.md
50
51
  - Gemfile
51
52
  - LICENSE
53
+ - PROPOSAL.canvas-clip.md
54
+ - PROPOSAL.canvas-draw-image-matrix.md
55
+ - PROPOSAL.canvas-rich-text.md
56
+ - PROPOSAL.canvas-text-lines.md
57
+ - PROPOSAL.canvas-transparency.md
58
+ - PROPOSAL.external-font-metrics.md
59
+ - PROPOSAL.font-embedding-fontfile2.md
60
+ - PROPOSAL.font-resolver-ttc.md
61
+ - PROPOSAL.font-resolver.md
62
+ - PROPOSAL.font-subsetting.md
63
+ - PROPOSAL.gradient-shadings.md
64
+ - PROPOSAL.page-mediabox-setter.md
65
+ - PROPOSAL.per-glyph-width.md
66
+ - PROPOSAL.stringio-require.md
67
+ - PROPOSAL.struct-tree-root.md
68
+ - PROPOSAL.text-measurement.md
69
+ - PROPOSAL.ttf-table-parsing-fix.md
52
70
  - README.adoc
71
+ - RELEASE.md
53
72
  - Rakefile
54
73
  - benchmarks/bench.rb
55
74
  - data/pdfrb/afm/Courier-Bold.afm
@@ -683,6 +702,14 @@ files:
683
702
  - data/pdfrb/zapfdingbats.txt
684
703
  - exe/pdfrb
685
704
  - lib/pdfrb.rb
705
+ - lib/pdfrb/action.rb
706
+ - lib/pdfrb/action/base.rb
707
+ - lib/pdfrb/action/types.rb
708
+ - lib/pdfrb/annotation.rb
709
+ - lib/pdfrb/annotation/base.rb
710
+ - lib/pdfrb/annotation/types.rb
711
+ - lib/pdfrb/appearance.rb
712
+ - lib/pdfrb/appearance/generator.rb
686
713
  - lib/pdfrb/arlington.rb
687
714
  - lib/pdfrb/arlington/field_definition.rb
688
715
  - lib/pdfrb/arlington/loader.rb
@@ -703,22 +730,52 @@ files:
703
730
  - lib/pdfrb/arlington/predicate/parser.rb
704
731
  - lib/pdfrb/arlington/type.rb
705
732
  - lib/pdfrb/cli.rb
733
+ - lib/pdfrb/cli/batch.rb
734
+ - lib/pdfrb/cli/debug_info.rb
735
+ - lib/pdfrb/cli/files.rb
736
+ - lib/pdfrb/cli/fonts.rb
737
+ - lib/pdfrb/cli/form.rb
738
+ - lib/pdfrb/cli/image2pdf.rb
739
+ - lib/pdfrb/cli/images.rb
740
+ - lib/pdfrb/cli/info.rb
741
+ - lib/pdfrb/cli/inspect.rb
742
+ - lib/pdfrb/cli/merge.rb
743
+ - lib/pdfrb/cli/modify.rb
744
+ - lib/pdfrb/cli/optimize.rb
745
+ - lib/pdfrb/cli/split.rb
746
+ - lib/pdfrb/cli/watermark.rb
747
+ - lib/pdfrb/color.rb
748
+ - lib/pdfrb/color/color_space.rb
749
+ - lib/pdfrb/color/icc_profile.rb
750
+ - lib/pdfrb/compare.rb
751
+ - lib/pdfrb/compare/comparator.rb
752
+ - lib/pdfrb/compare/report.rb
753
+ - lib/pdfrb/composer.rb
706
754
  - lib/pdfrb/configuration.rb
707
755
  - lib/pdfrb/conformance.rb
708
756
  - lib/pdfrb/conformance/pdf_a.rb
709
757
  - lib/pdfrb/conformance/pdf_ua.rb
758
+ - lib/pdfrb/conformance/pdf_x.rb
759
+ - lib/pdfrb/conformance/rule.rb
760
+ - lib/pdfrb/conformance/structure_elements.rb
761
+ - lib/pdfrb/conformance/verapdf_bridge.rb
710
762
  - lib/pdfrb/content.rb
711
763
  - lib/pdfrb/content/canvas.rb
764
+ - lib/pdfrb/content/color_space.rb
712
765
  - lib/pdfrb/content/graphic_object.rb
713
766
  - lib/pdfrb/content/graphic_object/arc.rb
714
767
  - lib/pdfrb/content/graphic_object/curve.rb
715
768
  - lib/pdfrb/content/graphic_object/polyline.rb
716
769
  - lib/pdfrb/content/graphic_object/rectangle.rb
717
770
  - lib/pdfrb/content/graphics_state.rb
771
+ - lib/pdfrb/content/hidden_text_detector.rb
718
772
  - lib/pdfrb/content/operator.rb
773
+ - lib/pdfrb/content/operators.rb
774
+ - lib/pdfrb/content/operators/clipping.rb
719
775
  - lib/pdfrb/content/operators/color.rb
720
776
  - lib/pdfrb/content/operators/general.rb
721
777
  - lib/pdfrb/content/operators/graphics_state_params.rb
778
+ - lib/pdfrb/content/operators/inline_image.rb
722
779
  - lib/pdfrb/content/operators/marked_content.rb
723
780
  - lib/pdfrb/content/operators/painting.rb
724
781
  - lib/pdfrb/content/operators/path.rb
@@ -727,23 +784,47 @@ files:
727
784
  - lib/pdfrb/content/operators/text_state.rb
728
785
  - lib/pdfrb/content/parser.rb
729
786
  - lib/pdfrb/content/processor.rb
787
+ - lib/pdfrb/content/shading.rb
788
+ - lib/pdfrb/content/shading/base.rb
789
+ - lib/pdfrb/content/smart_text_extractor.rb
790
+ - lib/pdfrb/content/tiling_pattern.rb
791
+ - lib/pdfrb/content/transformation_matrix.rb
730
792
  - lib/pdfrb/data_dir.rb
793
+ - lib/pdfrb/destination.rb
794
+ - lib/pdfrb/destination/fit.rb
731
795
  - lib/pdfrb/digital_signature.rb
796
+ - lib/pdfrb/digital_signature/cms_handler.rb
732
797
  - lib/pdfrb/digital_signature/handler.rb
733
798
  - lib/pdfrb/digital_signature/signing.rb
799
+ - lib/pdfrb/digital_signature/timestamp_handler.rb
734
800
  - lib/pdfrb/digital_signature/verification.rb
801
+ - lib/pdfrb/digital_signature/verification_result.rb
735
802
  - lib/pdfrb/document.rb
736
803
  - lib/pdfrb/document/annotations.rb
804
+ - lib/pdfrb/document/associated_files.rb
805
+ - lib/pdfrb/document/colors.rb
737
806
  - lib/pdfrb/document/destinations.rb
807
+ - lib/pdfrb/document/display.rb
738
808
  - lib/pdfrb/document/files.rb
739
809
  - lib/pdfrb/document/fonts.rb
810
+ - lib/pdfrb/document/form.rb
740
811
  - lib/pdfrb/document/form_xobject.rb
812
+ - lib/pdfrb/document/graphics_state.rb
741
813
  - lib/pdfrb/document/images.rb
814
+ - lib/pdfrb/document/info.rb
815
+ - lib/pdfrb/document/layers.rb
742
816
  - lib/pdfrb/document/metadata.rb
743
817
  - lib/pdfrb/document/outline.rb
818
+ - lib/pdfrb/document/output_intents.rb
819
+ - lib/pdfrb/document/page_labels.rb
744
820
  - lib/pdfrb/document/pages.rb
821
+ - lib/pdfrb/document/portfolio.rb
822
+ - lib/pdfrb/document/shadings.rb
823
+ - lib/pdfrb/document/stamps.rb
824
+ - lib/pdfrb/document/structure.rb
745
825
  - lib/pdfrb/encryption.rb
746
826
  - lib/pdfrb/encryption/aes.rb
827
+ - lib/pdfrb/encryption/identity.rb
747
828
  - lib/pdfrb/encryption/password_verification.rb
748
829
  - lib/pdfrb/encryption/rc4.rb
749
830
  - lib/pdfrb/encryption/security_handler.rb
@@ -753,10 +834,16 @@ files:
753
834
  - lib/pdfrb/filter/ascii_85_decode.rb
754
835
  - lib/pdfrb/filter/ascii_hex_decode.rb
755
836
  - lib/pdfrb/filter/base.rb
837
+ - lib/pdfrb/filter/brotli_decode.rb
838
+ - lib/pdfrb/filter/ccitt_fax_decode.rb
756
839
  - lib/pdfrb/filter/crypt.rb
840
+ - lib/pdfrb/filter/dct_decode.rb
757
841
  - lib/pdfrb/filter/flate_decode.rb
842
+ - lib/pdfrb/filter/jbig2_decode.rb
843
+ - lib/pdfrb/filter/jpx_decode.rb
758
844
  - lib/pdfrb/filter/lzw_decode.rb
759
845
  - lib/pdfrb/filter/passthrough_filters.rb
846
+ - lib/pdfrb/filter/png_predictor.rb
760
847
  - lib/pdfrb/filter/run_length_decode.rb
761
848
  - lib/pdfrb/font.rb
762
849
  - lib/pdfrb/font/afm_parser.rb
@@ -770,24 +857,61 @@ files:
770
857
  - lib/pdfrb/font/encoding/win_ansi_encoding.rb
771
858
  - lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb
772
859
  - lib/pdfrb/font/glyph_list.rb
860
+ - lib/pdfrb/font/metrics_helper.rb
773
861
  - lib/pdfrb/font/true_type.rb
774
862
  - lib/pdfrb/font/true_type/cmap.rb
775
863
  - lib/pdfrb/font/true_type/file.rb
864
+ - lib/pdfrb/font/true_type/glyf.rb
776
865
  - lib/pdfrb/font/true_type/head.rb
777
866
  - lib/pdfrb/font/true_type/hhea.rb
778
867
  - lib/pdfrb/font/true_type/hmtx.rb
868
+ - lib/pdfrb/font/true_type/kern.rb
869
+ - lib/pdfrb/font/true_type/loca.rb
870
+ - lib/pdfrb/font/true_type/maxp.rb
871
+ - lib/pdfrb/font/true_type/name.rb
779
872
  - lib/pdfrb/font/true_type/os2.rb
873
+ - lib/pdfrb/font/true_type/post.rb
780
874
  - lib/pdfrb/font/true_type/subsetter.rb
875
+ - lib/pdfrb/font/true_type/wrapper.rb
781
876
  - lib/pdfrb/font/type1.rb
782
877
  - lib/pdfrb/font/type1/font_metrics.rb
783
878
  - lib/pdfrb/font_loader.rb
879
+ - lib/pdfrb/font_loader/from_configuration.rb
880
+ - lib/pdfrb/font_loader/from_file.rb
881
+ - lib/pdfrb/font_loader/standard14.rb
784
882
  - lib/pdfrb/font_loader/true_type.rb
785
883
  - lib/pdfrb/font_loader/type1.rb
884
+ - lib/pdfrb/font_loader/variant_from_name.rb
885
+ - lib/pdfrb/font_resolver.rb
886
+ - lib/pdfrb/image.rb
887
+ - lib/pdfrb/image/audit.rb
888
+ - lib/pdfrb/image/downsampler.rb
786
889
  - lib/pdfrb/image_loader.rb
787
890
  - lib/pdfrb/image_loader/jpeg.rb
788
891
  - lib/pdfrb/image_loader/pdf.rb
789
892
  - lib/pdfrb/image_loader/png.rb
790
893
  - lib/pdfrb/importer.rb
894
+ - lib/pdfrb/layout.rb
895
+ - lib/pdfrb/layout/bidi.rb
896
+ - lib/pdfrb/layout/box.rb
897
+ - lib/pdfrb/layout/box_fitter.rb
898
+ - lib/pdfrb/layout/column_box.rb
899
+ - lib/pdfrb/layout/container_box.rb
900
+ - lib/pdfrb/layout/frame.rb
901
+ - lib/pdfrb/layout/image_box.rb
902
+ - lib/pdfrb/layout/inline_box.rb
903
+ - lib/pdfrb/layout/line.rb
904
+ - lib/pdfrb/layout/list_box.rb
905
+ - lib/pdfrb/layout/numeric_refinements.rb
906
+ - lib/pdfrb/layout/page_style.rb
907
+ - lib/pdfrb/layout/style.rb
908
+ - lib/pdfrb/layout/table_box.rb
909
+ - lib/pdfrb/layout/text_box.rb
910
+ - lib/pdfrb/layout/text_fragment.rb
911
+ - lib/pdfrb/layout/text_layouter.rb
912
+ - lib/pdfrb/linearization.rb
913
+ - lib/pdfrb/linearization/hint_stream.rb
914
+ - lib/pdfrb/linearization/writer.rb
791
915
  - lib/pdfrb/model.rb
792
916
  - lib/pdfrb/model/cos.rb
793
917
  - lib/pdfrb/model/cos/dictionary.rb
@@ -803,28 +927,130 @@ files:
803
927
  - lib/pdfrb/model/reference.rb
804
928
  - lib/pdfrb/model/type.rb
805
929
  - lib/pdfrb/model/type/action.rb
930
+ - lib/pdfrb/model/type/action_go_to_3d_view.rb
931
+ - lib/pdfrb/model/type/action_go_to_dp.rb
932
+ - lib/pdfrb/model/type/action_go_to_r.rb
933
+ - lib/pdfrb/model/type/action_goto.rb
934
+ - lib/pdfrb/model/type/action_hide.rb
935
+ - lib/pdfrb/model/type/action_import_data.rb
936
+ - lib/pdfrb/model/type/action_java_script.rb
937
+ - lib/pdfrb/model/type/action_launch.rb
938
+ - lib/pdfrb/model/type/action_movie.rb
939
+ - lib/pdfrb/model/type/action_named.rb
940
+ - lib/pdfrb/model/type/action_nop.rb
941
+ - lib/pdfrb/model/type/action_rendition.rb
942
+ - lib/pdfrb/model/type/action_reset_form.rb
943
+ - lib/pdfrb/model/type/action_rich_media_execute.rb
944
+ - lib/pdfrb/model/type/action_set_ocg_state.rb
945
+ - lib/pdfrb/model/type/action_set_state.rb
946
+ - lib/pdfrb/model/type/action_sound_action.rb
947
+ - lib/pdfrb/model/type/action_submit_form.rb
948
+ - lib/pdfrb/model/type/action_thread.rb
949
+ - lib/pdfrb/model/type/action_trans.rb
950
+ - lib/pdfrb/model/type/action_uri.rb
806
951
  - lib/pdfrb/model/type/af_embedded_file.rb
807
952
  - lib/pdfrb/model/type/af_file_specification.rb
808
953
  - lib/pdfrb/model/type/annotation.rb
954
+ - lib/pdfrb/model/type/appearance.rb
955
+ - lib/pdfrb/model/type/appearance_characteristics.rb
956
+ - lib/pdfrb/model/type/appearance_generator.rb
957
+ - lib/pdfrb/model/type/appearance_trap_net.rb
958
+ - lib/pdfrb/model/type/border_effect.rb
959
+ - lib/pdfrb/model/type/border_styling.rb
960
+ - lib/pdfrb/model/type/box_color_info.rb
961
+ - lib/pdfrb/model/type/box_style.rb
962
+ - lib/pdfrb/model/type/button.rb
963
+ - lib/pdfrb/model/type/cal_gray.rb
964
+ - lib/pdfrb/model/type/cal_rgb.rb
965
+ - lib/pdfrb/model/type/caret_annotation.rb
809
966
  - lib/pdfrb/model/type/catalog.rb
967
+ - lib/pdfrb/model/type/choice.rb
810
968
  - lib/pdfrb/model/type/cid_font.rb
969
+ - lib/pdfrb/model/type/cid_font_descriptor_metrics.rb
970
+ - lib/pdfrb/model/type/cid_system_info.rb
971
+ - lib/pdfrb/model/type/circle_annotation.rb
972
+ - lib/pdfrb/model/type/collection.rb
973
+ - lib/pdfrb/model/type/collection_field.rb
974
+ - lib/pdfrb/model/type/collection_item.rb
975
+ - lib/pdfrb/model/type/collection_schema.rb
976
+ - lib/pdfrb/model/type/collection_sort.rb
977
+ - lib/pdfrb/model/type/crypt_filter.rb
978
+ - lib/pdfrb/model/type/device_n.rb
979
+ - lib/pdfrb/model/type/device_n_mixing_hints.rb
980
+ - lib/pdfrb/model/type/device_n_process.rb
981
+ - lib/pdfrb/model/type/doc_mdp_transform_parameters.rb
982
+ - lib/pdfrb/model/type/document_security_store.rb
811
983
  - lib/pdfrb/model/type/embedded_file.rb
984
+ - lib/pdfrb/model/type/embedded_file_parameter.rb
812
985
  - lib/pdfrb/model/type/encryption_public_key.rb
813
986
  - lib/pdfrb/model/type/encryption_standard.rb
987
+ - lib/pdfrb/model/type/field_mdp_transform_parameters.rb
988
+ - lib/pdfrb/model/type/file_attachment_annotation.rb
989
+ - lib/pdfrb/model/type/file_spec_ef.rb
990
+ - lib/pdfrb/model/type/file_spec_rf.rb
814
991
  - lib/pdfrb/model/type/file_specification.rb
815
992
  - lib/pdfrb/model/type/file_trailer.rb
816
993
  - lib/pdfrb/model/type/font.rb
994
+ - lib/pdfrb/model/type/font_cid_type0.rb
995
+ - lib/pdfrb/model/type/font_cid_type2.rb
817
996
  - lib/pdfrb/model/type/font_descriptor.rb
997
+ - lib/pdfrb/model/type/font_descriptor_cid_type0.rb
998
+ - lib/pdfrb/model/type/font_descriptor_cid_type2.rb
999
+ - lib/pdfrb/model/type/font_encoding.rb
1000
+ - lib/pdfrb/model/type/font_file.rb
1001
+ - lib/pdfrb/model/type/font_file2.rb
1002
+ - lib/pdfrb/model/type/font_file3.rb
1003
+ - lib/pdfrb/model/type/font_multiple_master.rb
818
1004
  - lib/pdfrb/model/type/font_true_type.rb
819
1005
  - lib/pdfrb/model/type/font_type0.rb
820
1006
  - lib/pdfrb/model/type/font_type1.rb
821
1007
  - lib/pdfrb/model/type/font_type3.rb
1008
+ - lib/pdfrb/model/type/form_field.rb
1009
+ - lib/pdfrb/model/type/free_text_annotation.rb
1010
+ - lib/pdfrb/model/type/function.rb
1011
+ - lib/pdfrb/model/type/function_exponential.rb
1012
+ - lib/pdfrb/model/type/function_postscript.rb
1013
+ - lib/pdfrb/model/type/function_sampled.rb
1014
+ - lib/pdfrb/model/type/function_stitching.rb
1015
+ - lib/pdfrb/model/type/generic_appearance.rb
822
1016
  - lib/pdfrb/model/type/graphics_state_parameter.rb
1017
+ - lib/pdfrb/model/type/halftone.rb
1018
+ - lib/pdfrb/model/type/halftone_type1.rb
1019
+ - lib/pdfrb/model/type/halftone_type10.rb
1020
+ - lib/pdfrb/model/type/halftone_type16.rb
1021
+ - lib/pdfrb/model/type/halftone_type5.rb
1022
+ - lib/pdfrb/model/type/halftone_type6.rb
1023
+ - lib/pdfrb/model/type/highlight_annotation.rb
1024
+ - lib/pdfrb/model/type/icc_based_color_space.rb
1025
+ - lib/pdfrb/model/type/icon_fit.rb
1026
+ - lib/pdfrb/model/type/indexed.rb
823
1027
  - lib/pdfrb/model/type/info.rb
1028
+ - lib/pdfrb/model/type/ink_annotation.rb
824
1029
  - lib/pdfrb/model/type/interactive_form.rb
1030
+ - lib/pdfrb/model/type/interior_color.rb
1031
+ - lib/pdfrb/model/type/jbig2_globals.rb
1032
+ - lib/pdfrb/model/type/lab.rb
1033
+ - lib/pdfrb/model/type/line_annotation.rb
1034
+ - lib/pdfrb/model/type/line_ending_styling.rb
1035
+ - lib/pdfrb/model/type/link_annotation.rb
1036
+ - lib/pdfrb/model/type/link_appearance.rb
1037
+ - lib/pdfrb/model/type/mark_information.rb
1038
+ - lib/pdfrb/model/type/marked_content_reference.rb
1039
+ - lib/pdfrb/model/type/markup_annotation.rb
1040
+ - lib/pdfrb/model/type/mdp_dict.rb
1041
+ - lib/pdfrb/model/type/measure.rb
1042
+ - lib/pdfrb/model/type/media_clip.rb
1043
+ - lib/pdfrb/model/type/media_offset.rb
825
1044
  - lib/pdfrb/model/type/metadata.rb
1045
+ - lib/pdfrb/model/type/misc_helpers.rb
1046
+ - lib/pdfrb/model/type/movie.rb
826
1047
  - lib/pdfrb/model/type/names.rb
1048
+ - lib/pdfrb/model/type/namespace.rb
1049
+ - lib/pdfrb/model/type/object_reference.rb
827
1050
  - lib/pdfrb/model/type/object_stream.rb
1051
+ - lib/pdfrb/model/type/opt_content_ext.rb
1052
+ - lib/pdfrb/model/type/opt_content_page_element.rb
1053
+ - lib/pdfrb/model/type/optional_content_config.rb
828
1054
  - lib/pdfrb/model/type/optional_content_group.rb
829
1055
  - lib/pdfrb/model/type/optional_content_membership.rb
830
1056
  - lib/pdfrb/model/type/optional_content_properties.rb
@@ -832,10 +1058,84 @@ files:
832
1058
  - lib/pdfrb/model/type/outline_item.rb
833
1059
  - lib/pdfrb/model/type/output_intent.rb
834
1060
  - lib/pdfrb/model/type/page.rb
1061
+ - lib/pdfrb/model/type/page_label.rb
1062
+ - lib/pdfrb/model/type/page_piece_info.rb
835
1063
  - lib/pdfrb/model/type/page_tree_node.rb
1064
+ - lib/pdfrb/model/type/page_tree_node_root.rb
1065
+ - lib/pdfrb/model/type/pattern.rb
1066
+ - lib/pdfrb/model/type/pattern_shading.rb
1067
+ - lib/pdfrb/model/type/pattern_tiling.rb
1068
+ - lib/pdfrb/model/type/polygon_annotation.rb
1069
+ - lib/pdfrb/model/type/polygon_polyline.rb
1070
+ - lib/pdfrb/model/type/polyline_annotation.rb
1071
+ - lib/pdfrb/model/type/popup_annotation.rb
1072
+ - lib/pdfrb/model/type/printer_mark_annotation.rb
1073
+ - lib/pdfrb/model/type/redact_annotation.rb
1074
+ - lib/pdfrb/model/type/rendition.rb
836
1075
  - lib/pdfrb/model/type/resources.rb
1076
+ - lib/pdfrb/model/type/rich_media_activation.rb
1077
+ - lib/pdfrb/model/type/rich_media_animation.rb
1078
+ - lib/pdfrb/model/type/rich_media_annotation.rb
1079
+ - lib/pdfrb/model/type/rich_media_command.rb
1080
+ - lib/pdfrb/model/type/rich_media_configuration.rb
1081
+ - lib/pdfrb/model/type/rich_media_content.rb
1082
+ - lib/pdfrb/model/type/rich_media_cue_point.rb
1083
+ - lib/pdfrb/model/type/rich_media_deactivation.rb
1084
+ - lib/pdfrb/model/type/rich_media_instance.rb
1085
+ - lib/pdfrb/model/type/rich_media_presentation.rb
1086
+ - lib/pdfrb/model/type/rich_media_settings.rb
1087
+ - lib/pdfrb/model/type/rich_media_window.rb
1088
+ - lib/pdfrb/model/type/screen_annotation.rb
1089
+ - lib/pdfrb/model/type/separation.rb
1090
+ - lib/pdfrb/model/type/sig_field_lock.rb
1091
+ - lib/pdfrb/model/type/sig_field_seed_value.rb
1092
+ - lib/pdfrb/model/type/signature.rb
1093
+ - lib/pdfrb/model/type/signature_build.rb
1094
+ - lib/pdfrb/model/type/signature_field.rb
1095
+ - lib/pdfrb/model/type/software_identifier.rb
1096
+ - lib/pdfrb/model/type/sound.rb
1097
+ - lib/pdfrb/model/type/sound_annotation.rb
1098
+ - lib/pdfrb/model/type/square_annotation.rb
1099
+ - lib/pdfrb/model/type/square_circle.rb
1100
+ - lib/pdfrb/model/type/squiggly_annotation.rb
1101
+ - lib/pdfrb/model/type/stamp_annotation.rb
1102
+ - lib/pdfrb/model/type/strikeout_annotation.rb
837
1103
  - lib/pdfrb/model/type/struct_elem.rb
838
1104
  - lib/pdfrb/model/type/struct_tree_root.rb
1105
+ - lib/pdfrb/model/type/structure_attributes.rb
1106
+ - lib/pdfrb/model/type/structure_element_kid.rb
1107
+ - lib/pdfrb/model/type/text_annotation.rb
1108
+ - lib/pdfrb/model/type/text_appearance.rb
1109
+ - lib/pdfrb/model/type/text_field.rb
1110
+ - lib/pdfrb/model/type/text_markup_annotation.rb
1111
+ - lib/pdfrb/model/type/three_d_activation.rb
1112
+ - lib/pdfrb/model/type/three_d_animation_style.rb
1113
+ - lib/pdfrb/model/type/three_d_background.rb
1114
+ - lib/pdfrb/model/type/three_d_cross_section.rb
1115
+ - lib/pdfrb/model/type/three_d_lighting_scheme.rb
1116
+ - lib/pdfrb/model/type/three_d_measure.rb
1117
+ - lib/pdfrb/model/type/three_d_measure_3dc.rb
1118
+ - lib/pdfrb/model/type/three_d_measure_ad3.rb
1119
+ - lib/pdfrb/model/type/three_d_measure_ld3.rb
1120
+ - lib/pdfrb/model/type/three_d_measure_pd3.rb
1121
+ - lib/pdfrb/model/type/three_d_measure_rd3.rb
1122
+ - lib/pdfrb/model/type/three_d_node.rb
1123
+ - lib/pdfrb/model/type/three_d_reference.rb
1124
+ - lib/pdfrb/model/type/three_d_render_mode.rb
1125
+ - lib/pdfrb/model/type/three_d_stream.rb
1126
+ - lib/pdfrb/model/type/three_d_units.rb
1127
+ - lib/pdfrb/model/type/three_d_view.rb
1128
+ - lib/pdfrb/model/type/to_unicode_cmap_stream.rb
1129
+ - lib/pdfrb/model/type/transition.rb
1130
+ - lib/pdfrb/model/type/underline_annotation.rb
1131
+ - lib/pdfrb/model/type/ur_transform_parameters.rb
1132
+ - lib/pdfrb/model/type/uri_dict.rb
1133
+ - lib/pdfrb/model/type/url_alias.rb
1134
+ - lib/pdfrb/model/type/variable_text_field.rb
1135
+ - lib/pdfrb/model/type/viewer_preferences.rb
1136
+ - lib/pdfrb/model/type/watermark_annotation.rb
1137
+ - lib/pdfrb/model/type/widget_annotation.rb
1138
+ - lib/pdfrb/model/type/widget_appearance.rb
839
1139
  - lib/pdfrb/model/type/xobject_form.rb
840
1140
  - lib/pdfrb/model/type/xobject_image.rb
841
1141
  - lib/pdfrb/model/type/xref_stream.rb
@@ -856,13 +1156,26 @@ files:
856
1156
  - lib/pdfrb/source/xref_stream_reader.rb
857
1157
  - lib/pdfrb/source/xref_table_reader.rb
858
1158
  - lib/pdfrb/task.rb
1159
+ - lib/pdfrb/task/benchmark.rb
859
1160
  - lib/pdfrb/task/extract_images.rb
860
1161
  - lib/pdfrb/task/extract_text.rb
1162
+ - lib/pdfrb/task/generate_corpus.rb
1163
+ - lib/pdfrb/task/memory_profile.rb
861
1164
  - lib/pdfrb/task/merge.rb
862
1165
  - lib/pdfrb/task/optimize.rb
1166
+ - lib/pdfrb/task/regenerate_appearances.rb
1167
+ - lib/pdfrb/test_utils.rb
1168
+ - lib/pdfrb/validator.rb
863
1169
  - lib/pdfrb/version.rb
864
1170
  - lib/pdfrb/writer.rb
1171
+ - lib/pdfrb/xmp.rb
1172
+ - lib/pdfrb/xmp/packet.rb
1173
+ - lib/pdfrb/xmp/schemas.rb
865
1174
  - lib/pdfrb/xref_section.rb
1175
+ - pdfrb.gemspec
1176
+ - script/apply_fixes.sh
1177
+ - script/make_jpeg_fixture.rb
1178
+ - script/make_png_fixture.rb
866
1179
  homepage: https://github.com/claricle/pdfrb
867
1180
  licenses:
868
1181
  - BSD-2-Clause
@@ -872,6 +1185,7 @@ metadata:
872
1185
  changelog_uri: https://github.com/claricle/pdfrb/blob/main/CHANGELOG.md
873
1186
  bug_tracker_uri: https://github.com/claricle/pdfrb/issues
874
1187
  rubygems_mfa_required: 'true'
1188
+ post_install_message:
875
1189
  rdoc_options: []
876
1190
  require_paths:
877
1191
  - lib
@@ -879,14 +1193,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
879
1193
  requirements:
880
1194
  - - ">="
881
1195
  - !ruby/object:Gem::Version
882
- version: 3.0.0
1196
+ version: 3.2.0
883
1197
  required_rubygems_version: !ruby/object:Gem::Requirement
884
1198
  requirements:
885
1199
  - - ">="
886
1200
  - !ruby/object:Gem::Version
887
1201
  version: '0'
888
1202
  requirements: []
889
- rubygems_version: 4.0.16
1203
+ rubygems_version: 3.5.22
1204
+ signing_key:
890
1205
  specification_version: 4
891
1206
  summary: Pure-Ruby PDF parser, Arlington-model-driven domain model, and serializer
892
1207
  test_files: []