hexapdf 0.37.1 → 0.37.2
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 +17 -0
- data/LICENSE +1 -1
- data/lib/hexapdf/cli/batch.rb +1 -1
- data/lib/hexapdf/cli/command.rb +1 -1
- 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/watermark.rb +1 -1
- data/lib/hexapdf/cli.rb +1 -1
- data/lib/hexapdf/composer.rb +1 -1
- data/lib/hexapdf/configuration.rb +3 -4
- data/lib/hexapdf/content/canvas.rb +2 -2
- 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 +4 -4
- data/lib/hexapdf/content/transformation_matrix.rb +3 -3
- 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 -2
- 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 +2 -2
- 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 +14 -13
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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.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 +4 -4
- 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 +4 -4
- 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 +4 -6
- 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 +4 -4
- 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 +3 -3
- 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/optimize.rb +1 -1
- data/lib/hexapdf/task.rb +1 -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 +5 -5
- data/lib/hexapdf/type/acro_form/button_field.rb +1 -1
- data/lib/hexapdf/type/acro_form/choice_field.rb +12 -2
- data/lib/hexapdf/type/acro_form/field.rb +1 -1
- data/lib/hexapdf/type/acro_form/form.rb +2 -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 +8 -5
- 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 +2 -2
- 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 +1 -1
- data/lib/hexapdf/type/cid_font.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 +2 -2
- data/lib/hexapdf/type/font_type1.rb +1 -1
- data/lib/hexapdf/type/font_type3.rb +1 -1
- data/lib/hexapdf/type/form.rb +16 -16
- 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/metadata.rb +1 -1
- data/lib/hexapdf/type/names.rb +1 -1
- data/lib/hexapdf/type/object_stream.rb +1 -1
- data/lib/hexapdf/type/optional_content_configuration.rb +5 -5
- data/lib/hexapdf/type/optional_content_group.rb +17 -1
- data/lib/hexapdf/type/optional_content_membership.rb +1 -1
- data/lib/hexapdf/type/optional_content_properties.rb +1 -2
- data/lib/hexapdf/type/outline.rb +1 -1
- data/lib/hexapdf/type/outline_item.rb +1 -1
- data/lib/hexapdf/type/page.rb +30 -15
- 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/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 +3 -3
- 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/content/test_canvas.rb +1 -1
- data/test/hexapdf/digital_signature/common.rb +1 -1
- data/test/hexapdf/document/test_layout.rb +2 -2
- data/test/hexapdf/document/test_metadata.rb +28 -28
- data/test/hexapdf/encryption/test_standard_security_handler.rb +9 -9
- data/test/hexapdf/font/true_type/table/test_cmap_subtable.rb +2 -2
- data/test/hexapdf/font/true_type/table/test_name.rb +5 -5
- data/test/hexapdf/layout/test_box.rb +2 -2
- data/test/hexapdf/layout/test_column_box.rb +5 -5
- data/test/hexapdf/layout/test_frame.rb +4 -5
- data/test/hexapdf/layout/test_text_fragment.rb +1 -1
- data/test/hexapdf/layout/test_text_shaper.rb +2 -2
- data/test/hexapdf/test_composer.rb +1 -1
- data/test/hexapdf/test_utils.rb +1 -1
- data/test/hexapdf/test_writer.rb +2 -2
- data/test/hexapdf/type/acro_form/test_choice_field.rb +7 -0
- data/test/hexapdf/type/acro_form/test_form.rb +6 -0
- data/test/hexapdf/type/acro_form/test_variable_text_field.rb +12 -0
- data/test/hexapdf/type/test_annotation.rb +1 -1
- data/test/hexapdf/type/test_optional_content_group.rb +2 -2
- data/test/hexapdf/type/test_page.rb +67 -38
- metadata +2 -2
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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
|
|
@@ -57,10 +57,12 @@ module HexaPDF
|
|
|
57
57
|
#
|
|
58
58
|
# See: PDF2.0 s8.11.4.4
|
|
59
59
|
class UsageApplication < Dictionary
|
|
60
|
+
|
|
60
61
|
define_type :XXOCUsageApplication
|
|
61
62
|
define_field :Event, type: Symbol, required: true, allowed_values: [:View, :Print, :Export]
|
|
62
63
|
define_field :OCGs, type: PDFArray, default: []
|
|
63
64
|
define_field :Category, type: PDFArray, required: true
|
|
65
|
+
|
|
64
66
|
end
|
|
65
67
|
|
|
66
68
|
define_type :XXOCConfiguration
|
|
@@ -153,12 +155,10 @@ module HexaPDF
|
|
|
153
155
|
array << item << []
|
|
154
156
|
index = -2
|
|
155
157
|
end
|
|
156
|
-
|
|
157
|
-
array = array[index + 1]
|
|
158
|
-
else
|
|
158
|
+
unless array[index + 1].kind_of?(Array) || array[index + 1].kind_of?(PDFArray)
|
|
159
159
|
array.insert(index + 1, [])
|
|
160
|
-
array = array[index + 1]
|
|
161
160
|
end
|
|
161
|
+
array = array[index + 1]
|
|
162
162
|
end
|
|
163
163
|
end
|
|
164
164
|
array << ocg
|
|
@@ -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-2024 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
|
|
@@ -67,69 +67,85 @@ module HexaPDF
|
|
|
67
67
|
#
|
|
68
68
|
# See: PDF2.0 s8.11.4.4
|
|
69
69
|
class CreatorInfo < Dictionary
|
|
70
|
+
|
|
70
71
|
define_type :XXOCUsageCreatorInfo
|
|
71
72
|
define_field :Creator, type: String, required: true
|
|
72
73
|
define_field :Subtype, type: Symbol, required: true
|
|
74
|
+
|
|
73
75
|
end
|
|
74
76
|
|
|
75
77
|
# The dictionary used as value for the /Language key.
|
|
76
78
|
#
|
|
77
79
|
# See: PDF2.0 s8.11.4.4
|
|
78
80
|
class Language < Dictionary
|
|
81
|
+
|
|
79
82
|
define_type :XXOCUsageLanguage
|
|
80
83
|
define_field :Lang, type: String, required: true
|
|
81
84
|
define_field :Preferred, type: Symbol, default: :OFF, allowed_values: [:ON, :OFF]
|
|
85
|
+
|
|
82
86
|
end
|
|
83
87
|
|
|
84
88
|
# The dictionary used as value for the /Export key.
|
|
85
89
|
#
|
|
86
90
|
# See: PDF2.0 s8.11.4.4
|
|
87
91
|
class Export < Dictionary
|
|
92
|
+
|
|
88
93
|
define_type :XXOCUsageExport
|
|
89
94
|
define_field :ExportState, type: Symbol, required: true, allowed_values: [:ON, :OFF]
|
|
95
|
+
|
|
90
96
|
end
|
|
91
97
|
|
|
92
98
|
# The dictionary used as value for the /Zoom key.
|
|
93
99
|
#
|
|
94
100
|
# See: PDF2.0 s8.11.4.4
|
|
95
101
|
class Zoom < Dictionary
|
|
102
|
+
|
|
96
103
|
define_type :XXOCUsageZoom
|
|
97
104
|
define_field :min, type: Numeric, default: 0
|
|
98
105
|
define_field :max, type: Numeric
|
|
106
|
+
|
|
99
107
|
end
|
|
100
108
|
|
|
101
109
|
# The dictionary used as value for the /Print key.
|
|
102
110
|
#
|
|
103
111
|
# See: PDF2.0 s8.11.4.4
|
|
104
112
|
class Print < Dictionary
|
|
113
|
+
|
|
105
114
|
define_type :XXOCUsagePrint
|
|
106
115
|
define_field :Subtype, type: Symbol
|
|
107
116
|
define_field :PrintState, type: Symbol, allowed_values: [:ON, :OFF]
|
|
117
|
+
|
|
108
118
|
end
|
|
109
119
|
|
|
110
120
|
# The dictionary used as value for the /View key.
|
|
111
121
|
#
|
|
112
122
|
# See: PDF2.0 s8.11.4.4
|
|
113
123
|
class View < Dictionary
|
|
124
|
+
|
|
114
125
|
define_type :XXOCUsageView
|
|
115
126
|
define_field :ViewState, type: Symbol, required: true, allowed_values: [:ON, :OFF]
|
|
127
|
+
|
|
116
128
|
end
|
|
117
129
|
|
|
118
130
|
# The dictionary used as value for the /User key.
|
|
119
131
|
#
|
|
120
132
|
# See: PDF2.0 s8.11.4.4
|
|
121
133
|
class User < Dictionary
|
|
134
|
+
|
|
122
135
|
define_type :XXOCUsageUser
|
|
123
136
|
define_field :Type, type: Symbol, required: true, allowed_values: [:Ind, :Ttl, :Org]
|
|
124
137
|
define_field :Name, type: [String, PDFArray], required: true
|
|
138
|
+
|
|
125
139
|
end
|
|
126
140
|
|
|
127
141
|
# The dictionary used as value for the /PageElement key.
|
|
128
142
|
#
|
|
129
143
|
# See: PDF2.0 s8.11.4.4
|
|
130
144
|
class PageElement < Dictionary
|
|
145
|
+
|
|
131
146
|
define_type :XXOCUsagePageElement
|
|
132
147
|
define_field :Subtype, type: Symbol, required: true, allowed_values: [:HF, :FG, :BG, :L]
|
|
148
|
+
|
|
133
149
|
end
|
|
134
150
|
|
|
135
151
|
define_type :XXOCUsage
|
|
@@ -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-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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
|
|
@@ -92,7 +92,6 @@ module HexaPDF
|
|
|
92
92
|
self[:OCGs].uniq.compact
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
|
|
96
95
|
OCMD_POLICY_MAPPING = {any_on: :AnyOn, AnyOn: :AnyOn, any_off: :AnyOff, # :nodoc:
|
|
97
96
|
AnyOff: :AnyOff, all_off: :AllOff, AllOff: :AllOff}
|
|
98
97
|
|
data/lib/hexapdf/type/outline.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-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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/type/page.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-2024 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
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
# commercial licenses are available at <https://gettalong.at/hexapdf/>.
|
|
35
35
|
#++
|
|
36
36
|
|
|
37
|
+
require 'set'
|
|
37
38
|
require 'hexapdf/error'
|
|
38
39
|
require 'hexapdf/dictionary'
|
|
39
40
|
require 'hexapdf/stream'
|
|
@@ -228,20 +229,33 @@ module HexaPDF
|
|
|
228
229
|
if rectangle
|
|
229
230
|
case type
|
|
230
231
|
when :media, :crop, :bleed, :trim, :art
|
|
231
|
-
self["#{type.capitalize}Box"
|
|
232
|
+
self[:"#{type.capitalize}Box"] = rectangle
|
|
232
233
|
else
|
|
233
234
|
raise ArgumentError, "Unsupported page box type provided: #{type}"
|
|
234
235
|
end
|
|
235
236
|
else
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
237
|
+
media_box = self[:MediaBox]
|
|
238
|
+
result = case type
|
|
239
|
+
when :media then media_box
|
|
240
|
+
when :crop then self[:CropBox] || media_box
|
|
241
|
+
when :bleed then self[:BleedBox] || self[:CropBox] || media_box
|
|
242
|
+
when :trim then self[:TrimBox] || self[:CropBox] || media_box
|
|
243
|
+
when :art then self[:ArtBox] || self[:CropBox] || media_box
|
|
244
|
+
else
|
|
245
|
+
raise ArgumentError, "Unsupported page box type provided: #{type}"
|
|
246
|
+
end
|
|
247
|
+
unless result == media_box
|
|
248
|
+
if result.right < media_box.left || result.left > media_box.right ||
|
|
249
|
+
result.top < media_box.bottom || result.bottom > media_box.top
|
|
250
|
+
result.value = [0, 0, 0, 0]
|
|
251
|
+
else
|
|
252
|
+
result.left = media_box.left if result.left < media_box.left
|
|
253
|
+
result.right = media_box.right if result.right > media_box.right
|
|
254
|
+
result.top = media_box.top if result.top > media_box.top
|
|
255
|
+
result.bottom = media_box.bottom if result.bottom < media_box.bottom
|
|
256
|
+
end
|
|
244
257
|
end
|
|
258
|
+
result
|
|
245
259
|
end
|
|
246
260
|
end
|
|
247
261
|
|
|
@@ -290,14 +304,15 @@ module HexaPDF
|
|
|
290
304
|
delete(:Rotate)
|
|
291
305
|
return if cw_angle == 0
|
|
292
306
|
|
|
307
|
+
pbox = box
|
|
293
308
|
matrix = case cw_angle
|
|
294
|
-
when 90 then Content::TransformationMatrix.new(0, -1, 1, 0, -
|
|
295
|
-
when 180 then Content::TransformationMatrix.new(-1, 0, 0, -1,
|
|
296
|
-
when 270 then Content::TransformationMatrix.new(0, 1, -1, 0,
|
|
309
|
+
when 90 then Content::TransformationMatrix.new(0, -1, 1, 0, -pbox.bottom, pbox.right)
|
|
310
|
+
when 180 then Content::TransformationMatrix.new(-1, 0, 0, -1, pbox.right, pbox.top)
|
|
311
|
+
when 270 then Content::TransformationMatrix.new(0, 1, -1, 0, pbox.top, -pbox.left)
|
|
297
312
|
end
|
|
298
313
|
|
|
299
314
|
rotate_box = lambda do |box|
|
|
300
|
-
llx, lly, urx, ury =
|
|
315
|
+
llx, lly, urx, ury =
|
|
301
316
|
case cw_angle
|
|
302
317
|
when 90 then [box.right, box.bottom, box.left, box.top]
|
|
303
318
|
when 180 then [box.right, box.top, box.left, box.bottom]
|
|
@@ -568,7 +583,7 @@ module HexaPDF
|
|
|
568
583
|
canvas.translate(-pos[0], -pos[1])
|
|
569
584
|
end
|
|
570
585
|
|
|
571
|
-
to_delete =
|
|
586
|
+
to_delete = Set.new
|
|
572
587
|
not_flattened -= annotations
|
|
573
588
|
annotations.each do |annotation|
|
|
574
589
|
unless annotation?(annotation)
|
|
@@ -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-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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/type/trailer.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-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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/type.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-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 Thomas Leitner
|
|
8
8
|
#
|
|
9
9
|
# HexaPDF is free software: you can redistribute it and/or modify it
|
|
10
10
|
# under the terms of the GNU Affero General Public License version 3 as
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# This file is part of HexaPDF.
|
|
5
5
|
#
|
|
6
6
|
# HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
|
|
7
|
-
# Copyright (C) 2014-
|
|
7
|
+
# Copyright (C) 2014-2024 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/utils.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-2024 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,8 @@
|
|
|
37
37
|
require 'geom2d/utils'
|
|
38
38
|
|
|
39
39
|
module HexaPDF
|
|
40
|
+
|
|
41
|
+
# This module contains helper methods for the whole library.
|
|
40
42
|
module Utils
|
|
41
43
|
|
|
42
44
|
# The precision with which to compare floating point numbers.
|
|
@@ -47,8 +49,6 @@ module HexaPDF
|
|
|
47
49
|
# Best effort of setting Geom2D's precision to the one used by HexaPDF.
|
|
48
50
|
::Geom2D::Utils.precision = EPSILON
|
|
49
51
|
|
|
50
|
-
module_function
|
|
51
|
-
|
|
52
52
|
private
|
|
53
53
|
|
|
54
54
|
# Compares two floats whether they are equal using the FLOAT_EPSILON precision.
|
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-2024 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 = '0.37.
|
|
40
|
+
VERSION = '0.37.2'
|
|
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-2024 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-2024 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-2024 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
|
|
@@ -1366,7 +1366,7 @@ describe HexaPDF::Content::Canvas do
|
|
|
1366
1366
|
end
|
|
1367
1367
|
end
|
|
1368
1368
|
|
|
1369
|
-
describe "color_from_specification "do
|
|
1369
|
+
describe "color_from_specification " do
|
|
1370
1370
|
it "accepts a color string" do
|
|
1371
1371
|
assert_equal([1, 0, 0], @canvas.color_from_specification("red").components)
|
|
1372
1372
|
end
|
|
@@ -129,7 +129,7 @@ module HexaPDF
|
|
|
129
129
|
Logger: WEBrick::Log.new(StringIO.new), AccessLog: [])
|
|
130
130
|
@tsa_server.mount_proc('/') do |request, response|
|
|
131
131
|
@tsr = OpenSSL::Timestamp::Request.new(request.body)
|
|
132
|
-
case
|
|
132
|
+
case @tsr.policy_id || '1.2.3.4.0'
|
|
133
133
|
when '1.2.3.4.0', '1.2.3.4.2'
|
|
134
134
|
fac = OpenSSL::Timestamp::Factory.new
|
|
135
135
|
fac.gen_time = Time.now
|
|
@@ -110,7 +110,7 @@ end
|
|
|
110
110
|
describe HexaPDF::Document::Layout do
|
|
111
111
|
before do
|
|
112
112
|
@doc = HexaPDF::Document.new
|
|
113
|
-
@doc.config['font.on_invalid_glyph'] = lambda do |codepoint,
|
|
113
|
+
@doc.config['font.on_invalid_glyph'] = lambda do |codepoint, _invalid_glyph|
|
|
114
114
|
[@doc.fonts.add('ZapfDingbats').decode_codepoint(codepoint)]
|
|
115
115
|
end
|
|
116
116
|
@layout = @doc.layout
|
|
@@ -267,7 +267,7 @@ describe HexaPDF::Document::Layout do
|
|
|
267
267
|
|
|
268
268
|
it "allows setting custom properties on the whole box" do
|
|
269
269
|
box = @layout.formatted_text_box([{text: "Test", properties: {key: :novalue}}],
|
|
270
|
-
|
|
270
|
+
properties: {key: :value})
|
|
271
271
|
assert_equal({key: :value}, box.properties)
|
|
272
272
|
end
|
|
273
273
|
|
|
@@ -149,34 +149,34 @@ describe HexaPDF::Document::Metadata do
|
|
|
149
149
|
@metadata.property('dc', 'other', 'https://test.org/example')
|
|
150
150
|
@doc.write(StringIO.new, update_fields: false)
|
|
151
151
|
metadata = <<~XMP
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
152
|
+
<?xpacket begin="" id=""?>
|
|
153
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
154
|
+
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
155
|
+
<dc:title><rdf:Alt>
|
|
156
|
+
<rdf:li xml:lang="en">Title</rdf:li>
|
|
157
|
+
<rdf:li xml:lang="de">Der Titel</rdf:li>
|
|
158
|
+
</rdf:Alt></dc:title>
|
|
159
|
+
<dc:creator><rdf:Seq>
|
|
160
|
+
<rdf:li>Author 1</rdf:li>
|
|
161
|
+
<rdf:li>Author 2</rdf:li>
|
|
162
|
+
</rdf:Seq></dc:creator>
|
|
163
|
+
<dc:description><rdf:Alt>
|
|
164
|
+
<rdf:li xml:lang="en">Subject</rdf:li>
|
|
165
|
+
</rdf:Alt></dc:description>
|
|
166
|
+
<dc:other rdf:resource="https://test.org/example" />
|
|
167
|
+
</rdf:Description>
|
|
168
|
+
<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
|
|
169
|
+
<pdf:Keywords>Keywords</pdf:Keywords>
|
|
170
|
+
<pdf:Producer>Producer</pdf:Producer>
|
|
171
|
+
<pdf:Trapped>True</pdf:Trapped>
|
|
172
|
+
</rdf:Description>
|
|
173
|
+
<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
|
|
174
|
+
<xmp:CreatorTool>Creator</xmp:CreatorTool>
|
|
175
|
+
<xmp:CreateDate>#{@metadata.send(:xmp_date, @time)}</xmp:CreateDate>
|
|
176
|
+
<xmp:ModifyDate>#{@metadata.send(:xmp_date, @time)}</xmp:ModifyDate>
|
|
177
|
+
</rdf:Description>
|
|
178
|
+
</rdf:RDF>
|
|
179
|
+
<?xpacket end="r"?>
|
|
180
180
|
XMP
|
|
181
181
|
assert_equal(metadata, @doc.catalog[:Metadata].stream.sub(/(?<=id=")\w+/, ''))
|
|
182
182
|
end
|