hexapdf 1.0.3 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/LICENSE +1 -1
- data/examples/009-text_layouter_alignment.rb +4 -0
- data/examples/010-text_layouter_inline_boxes.rb +4 -0
- data/examples/011-text_layouter_line_wrapping.rb +4 -0
- data/examples/012-text_layouter_styling.rb +9 -4
- data/examples/013-text_layouter_shapes.rb +5 -0
- data/examples/015-boxes.rb +3 -0
- data/examples/016-frame_automatic_box_placement.rb +3 -0
- data/examples/017-frame_text_flow.rb +3 -0
- data/examples/{028-frame_mask_mode.rb → 028-composer_mask_mode.rb} +3 -3
- data/lib/hexapdf/cli/batch.rb +1 -1
- data/lib/hexapdf/cli/command.rb +2 -2
- data/lib/hexapdf/cli/files.rb +1 -1
- data/lib/hexapdf/cli/fonts.rb +1 -1
- data/lib/hexapdf/cli/form.rb +1 -1
- data/lib/hexapdf/cli/image2pdf.rb +1 -1
- data/lib/hexapdf/cli/images.rb +1 -1
- data/lib/hexapdf/cli/info.rb +1 -1
- data/lib/hexapdf/cli/inspect.rb +1 -1
- data/lib/hexapdf/cli/merge.rb +1 -1
- data/lib/hexapdf/cli/modify.rb +1 -1
- data/lib/hexapdf/cli/optimize.rb +1 -1
- data/lib/hexapdf/cli/split.rb +1 -1
- data/lib/hexapdf/cli/usage.rb +1 -1
- data/lib/hexapdf/cli/watermark.rb +1 -1
- data/lib/hexapdf/cli.rb +1 -1
- data/lib/hexapdf/composer.rb +1 -1
- data/lib/hexapdf/configuration.rb +6 -1
- data/lib/hexapdf/content/canvas.rb +1 -1
- data/lib/hexapdf/content/canvas_composer.rb +1 -1
- data/lib/hexapdf/content/color_space.rb +1 -1
- data/lib/hexapdf/content/graphic_object/arc.rb +1 -1
- data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +1 -1
- data/lib/hexapdf/content/graphic_object/geom2d.rb +1 -1
- data/lib/hexapdf/content/graphic_object/solid_arc.rb +1 -1
- data/lib/hexapdf/content/graphic_object.rb +1 -1
- data/lib/hexapdf/content/graphics_state.rb +1 -1
- data/lib/hexapdf/content/operator.rb +1 -1
- data/lib/hexapdf/content/parser.rb +22 -25
- data/lib/hexapdf/content/processor.rb +1 -1
- data/lib/hexapdf/content/transformation_matrix.rb +1 -1
- data/lib/hexapdf/content.rb +1 -1
- data/lib/hexapdf/data_dir.rb +1 -1
- data/lib/hexapdf/dictionary.rb +1 -1
- data/lib/hexapdf/dictionary_fields.rb +1 -1
- data/lib/hexapdf/digital_signature/cms_handler.rb +1 -1
- data/lib/hexapdf/digital_signature/handler.rb +1 -1
- data/lib/hexapdf/digital_signature/pkcs1_handler.rb +1 -1
- data/lib/hexapdf/digital_signature/signature.rb +1 -1
- data/lib/hexapdf/digital_signature/signatures.rb +1 -1
- data/lib/hexapdf/digital_signature/signing/default_handler.rb +1 -1
- data/lib/hexapdf/digital_signature/signing/signed_data_creator.rb +1 -1
- data/lib/hexapdf/digital_signature/signing/timestamp_handler.rb +1 -1
- data/lib/hexapdf/digital_signature/signing.rb +1 -1
- data/lib/hexapdf/digital_signature/verification_result.rb +1 -1
- data/lib/hexapdf/digital_signature.rb +1 -1
- data/lib/hexapdf/document/destinations.rb +1 -1
- data/lib/hexapdf/document/files.rb +1 -1
- data/lib/hexapdf/document/fonts.rb +1 -1
- data/lib/hexapdf/document/images.rb +1 -1
- data/lib/hexapdf/document/layout.rb +1 -1
- data/lib/hexapdf/document/metadata.rb +1 -1
- data/lib/hexapdf/document/pages.rb +1 -1
- data/lib/hexapdf/document.rb +1 -1
- data/lib/hexapdf/encryption/aes.rb +1 -1
- data/lib/hexapdf/encryption/arc4.rb +1 -1
- data/lib/hexapdf/encryption/fast_aes.rb +1 -1
- data/lib/hexapdf/encryption/fast_arc4.rb +1 -1
- data/lib/hexapdf/encryption/identity.rb +1 -1
- data/lib/hexapdf/encryption/ruby_aes.rb +1 -1
- data/lib/hexapdf/encryption/ruby_arc4.rb +1 -1
- data/lib/hexapdf/encryption/security_handler.rb +1 -1
- data/lib/hexapdf/encryption/standard_security_handler.rb +1 -1
- data/lib/hexapdf/encryption.rb +1 -1
- data/lib/hexapdf/error.rb +1 -1
- data/lib/hexapdf/filter/ascii85_decode.rb +1 -1
- data/lib/hexapdf/filter/ascii_hex_decode.rb +1 -1
- data/lib/hexapdf/filter/crypt.rb +1 -1
- data/lib/hexapdf/filter/encryption.rb +1 -1
- data/lib/hexapdf/filter/flate_decode.rb +1 -1
- data/lib/hexapdf/filter/lzw_decode.rb +1 -1
- data/lib/hexapdf/filter/pass_through.rb +1 -1
- data/lib/hexapdf/filter/predictor.rb +1 -1
- data/lib/hexapdf/filter/run_length_decode.rb +1 -1
- data/lib/hexapdf/filter.rb +1 -1
- data/lib/hexapdf/font/cmap/parser.rb +1 -1
- data/lib/hexapdf/font/cmap/writer.rb +1 -1
- data/lib/hexapdf/font/cmap.rb +1 -1
- data/lib/hexapdf/font/encoding/base.rb +1 -1
- data/lib/hexapdf/font/encoding/difference_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/glyph_list.rb +1 -1
- data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/standard_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/symbol_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/win_ansi_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding.rb +1 -1
- data/lib/hexapdf/font/invalid_glyph.rb +1 -1
- data/lib/hexapdf/font/true_type/builder.rb +1 -1
- data/lib/hexapdf/font/true_type/font.rb +1 -1
- data/lib/hexapdf/font/true_type/optimizer.rb +1 -1
- data/lib/hexapdf/font/true_type/subsetter.rb +1 -1
- data/lib/hexapdf/font/true_type/table/cmap.rb +1 -1
- data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +1 -1
- data/lib/hexapdf/font/true_type/table/directory.rb +1 -1
- data/lib/hexapdf/font/true_type/table/glyf.rb +1 -1
- data/lib/hexapdf/font/true_type/table/head.rb +1 -1
- data/lib/hexapdf/font/true_type/table/hhea.rb +1 -1
- data/lib/hexapdf/font/true_type/table/hmtx.rb +1 -1
- data/lib/hexapdf/font/true_type/table/kern.rb +1 -1
- data/lib/hexapdf/font/true_type/table/loca.rb +1 -1
- data/lib/hexapdf/font/true_type/table/maxp.rb +1 -1
- data/lib/hexapdf/font/true_type/table/name.rb +1 -1
- data/lib/hexapdf/font/true_type/table/os2.rb +1 -1
- data/lib/hexapdf/font/true_type/table/post.rb +1 -1
- data/lib/hexapdf/font/true_type/table.rb +1 -1
- data/lib/hexapdf/font/true_type.rb +1 -1
- data/lib/hexapdf/font/true_type_wrapper.rb +1 -1
- data/lib/hexapdf/font/type1/afm_parser.rb +1 -1
- data/lib/hexapdf/font/type1/character_metrics.rb +1 -1
- data/lib/hexapdf/font/type1/font.rb +1 -1
- data/lib/hexapdf/font/type1/font_metrics.rb +1 -1
- data/lib/hexapdf/font/type1/pfb_parser.rb +1 -1
- data/lib/hexapdf/font/type1.rb +1 -1
- data/lib/hexapdf/font/type1_wrapper.rb +1 -1
- data/lib/hexapdf/font_loader/from_configuration.rb +1 -1
- data/lib/hexapdf/font_loader/from_file.rb +1 -1
- data/lib/hexapdf/font_loader/standard14.rb +1 -1
- data/lib/hexapdf/font_loader/variant_from_name.rb +1 -1
- data/lib/hexapdf/font_loader.rb +1 -1
- data/lib/hexapdf/image_loader/jpeg.rb +1 -1
- data/lib/hexapdf/image_loader/pdf.rb +1 -1
- data/lib/hexapdf/image_loader/png.rb +1 -1
- data/lib/hexapdf/image_loader.rb +1 -1
- data/lib/hexapdf/importer.rb +1 -1
- data/lib/hexapdf/layout/box.rb +1 -1
- data/lib/hexapdf/layout/box_fitter.rb +1 -1
- data/lib/hexapdf/layout/column_box.rb +1 -1
- data/lib/hexapdf/layout/container_box.rb +1 -1
- data/lib/hexapdf/layout/frame.rb +1 -1
- data/lib/hexapdf/layout/image_box.rb +1 -1
- data/lib/hexapdf/layout/inline_box.rb +1 -1
- data/lib/hexapdf/layout/line.rb +1 -1
- data/lib/hexapdf/layout/list_box.rb +1 -1
- data/lib/hexapdf/layout/numeric_refinements.rb +1 -1
- data/lib/hexapdf/layout/page_style.rb +1 -1
- data/lib/hexapdf/layout/style.rb +4 -2
- data/lib/hexapdf/layout/table_box.rb +9 -2
- data/lib/hexapdf/layout/text_box.rb +1 -1
- data/lib/hexapdf/layout/text_fragment.rb +11 -1
- data/lib/hexapdf/layout/text_layouter.rb +1 -1
- data/lib/hexapdf/layout/text_shaper.rb +1 -1
- data/lib/hexapdf/layout/width_from_polygon.rb +1 -1
- data/lib/hexapdf/layout.rb +1 -1
- data/lib/hexapdf/name_tree_node.rb +1 -1
- data/lib/hexapdf/number_tree_node.rb +1 -1
- data/lib/hexapdf/object.rb +1 -1
- data/lib/hexapdf/parser.rb +1 -1
- data/lib/hexapdf/pdf_array.rb +1 -1
- data/lib/hexapdf/rectangle.rb +1 -1
- data/lib/hexapdf/reference.rb +1 -1
- data/lib/hexapdf/revision.rb +1 -1
- data/lib/hexapdf/revisions.rb +1 -1
- data/lib/hexapdf/serializer.rb +1 -1
- data/lib/hexapdf/stream.rb +1 -1
- data/lib/hexapdf/task/dereference.rb +1 -1
- data/lib/hexapdf/task/merge_acro_form.rb +1 -1
- data/lib/hexapdf/task/optimize.rb +1 -1
- data/lib/hexapdf/task/pdfa.rb +1 -1
- data/lib/hexapdf/task.rb +1 -1
- data/lib/hexapdf/test_utils.rb +1 -1
- data/lib/hexapdf/tokenizer.rb +49 -46
- data/lib/hexapdf/type/acro_form/appearance_generator.rb +1 -1
- data/lib/hexapdf/type/acro_form/button_field.rb +1 -1
- data/lib/hexapdf/type/acro_form/choice_field.rb +1 -1
- data/lib/hexapdf/type/acro_form/field.rb +1 -1
- data/lib/hexapdf/type/acro_form/form.rb +1 -1
- data/lib/hexapdf/type/acro_form/java_script_actions.rb +1 -1
- data/lib/hexapdf/type/acro_form/signature_field.rb +1 -1
- data/lib/hexapdf/type/acro_form/text_field.rb +1 -1
- data/lib/hexapdf/type/acro_form/variable_text_field.rb +1 -1
- data/lib/hexapdf/type/acro_form.rb +1 -1
- data/lib/hexapdf/type/action.rb +1 -1
- data/lib/hexapdf/type/actions/go_to.rb +1 -1
- data/lib/hexapdf/type/actions/go_to_r.rb +1 -1
- data/lib/hexapdf/type/actions/launch.rb +1 -1
- data/lib/hexapdf/type/actions/set_ocg_state.rb +1 -1
- data/lib/hexapdf/type/actions/uri.rb +1 -1
- data/lib/hexapdf/type/actions.rb +1 -1
- data/lib/hexapdf/type/annotation.rb +1 -1
- data/lib/hexapdf/type/annotations/link.rb +1 -1
- data/lib/hexapdf/type/annotations/markup_annotation.rb +1 -1
- data/lib/hexapdf/type/annotations/text.rb +1 -1
- data/lib/hexapdf/type/annotations/widget.rb +1 -1
- data/lib/hexapdf/type/annotations.rb +1 -1
- data/lib/hexapdf/type/catalog.rb +2 -2
- data/lib/hexapdf/type/cid_font.rb +2 -2
- data/lib/hexapdf/type/cmap.rb +1 -1
- data/lib/hexapdf/type/embedded_file.rb +1 -1
- data/lib/hexapdf/type/file_specification.rb +1 -1
- data/lib/hexapdf/type/font.rb +1 -1
- data/lib/hexapdf/type/font_descriptor.rb +1 -1
- data/lib/hexapdf/type/font_simple.rb +1 -1
- data/lib/hexapdf/type/font_true_type.rb +1 -1
- data/lib/hexapdf/type/font_type0.rb +1 -1
- data/lib/hexapdf/type/font_type1.rb +1 -1
- data/lib/hexapdf/type/font_type3.rb +1 -1
- data/lib/hexapdf/type/form.rb +1 -1
- data/lib/hexapdf/type/graphics_state_parameter.rb +1 -1
- data/lib/hexapdf/type/icon_fit.rb +1 -1
- data/lib/hexapdf/type/image.rb +1 -1
- data/lib/hexapdf/type/info.rb +1 -1
- data/lib/hexapdf/type/mark_information.rb +1 -1
- data/lib/hexapdf/type/marked_content_reference.rb +59 -0
- data/lib/hexapdf/type/metadata.rb +1 -1
- data/lib/hexapdf/type/names.rb +1 -1
- data/lib/hexapdf/type/namespace.rb +57 -0
- data/lib/hexapdf/type/object_reference.rb +57 -0
- data/lib/hexapdf/type/object_stream.rb +1 -1
- data/lib/hexapdf/type/optional_content_configuration.rb +1 -1
- data/lib/hexapdf/type/optional_content_group.rb +1 -1
- data/lib/hexapdf/type/optional_content_membership.rb +1 -1
- data/lib/hexapdf/type/optional_content_properties.rb +1 -1
- data/lib/hexapdf/type/outline.rb +1 -1
- data/lib/hexapdf/type/outline_item.rb +1 -1
- data/lib/hexapdf/type/output_intent.rb +1 -1
- data/lib/hexapdf/type/page.rb +1 -1
- data/lib/hexapdf/type/page_label.rb +1 -1
- data/lib/hexapdf/type/page_tree_node.rb +1 -1
- data/lib/hexapdf/type/resources.rb +7 -3
- data/lib/hexapdf/type/struct_elem.rb +72 -0
- data/lib/hexapdf/type/struct_tree_root.rb +64 -0
- data/lib/hexapdf/type/trailer.rb +1 -1
- data/lib/hexapdf/type/viewer_preferences.rb +1 -1
- data/lib/hexapdf/type/xref_stream.rb +1 -1
- data/lib/hexapdf/type.rb +6 -1
- data/lib/hexapdf/utils/bit_field.rb +1 -1
- data/lib/hexapdf/utils/bit_stream.rb +1 -1
- data/lib/hexapdf/utils/graphics_helpers.rb +1 -1
- data/lib/hexapdf/utils/lru_cache.rb +1 -1
- data/lib/hexapdf/utils/math_helpers.rb +1 -1
- data/lib/hexapdf/utils/object_hash.rb +1 -1
- data/lib/hexapdf/utils/pdf_doc_encoding.rb +1 -1
- data/lib/hexapdf/utils/sorted_tree_node.rb +1 -1
- data/lib/hexapdf/utils.rb +1 -1
- data/lib/hexapdf/version.rb +2 -2
- data/lib/hexapdf/writer.rb +1 -1
- data/lib/hexapdf/xref_section.rb +1 -1
- data/lib/hexapdf.rb +1 -1
- data/test/hexapdf/common_tokenizer_tests.rb +0 -5
- data/test/hexapdf/layout/test_box.rb +0 -2
- data/test/hexapdf/layout/test_style.rb +0 -10
- data/test/hexapdf/layout/test_table_box.rb +0 -15
- data/test/hexapdf/layout/test_text_box.rb +0 -6
- data/test/hexapdf/type/test_font_type1.rb +1 -1
- data/test/hexapdf/type/test_resources.rb +3 -1
- data/test/test_helper.rb +1 -0
- metadata +23 -7
data/lib/hexapdf/version.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-
|
|
7
|
+
# Copyright (C) 2014-2025 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
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
module HexaPDF
|
|
38
38
|
|
|
39
39
|
# The version of HexaPDF.
|
|
40
|
-
VERSION = '1.0
|
|
40
|
+
VERSION = '1.1.0'
|
|
41
41
|
|
|
42
42
|
end
|
data/lib/hexapdf/writer.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-
|
|
7
|
+
# Copyright (C) 2014-2025 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/xref_section.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-
|
|
7
|
+
# Copyright (C) 2014-2025 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.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-
|
|
7
|
+
# Copyright (C) 2014-2025 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
|
|
@@ -126,11 +126,6 @@ module CommonTokenizerTests
|
|
|
126
126
|
assert(token.kind_of?(HexaPDF::Tokenizer::Token))
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
it "next_token: should not fail when reading super long numbers" do
|
|
130
|
-
create_tokenizer("1" + "0" * 10_000)
|
|
131
|
-
assert_equal(10**10_000, @tokenizer.next_token)
|
|
132
|
-
end
|
|
133
|
-
|
|
134
129
|
it "next_object: works for all PDF object types, including array and dictionary" do
|
|
135
130
|
create_tokenizer(<<-EOF.chomp.gsub(/^ {8}/, ''))
|
|
136
131
|
true false null 123 34.5 (string) <4E6F76> /Name
|
|
@@ -270,8 +270,6 @@ describe HexaPDF::Layout::Box do
|
|
|
270
270
|
[:restore_graphics_state],
|
|
271
271
|
[:save_graphics_state],
|
|
272
272
|
[:set_line_width, [5]],
|
|
273
|
-
[:append_rectangle, [5, 5, 150, 130]],
|
|
274
|
-
[:clip_path_non_zero], [:end_path],
|
|
275
273
|
[:append_rectangle, [7.5, 7.5, 145, 125]],
|
|
276
274
|
[:stroke_path],
|
|
277
275
|
[:restore_graphics_state],
|
|
@@ -199,8 +199,6 @@ describe HexaPDF::Layout::Style::Border do
|
|
|
199
199
|
assert_operators(@canvas.contents, [[:save_graphics_state],
|
|
200
200
|
[:set_device_gray_stroking_color, [0.5]],
|
|
201
201
|
[:set_line_width, [10]],
|
|
202
|
-
[:append_rectangle, [0, 0, 100, 100]],
|
|
203
|
-
[:clip_path_non_zero], [:end_path],
|
|
204
202
|
[:append_rectangle, [5, 5, 90, 90]],
|
|
205
203
|
[:stroke_path],
|
|
206
204
|
[:restore_graphics_state]])
|
|
@@ -213,8 +211,6 @@ describe HexaPDF::Layout::Style::Border do
|
|
|
213
211
|
[:set_device_gray_stroking_color, [0.5]],
|
|
214
212
|
[:set_line_width, [10]],
|
|
215
213
|
[:set_line_cap_style, [2]],
|
|
216
|
-
[:append_rectangle, [0, 0, 200, 300]],
|
|
217
|
-
[:clip_path_non_zero], [:end_path],
|
|
218
214
|
[:set_line_dash_pattern, [[10, 20], 25]],
|
|
219
215
|
[:move_to, [0, 295]], [:line_to, [200, 295]],
|
|
220
216
|
[:move_to, [200, 5]], [:line_to, [0, 5]],
|
|
@@ -234,8 +230,6 @@ describe HexaPDF::Layout::Style::Border do
|
|
|
234
230
|
[:set_device_gray_stroking_color, [0.5]],
|
|
235
231
|
[:set_line_width, [10]],
|
|
236
232
|
[:set_line_cap_style, [1]],
|
|
237
|
-
[:append_rectangle, [0, 0, 200, 300]],
|
|
238
|
-
[:clip_path_non_zero], [:end_path],
|
|
239
233
|
[:set_line_dash_pattern, [[10, 20], 25]],
|
|
240
234
|
[:move_to, [0, 295]], [:line_to, [200, 295]],
|
|
241
235
|
[:move_to, [200, 5]], [:line_to, [0, 5]],
|
|
@@ -255,8 +249,6 @@ describe HexaPDF::Layout::Style::Border do
|
|
|
255
249
|
[:set_device_gray_stroking_color, [0.5]],
|
|
256
250
|
[:set_line_width, [10]],
|
|
257
251
|
[:set_line_cap_style, [1]],
|
|
258
|
-
[:append_rectangle, [0, 0, 100, 200]],
|
|
259
|
-
[:clip_path_non_zero], [:end_path],
|
|
260
252
|
[:set_line_dash_pattern, [[0, 18], 13]],
|
|
261
253
|
[:move_to, [0, 195]], [:line_to, [100, 195]],
|
|
262
254
|
[:move_to, [100, 5]], [:line_to, [0, 5]],
|
|
@@ -275,8 +267,6 @@ describe HexaPDF::Layout::Style::Border do
|
|
|
275
267
|
assert_operators(@canvas.contents, [[:save_graphics_state],
|
|
276
268
|
[:set_device_gray_stroking_color, [0.5]],
|
|
277
269
|
[:set_line_width, [10]],
|
|
278
|
-
[:append_rectangle, [-5, -5, 110, 110]],
|
|
279
|
-
[:clip_path_non_zero], [:end_path],
|
|
280
270
|
[:append_rectangle, [0, 0, 100, 100]],
|
|
281
271
|
[:stroke_path],
|
|
282
272
|
[:restore_graphics_state]])
|
|
@@ -143,9 +143,6 @@ describe HexaPDF::Layout::TableBox::Cell do
|
|
|
143
143
|
box.fit(100, 100, @frame)
|
|
144
144
|
box.draw(@canvas, 10, 75)
|
|
145
145
|
operators = [[:save_graphics_state],
|
|
146
|
-
[:append_rectangle, [9.5, 74.5, 101.0, 38.0]],
|
|
147
|
-
[:clip_path_non_zero],
|
|
148
|
-
[:end_path],
|
|
149
146
|
[:append_rectangle, [10.0, 75.0, 100.0, 37.0]],
|
|
150
147
|
[:stroke_path],
|
|
151
148
|
[:restore_graphics_state],
|
|
@@ -674,9 +671,6 @@ describe HexaPDF::Layout::TableBox do
|
|
|
674
671
|
box.fit(100, 100, @frame)
|
|
675
672
|
box.draw(@canvas, 20, 10)
|
|
676
673
|
operators = [[:save_graphics_state],
|
|
677
|
-
[:append_rectangle, [20.0, 32.0, 50.5, 23.0]],
|
|
678
|
-
[:clip_path_non_zero],
|
|
679
|
-
[:end_path],
|
|
680
674
|
[:append_rectangle, [20.5, 32.5, 49.5, 22.0]],
|
|
681
675
|
[:stroke_path],
|
|
682
676
|
[:restore_graphics_state],
|
|
@@ -686,9 +680,6 @@ describe HexaPDF::Layout::TableBox do
|
|
|
686
680
|
[:end_path],
|
|
687
681
|
[:restore_graphics_state],
|
|
688
682
|
[:save_graphics_state],
|
|
689
|
-
[:append_rectangle, [69.5, 32.0, 50.5, 23.0]],
|
|
690
|
-
[:clip_path_non_zero],
|
|
691
|
-
[:end_path],
|
|
692
683
|
[:append_rectangle, [70.0, 32.5, 49.5, 22.0]],
|
|
693
684
|
[:stroke_path],
|
|
694
685
|
[:restore_graphics_state],
|
|
@@ -698,9 +689,6 @@ describe HexaPDF::Layout::TableBox do
|
|
|
698
689
|
[:end_path],
|
|
699
690
|
[:restore_graphics_state],
|
|
700
691
|
[:save_graphics_state],
|
|
701
|
-
[:append_rectangle, [20.0, 10.0, 50.5, 23.0]],
|
|
702
|
-
[:clip_path_non_zero],
|
|
703
|
-
[:end_path],
|
|
704
692
|
[:append_rectangle, [20.5, 10.5, 49.5, 22.0]],
|
|
705
693
|
[:stroke_path],
|
|
706
694
|
[:restore_graphics_state],
|
|
@@ -710,9 +698,6 @@ describe HexaPDF::Layout::TableBox do
|
|
|
710
698
|
[:end_path],
|
|
711
699
|
[:restore_graphics_state],
|
|
712
700
|
[:save_graphics_state],
|
|
713
|
-
[:append_rectangle, [69.5, 10.0, 50.5, 23.0]],
|
|
714
|
-
[:clip_path_non_zero],
|
|
715
|
-
[:end_path],
|
|
716
701
|
[:append_rectangle, [70.0, 10.5, 49.5, 22.0]],
|
|
717
702
|
[:stroke_path],
|
|
718
703
|
[:restore_graphics_state],
|
|
@@ -178,9 +178,6 @@ describe HexaPDF::Layout::TextBox do
|
|
|
178
178
|
assert_operators(@canvas.contents, [[:save_graphics_state],
|
|
179
179
|
[:restore_graphics_state],
|
|
180
180
|
[:save_graphics_state],
|
|
181
|
-
[:append_rectangle, [5, 10, 10, 10]],
|
|
182
|
-
[:clip_path_non_zero],
|
|
183
|
-
[:end_path],
|
|
184
181
|
[:append_rectangle, [5.5, 10.5, 9.0, 9.0]],
|
|
185
182
|
[:stroke_path],
|
|
186
183
|
[:restore_graphics_state],
|
|
@@ -194,9 +191,6 @@ describe HexaPDF::Layout::TextBox do
|
|
|
194
191
|
box.fit(60, 100, @frame)
|
|
195
192
|
box.draw(@canvas, 40, 88)
|
|
196
193
|
assert_operators(@canvas.contents, [[:save_graphics_state],
|
|
197
|
-
[:append_rectangle, [40, 88, 12, 12]],
|
|
198
|
-
[:clip_path_non_zero],
|
|
199
|
-
[:end_path],
|
|
200
194
|
[:append_rectangle, [40.5, 88.5, 11.0, 11.0]],
|
|
201
195
|
[:stroke_path],
|
|
202
196
|
[:restore_graphics_state],
|
|
@@ -196,7 +196,9 @@ describe HexaPDF::Type::Resources do
|
|
|
196
196
|
describe "validation" do
|
|
197
197
|
it "handles an invalid ProcSet containing a single value instead of an array" do
|
|
198
198
|
@res[:ProcSet] = :PDF
|
|
199
|
-
|
|
199
|
+
msg = nil
|
|
200
|
+
@res.validate {|message, *| msg = message unless msg }
|
|
201
|
+
assert_match(/single value instead of an Array/, msg)
|
|
200
202
|
assert_equal([:PDF], @res[:ProcSet].value)
|
|
201
203
|
end
|
|
202
204
|
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hexapdf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas Leitner
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-01-08 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: cmdparse
|
|
@@ -64,6 +63,20 @@ dependencies:
|
|
|
64
63
|
- - ">="
|
|
65
64
|
- !ruby/object:Gem::Version
|
|
66
65
|
version: 2.2.1
|
|
66
|
+
- !ruby/object:Gem::Dependency
|
|
67
|
+
name: strscan
|
|
68
|
+
requirement: !ruby/object:Gem::Requirement
|
|
69
|
+
requirements:
|
|
70
|
+
- - ">="
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: 3.1.2
|
|
73
|
+
type: :runtime
|
|
74
|
+
prerelease: false
|
|
75
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: 3.1.2
|
|
67
80
|
- !ruby/object:Gem::Dependency
|
|
68
81
|
name: kramdown
|
|
69
82
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -303,7 +316,7 @@ files:
|
|
|
303
316
|
- examples/025-table_box.rb
|
|
304
317
|
- examples/026-optional_content.rb
|
|
305
318
|
- examples/027-composer_optional_content.rb
|
|
306
|
-
- examples/028-
|
|
319
|
+
- examples/028-composer_mask_mode.rb
|
|
307
320
|
- examples/029-composer_fallback_fonts.rb
|
|
308
321
|
- examples/030-pdfa.rb
|
|
309
322
|
- examples/031-acro_form_java_script.rb
|
|
@@ -516,8 +529,11 @@ files:
|
|
|
516
529
|
- lib/hexapdf/type/image.rb
|
|
517
530
|
- lib/hexapdf/type/info.rb
|
|
518
531
|
- lib/hexapdf/type/mark_information.rb
|
|
532
|
+
- lib/hexapdf/type/marked_content_reference.rb
|
|
519
533
|
- lib/hexapdf/type/metadata.rb
|
|
520
534
|
- lib/hexapdf/type/names.rb
|
|
535
|
+
- lib/hexapdf/type/namespace.rb
|
|
536
|
+
- lib/hexapdf/type/object_reference.rb
|
|
521
537
|
- lib/hexapdf/type/object_stream.rb
|
|
522
538
|
- lib/hexapdf/type/optional_content_configuration.rb
|
|
523
539
|
- lib/hexapdf/type/optional_content_group.rb
|
|
@@ -530,6 +546,8 @@ files:
|
|
|
530
546
|
- lib/hexapdf/type/page_label.rb
|
|
531
547
|
- lib/hexapdf/type/page_tree_node.rb
|
|
532
548
|
- lib/hexapdf/type/resources.rb
|
|
549
|
+
- lib/hexapdf/type/struct_elem.rb
|
|
550
|
+
- lib/hexapdf/type/struct_tree_root.rb
|
|
533
551
|
- lib/hexapdf/type/trailer.rb
|
|
534
552
|
- lib/hexapdf/type/viewer_preferences.rb
|
|
535
553
|
- lib/hexapdf/type/xref_stream.rb
|
|
@@ -810,7 +828,6 @@ licenses:
|
|
|
810
828
|
- AGPL-3.0
|
|
811
829
|
- Nonstandard
|
|
812
830
|
metadata: {}
|
|
813
|
-
post_install_message:
|
|
814
831
|
rdoc_options: []
|
|
815
832
|
require_paths:
|
|
816
833
|
- lib
|
|
@@ -825,8 +842,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
825
842
|
- !ruby/object:Gem::Version
|
|
826
843
|
version: '0'
|
|
827
844
|
requirements: []
|
|
828
|
-
rubygems_version: 3.
|
|
829
|
-
signing_key:
|
|
845
|
+
rubygems_version: 3.6.2
|
|
830
846
|
specification_version: 4
|
|
831
847
|
summary: HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
832
848
|
test_files: []
|