hexapdf 1.7.0 → 1.8.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 +23 -1
- data/LICENSE +1 -1
- data/examples/005-merging.rb +2 -1
- data/lib/hexapdf/cli/batch.rb +1 -1
- data/lib/hexapdf/cli/command.rb +1 -1
- data/lib/hexapdf/cli/debug_info.rb +1 -1
- data/lib/hexapdf/cli/files.rb +1 -1
- data/lib/hexapdf/cli/fonts.rb +6 -4
- data/lib/hexapdf/cli/form.rb +1 -1
- data/lib/hexapdf/cli/image2pdf.rb +1 -1
- data/lib/hexapdf/cli/images.rb +17 -17
- data/lib/hexapdf/cli/info.rb +1 -1
- data/lib/hexapdf/cli/inspect.rb +1 -1
- data/lib/hexapdf/cli/merge.rb +14 -2
- 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 +2 -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 +1 -1
- data/lib/hexapdf/content/processor.rb +1 -1
- data/lib/hexapdf/content/smart_text_extractor.rb +10 -4
- 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/annotations.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/brotli_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 +4 -4
- 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 +3 -3
- 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 +5 -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 +1 -1
- data/lib/hexapdf/layout/table_box.rb +1 -1
- data/lib/hexapdf/layout/text_box.rb +1 -1
- data/lib/hexapdf/layout/text_fragment.rb +1 -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 +3 -3
- data/lib/hexapdf/stream.rb +1 -1
- data/lib/hexapdf/task/dereference.rb +1 -1
- data/lib/hexapdf/task/import_pages.rb +185 -0
- 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 +2 -1
- data/lib/hexapdf/test_utils.rb +1 -1
- data/lib/hexapdf/tokenizer.rb +1 -1
- 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/appearance_generator.rb +1 -1
- data/lib/hexapdf/type/annotations/border_effect.rb +1 -1
- data/lib/hexapdf/type/annotations/border_styling.rb +1 -1
- data/lib/hexapdf/type/annotations/circle.rb +1 -1
- data/lib/hexapdf/type/annotations/interior_color.rb +1 -1
- data/lib/hexapdf/type/annotations/line.rb +1 -1
- data/lib/hexapdf/type/annotations/line_ending_styling.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/polygon.rb +1 -1
- data/lib/hexapdf/type/annotations/polygon_polyline.rb +1 -1
- data/lib/hexapdf/type/annotations/polyline.rb +1 -1
- data/lib/hexapdf/type/annotations/square.rb +1 -1
- data/lib/hexapdf/type/annotations/square_circle.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 +1 -1
- data/lib/hexapdf/type/cid_font.rb +1 -1
- data/lib/hexapdf/type/cmap.rb +1 -1
- data/lib/hexapdf/type/document_security_store.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 +4 -4
- 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 +6 -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 +1 -1
- data/lib/hexapdf/type/measure.rb +1 -1
- data/lib/hexapdf/type/metadata.rb +1 -1
- data/lib/hexapdf/type/names.rb +1 -1
- data/lib/hexapdf/type/namespace.rb +1 -1
- data/lib/hexapdf/type/object_reference.rb +1 -1
- 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 +1 -1
- data/lib/hexapdf/type/struct_elem.rb +1 -1
- data/lib/hexapdf/type/struct_tree_root.rb +1 -1
- 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 +1 -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/filter/test_brotli_decode.rb +1 -1
- data/test/hexapdf/font/test_true_type_wrapper.rb +2 -2
- data/test/hexapdf/font/true_type/test_subsetter.rb +7 -6
- data/test/hexapdf/font_loader/test_from_file.rb +7 -0
- data/test/hexapdf/task/test_import_pages.rb +126 -0
- data/test/hexapdf/test_serializer.rb +1 -1
- data/test/hexapdf/type/test_font_type3.rb +4 -0
- metadata +5 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'hexapdf/document'
|
|
5
|
+
require 'hexapdf/task/import_pages'
|
|
6
|
+
|
|
7
|
+
describe HexaPDF::Task::ImportPages do
|
|
8
|
+
before do
|
|
9
|
+
@doc = HexaPDF::Document.new
|
|
10
|
+
@pages = [@doc.pages.add, @doc.pages.add]
|
|
11
|
+
@pages[0][:Page1] = true
|
|
12
|
+
@pages[1][:Page2] = true
|
|
13
|
+
|
|
14
|
+
@target = HexaPDF::Document.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "pages argument" do
|
|
18
|
+
it "imports all pages by default" do
|
|
19
|
+
@target.task(:import_pages, source: @doc)
|
|
20
|
+
assert_equal(2, @target.pages.count)
|
|
21
|
+
assert(@target.pages[0][:Page1])
|
|
22
|
+
assert(@target.pages[1][:Page2])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "imports the provided page objects" do
|
|
26
|
+
@target.task(:import_pages, source: @doc, pages: @pages.reverse)
|
|
27
|
+
assert_equal(2, @target.pages.count)
|
|
28
|
+
assert(@target.pages[0][:Page2])
|
|
29
|
+
assert(@target.pages[1][:Page1])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "imports a single page" do
|
|
33
|
+
@target.task(:import_pages, source: @doc, pages: 1)
|
|
34
|
+
assert_equal(1, @target.pages.count)
|
|
35
|
+
assert(@target.pages[0][:Page2])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "imports a page range" do
|
|
39
|
+
@target.task(:import_pages, source: @doc, pages: 0..-1)
|
|
40
|
+
assert_equal(2, @target.pages.count)
|
|
41
|
+
assert(@target.pages[0][:Page1])
|
|
42
|
+
assert(@target.pages[1][:Page2])
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "imports multiple pages" do
|
|
46
|
+
@target.task(:import_pages, source: @doc, pages: [1, 0..-1],
|
|
47
|
+
ocgs: :ignore, acro_form: :ignore)
|
|
48
|
+
assert_equal(2, @target.pages.count)
|
|
49
|
+
assert(@target.pages[0][:Page2])
|
|
50
|
+
assert(@target.pages[1][:Page1])
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "doesn't append the pages if specified so" do
|
|
55
|
+
result = @target.task(:import_pages, source: @doc, append: false)
|
|
56
|
+
assert_equal(0, @target.pages.count)
|
|
57
|
+
assert_equal(2, result.size)
|
|
58
|
+
assert(result[0][:Page1])
|
|
59
|
+
assert(result[1][:Page2])
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "merges the AcroForm fields" do
|
|
63
|
+
form = @doc.acro_form(create: true)
|
|
64
|
+
field = form.create_text_field("Text")
|
|
65
|
+
field.create_widget(@doc.pages[0], Rect: [0, 0, 0, 0])
|
|
66
|
+
@doc.dispatch_message(:complete_objects)
|
|
67
|
+
@doc.validate
|
|
68
|
+
|
|
69
|
+
@target.task(:import_pages, source: @doc)
|
|
70
|
+
assert_equal(1, @target.acro_form.root_fields.size)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe "ocgs argument" do
|
|
74
|
+
before do
|
|
75
|
+
@ocg1 = @doc.optional_content.ocg('OCG')
|
|
76
|
+
@ocg1.add_to_ui(path: @ocg1)
|
|
77
|
+
@ocg2 = @doc.optional_content.ocg('OCMD')
|
|
78
|
+
@ocg2.add_to_ui(path: @ocg2)
|
|
79
|
+
@ocg2.off!
|
|
80
|
+
@ocmd = @doc.optional_content.create_ocmd(@ocg2)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "doesn't preserve unused ocgs" do
|
|
84
|
+
@target.task(:import_pages, source: @doc)
|
|
85
|
+
assert(@target.optional_content.ocgs.empty?)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "preserves OCGs and OCMDs in content streams" do
|
|
89
|
+
canvas = @doc.pages[0].canvas
|
|
90
|
+
canvas.optional_content(@ocg1)
|
|
91
|
+
canvas.optional_content(@ocmd)
|
|
92
|
+
@target.task(:import_pages, source: @doc)
|
|
93
|
+
assert_equal(['OCG', 'OCMD'], @target.optional_content.ocgs.map(&:name))
|
|
94
|
+
assert(@target.optional_content.ocg('OCG').on?)
|
|
95
|
+
refute(@target.optional_content.ocg('OCMD').on?)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "preserves OCGs/OCMDs associated with XObjects" do
|
|
99
|
+
canvas = @doc.pages[0].canvas
|
|
100
|
+
form = canvas.form
|
|
101
|
+
form[:OC] = @ocg1
|
|
102
|
+
canvas.xobject(form, at: [0, 0])
|
|
103
|
+
@target.task(:import_pages, source: @doc)
|
|
104
|
+
assert_equal(['OCG'], @target.optional_content.ocgs.map(&:name))
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "preserves OCGs/OCMDs associated with annotations" do
|
|
108
|
+
annot = @doc.annotations.create_line(@doc.pages[0], start_point: [0, 0], end_point: [50, 50])
|
|
109
|
+
annot[:OC] = @ocmd
|
|
110
|
+
annot.regenerate_appearance
|
|
111
|
+
@target.task(:import_pages, source: @doc)
|
|
112
|
+
assert_equal(['OCMD'], @target.optional_content.ocgs.map(&:name))
|
|
113
|
+
refute(@target.optional_content.ocg('OCMD').on?)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "preserves the radio button group state of imported OCGs" do
|
|
117
|
+
@doc.pages[0].canvas.optional_content(@ocg1)
|
|
118
|
+
@doc.optional_content.default_configuration[:RBGroups] = [[@ocg1, @ocg2]]
|
|
119
|
+
@target.task(:import_pages, source: @doc)
|
|
120
|
+
assert_equal(['OCG'], @target.optional_content.ocgs.map {|ocg| ocg.name })
|
|
121
|
+
rb_groups = @target.optional_content.default_configuration[:RBGroups]
|
|
122
|
+
assert_equal(1, rb_groups.size)
|
|
123
|
+
assert_equal(['OCG'], rb_groups[0].map(&:name))
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -104,7 +104,7 @@ describe HexaPDF::Serializer do
|
|
|
104
104
|
|
|
105
105
|
it "serializes strings" do
|
|
106
106
|
assert_serialized("(Hallo)", "Hallo")
|
|
107
|
-
assert_serialized("(Hallo\\r
|
|
107
|
+
assert_serialized("(Hallo\\r\\n\t\\(\\)\\\\)", "Hallo\r\n\t()\\")
|
|
108
108
|
assert_serialized("(\xFE\xFF\x00H\x00a\x00l\x00\f\x00\b\x00\\()".b, "Hal\f\b(")
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -28,6 +28,10 @@ describe HexaPDF::Type::FontType3 do
|
|
|
28
28
|
assert_equal(0.002, @font.glyph_scaling_factor)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
it "always returns true for embedded?" do
|
|
32
|
+
assert(@font.embedded?)
|
|
33
|
+
end
|
|
34
|
+
|
|
31
35
|
describe "validation" do
|
|
32
36
|
it "works for valid objects" do
|
|
33
37
|
assert(@font.validate)
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hexapdf
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas Leitner
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: cmdparse
|
|
@@ -516,6 +516,7 @@ files:
|
|
|
516
516
|
- lib/hexapdf/stream.rb
|
|
517
517
|
- lib/hexapdf/task.rb
|
|
518
518
|
- lib/hexapdf/task/dereference.rb
|
|
519
|
+
- lib/hexapdf/task/import_pages.rb
|
|
519
520
|
- lib/hexapdf/task/merge_acro_form.rb
|
|
520
521
|
- lib/hexapdf/task/optimize.rb
|
|
521
522
|
- lib/hexapdf/task/pdfa.rb
|
|
@@ -800,6 +801,7 @@ files:
|
|
|
800
801
|
- test/hexapdf/layout/test_text_shaper.rb
|
|
801
802
|
- test/hexapdf/layout/test_width_from_polygon.rb
|
|
802
803
|
- test/hexapdf/task/test_dereference.rb
|
|
804
|
+
- test/hexapdf/task/test_import_pages.rb
|
|
803
805
|
- test/hexapdf/task/test_merge_acro_form.rb
|
|
804
806
|
- test/hexapdf/task/test_optimize.rb
|
|
805
807
|
- test/hexapdf/task/test_pdfa.rb
|
|
@@ -901,7 +903,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
901
903
|
- !ruby/object:Gem::Version
|
|
902
904
|
version: '0'
|
|
903
905
|
requirements: []
|
|
904
|
-
rubygems_version:
|
|
906
|
+
rubygems_version: 4.0.3
|
|
905
907
|
specification_version: 4
|
|
906
908
|
summary: HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
907
909
|
test_files: []
|