hexapdf 0.32.2 → 0.34.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 +104 -1
- data/README.md +9 -0
- data/examples/002-graphics.rb +15 -17
- data/examples/003-arcs.rb +9 -9
- data/examples/009-text_layouter_alignment.rb +1 -1
- data/examples/010-text_layouter_inline_boxes.rb +2 -2
- data/examples/011-text_layouter_line_wrapping.rb +1 -1
- data/examples/012-text_layouter_styling.rb +7 -7
- data/examples/013-text_layouter_shapes.rb +1 -1
- data/examples/014-text_in_polygon.rb +1 -1
- data/examples/015-boxes.rb +8 -7
- data/examples/016-frame_automatic_box_placement.rb +2 -2
- data/examples/017-frame_text_flow.rb +2 -1
- data/examples/018-composer.rb +1 -1
- data/examples/020-column_box.rb +2 -1
- data/examples/025-table_box.rb +46 -0
- data/examples/026-optional_content.rb +55 -0
- data/examples/027-composer_optional_content.rb +83 -0
- data/lib/hexapdf/cli/command.rb +12 -3
- data/lib/hexapdf/cli/fonts.rb +1 -1
- data/lib/hexapdf/cli/form.rb +5 -5
- data/lib/hexapdf/cli/inspect.rb +5 -7
- data/lib/hexapdf/composer.rb +106 -53
- data/lib/hexapdf/configuration.rb +65 -40
- data/lib/hexapdf/content/canvas.rb +445 -267
- data/lib/hexapdf/content/color_space.rb +72 -25
- data/lib/hexapdf/content/graphic_object/arc.rb +57 -24
- data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +66 -23
- data/lib/hexapdf/content/graphic_object/geom2d.rb +47 -6
- data/lib/hexapdf/content/graphic_object/solid_arc.rb +58 -36
- data/lib/hexapdf/content/graphic_object.rb +6 -7
- data/lib/hexapdf/content/graphics_state.rb +54 -45
- data/lib/hexapdf/content/operator.rb +54 -54
- data/lib/hexapdf/content/parser.rb +2 -2
- data/lib/hexapdf/content/processor.rb +15 -15
- data/lib/hexapdf/content/transformation_matrix.rb +1 -1
- data/lib/hexapdf/content.rb +5 -0
- data/lib/hexapdf/dictionary.rb +7 -5
- data/lib/hexapdf/dictionary_fields.rb +43 -16
- data/lib/hexapdf/digital_signature/cms_handler.rb +2 -2
- data/lib/hexapdf/digital_signature/handler.rb +1 -1
- data/lib/hexapdf/digital_signature/pkcs1_handler.rb +2 -3
- data/lib/hexapdf/digital_signature/signature.rb +6 -6
- data/lib/hexapdf/digital_signature/signatures.rb +13 -12
- data/lib/hexapdf/digital_signature/signing/default_handler.rb +14 -5
- data/lib/hexapdf/digital_signature/signing/signed_data_creator.rb +2 -4
- data/lib/hexapdf/digital_signature/signing/timestamp_handler.rb +4 -4
- data/lib/hexapdf/digital_signature/signing.rb +4 -0
- data/lib/hexapdf/digital_signature/verification_result.rb +3 -4
- data/lib/hexapdf/digital_signature.rb +7 -2
- data/lib/hexapdf/document/destinations.rb +12 -11
- data/lib/hexapdf/document/files.rb +1 -1
- data/lib/hexapdf/document/fonts.rb +1 -1
- data/lib/hexapdf/document/layout.rb +170 -39
- data/lib/hexapdf/document/pages.rb +4 -3
- data/lib/hexapdf/document.rb +96 -55
- data/lib/hexapdf/encryption/aes.rb +5 -5
- data/lib/hexapdf/encryption/arc4.rb +1 -1
- data/lib/hexapdf/encryption/fast_aes.rb +2 -2
- data/lib/hexapdf/encryption/fast_arc4.rb +1 -1
- data/lib/hexapdf/encryption/identity.rb +1 -1
- data/lib/hexapdf/encryption/ruby_aes.rb +11 -21
- data/lib/hexapdf/encryption/ruby_arc4.rb +1 -1
- data/lib/hexapdf/encryption/security_handler.rb +31 -24
- data/lib/hexapdf/encryption/standard_security_handler.rb +45 -36
- data/lib/hexapdf/encryption.rb +7 -2
- data/lib/hexapdf/error.rb +18 -0
- data/lib/hexapdf/filter/ascii85_decode.rb +1 -1
- data/lib/hexapdf/filter/ascii_hex_decode.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 +55 -6
- data/lib/hexapdf/font/cmap/parser.rb +2 -2
- data/lib/hexapdf/font/cmap.rb +1 -1
- data/lib/hexapdf/font/encoding/difference_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +1 -1
- data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +2 -2
- 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 +3 -3
- data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +1 -1
- data/lib/hexapdf/font/invalid_glyph.rb +3 -0
- data/lib/hexapdf/font/true_type_wrapper.rb +17 -4
- data/lib/hexapdf/font/type1_wrapper.rb +19 -4
- data/lib/hexapdf/font_loader/from_configuration.rb +5 -2
- data/lib/hexapdf/font_loader/from_file.rb +5 -5
- data/lib/hexapdf/font_loader/standard14.rb +3 -3
- data/lib/hexapdf/font_loader.rb +3 -0
- data/lib/hexapdf/image_loader/jpeg.rb +2 -2
- data/lib/hexapdf/image_loader/pdf.rb +1 -1
- data/lib/hexapdf/image_loader/png.rb +2 -2
- data/lib/hexapdf/image_loader.rb +1 -1
- data/lib/hexapdf/importer.rb +13 -0
- data/lib/hexapdf/layout/box.rb +32 -5
- data/lib/hexapdf/layout/box_fitter.rb +2 -2
- data/lib/hexapdf/layout/column_box.rb +20 -5
- data/lib/hexapdf/layout/frame.rb +53 -18
- data/lib/hexapdf/layout/image_box.rb +5 -0
- data/lib/hexapdf/layout/inline_box.rb +21 -9
- data/lib/hexapdf/layout/list_box.rb +50 -20
- data/lib/hexapdf/layout/page_style.rb +6 -5
- data/lib/hexapdf/layout/style.rb +64 -9
- data/lib/hexapdf/layout/table_box.rb +684 -0
- data/lib/hexapdf/layout/text_box.rb +12 -3
- data/lib/hexapdf/layout/text_fragment.rb +29 -3
- data/lib/hexapdf/layout/text_layouter.rb +32 -8
- data/lib/hexapdf/layout.rb +1 -0
- data/lib/hexapdf/name_tree_node.rb +1 -1
- data/lib/hexapdf/number_tree_node.rb +1 -1
- data/lib/hexapdf/object.rb +18 -7
- data/lib/hexapdf/parser.rb +7 -7
- 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 +3 -3
- data/lib/hexapdf/serializer.rb +15 -15
- data/lib/hexapdf/stream.rb +5 -4
- data/lib/hexapdf/tokenizer.rb +14 -14
- data/lib/hexapdf/type/acro_form/appearance_generator.rb +22 -22
- 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 +2 -2
- data/lib/hexapdf/type/acro_form/form.rb +1 -1
- data/lib/hexapdf/type/acro_form/signature_field.rb +4 -4
- 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 +86 -0
- data/lib/hexapdf/type/actions/uri.rb +1 -1
- data/lib/hexapdf/type/actions.rb +2 -1
- data/lib/hexapdf/type/annotation.rb +3 -3
- 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 +2 -3
- data/lib/hexapdf/type/annotations/widget.rb +2 -2
- data/lib/hexapdf/type/annotations.rb +1 -1
- data/lib/hexapdf/type/catalog.rb +11 -2
- data/lib/hexapdf/type/cid_font.rb +18 -4
- data/lib/hexapdf/type/embedded_file.rb +1 -1
- data/lib/hexapdf/type/file_specification.rb +2 -2
- data/lib/hexapdf/type/font_descriptor.rb +1 -1
- data/lib/hexapdf/type/font_simple.rb +2 -2
- data/lib/hexapdf/type/font_type0.rb +3 -3
- data/lib/hexapdf/type/font_type3.rb +1 -1
- data/lib/hexapdf/type/form.rb +76 -6
- 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/names.rb +2 -2
- data/lib/hexapdf/type/object_stream.rb +2 -1
- data/lib/hexapdf/type/optional_content_configuration.rb +170 -0
- data/lib/hexapdf/type/optional_content_group.rb +370 -0
- data/lib/hexapdf/type/optional_content_membership.rb +63 -0
- data/lib/hexapdf/type/optional_content_properties.rb +158 -0
- data/lib/hexapdf/type/outline.rb +1 -1
- data/lib/hexapdf/type/outline_item.rb +1 -1
- data/lib/hexapdf/type/page.rb +46 -21
- data/lib/hexapdf/type/page_label.rb +5 -9
- data/lib/hexapdf/type/page_tree_node.rb +1 -1
- data/lib/hexapdf/type/resources.rb +1 -1
- data/lib/hexapdf/type/trailer.rb +2 -2
- data/lib/hexapdf/type/viewer_preferences.rb +1 -1
- data/lib/hexapdf/type/xref_stream.rb +2 -2
- data/lib/hexapdf/type.rb +4 -0
- data/lib/hexapdf/utils/pdf_doc_encoding.rb +1 -2
- data/lib/hexapdf/version.rb +1 -1
- data/lib/hexapdf/writer.rb +4 -4
- data/lib/hexapdf/xref_section.rb +2 -2
- data/test/hexapdf/content/graphic_object/test_endpoint_arc.rb +11 -1
- data/test/hexapdf/content/graphic_object/test_geom2d.rb +7 -0
- data/test/hexapdf/content/test_canvas.rb +49 -1
- data/test/hexapdf/digital_signature/test_signatures.rb +22 -0
- data/test/hexapdf/document/test_files.rb +2 -2
- data/test/hexapdf/document/test_layout.rb +105 -2
- data/test/hexapdf/document/test_pages.rb +6 -6
- data/test/hexapdf/encryption/test_security_handler.rb +12 -11
- data/test/hexapdf/encryption/test_standard_security_handler.rb +35 -23
- data/test/hexapdf/font/test_true_type_wrapper.rb +18 -1
- data/test/hexapdf/font/test_type1_wrapper.rb +15 -1
- data/test/hexapdf/layout/test_box.rb +14 -5
- data/test/hexapdf/layout/test_column_box.rb +65 -21
- data/test/hexapdf/layout/test_frame.rb +27 -15
- data/test/hexapdf/layout/test_image_box.rb +4 -0
- data/test/hexapdf/layout/test_inline_box.rb +17 -3
- data/test/hexapdf/layout/test_list_box.rb +84 -33
- data/test/hexapdf/layout/test_page_style.rb +3 -2
- data/test/hexapdf/layout/test_style.rb +60 -0
- data/test/hexapdf/layout/test_table_box.rb +728 -0
- data/test/hexapdf/layout/test_text_box.rb +26 -0
- data/test/hexapdf/layout/test_text_fragment.rb +33 -0
- data/test/hexapdf/layout/test_text_layouter.rb +36 -5
- data/test/hexapdf/test_composer.rb +10 -0
- data/test/hexapdf/test_dictionary.rb +10 -0
- data/test/hexapdf/test_dictionary_fields.rb +4 -1
- data/test/hexapdf/test_document.rb +5 -0
- data/test/hexapdf/test_filter.rb +8 -0
- data/test/hexapdf/test_importer.rb +9 -0
- data/test/hexapdf/test_object.rb +16 -5
- data/test/hexapdf/test_stream.rb +7 -0
- data/test/hexapdf/test_writer.rb +3 -3
- data/test/hexapdf/type/acro_form/test_appearance_generator.rb +13 -5
- data/test/hexapdf/type/acro_form/test_form.rb +4 -3
- data/test/hexapdf/type/actions/test_set_ocg_state.rb +40 -0
- data/test/hexapdf/type/test_catalog.rb +11 -0
- data/test/hexapdf/type/test_form.rb +119 -0
- data/test/hexapdf/type/test_optional_content_configuration.rb +112 -0
- data/test/hexapdf/type/test_optional_content_group.rb +158 -0
- data/test/hexapdf/type/test_optional_content_properties.rb +109 -0
- data/test/hexapdf/type/test_page.rb +20 -6
- metadata +28 -8
|
@@ -44,12 +44,12 @@ module HexaPDF
|
|
|
44
44
|
# == Overview
|
|
45
45
|
#
|
|
46
46
|
# HexaPDF allows detailed control over many aspects of PDF manipulation. If there is a need to
|
|
47
|
-
# use a certain default value somewhere, it is defined as configuration
|
|
47
|
+
# use a certain default value somewhere, it is defined as a configuration option so that it can
|
|
48
48
|
# easily be changed.
|
|
49
49
|
#
|
|
50
50
|
# Some options are defined as global options because they are needed on the class level - see
|
|
51
|
-
# HexaPDF::GlobalConfiguration[index.html#GlobalConfiguration]. Other options can be configured
|
|
52
|
-
# individual documents as they allow to fine-tune some behavior - see
|
|
51
|
+
# HexaPDF::GlobalConfiguration[index.html#GlobalConfiguration]. Other options can be configured
|
|
52
|
+
# for individual documents as they allow to fine-tune some behavior - see
|
|
53
53
|
# HexaPDF::DefaultDocumentConfiguration[index.html#DefaultDocumentConfiguration].
|
|
54
54
|
#
|
|
55
55
|
# A configuration option name is dot-separted to provide a hierarchy of option names. For
|
|
@@ -155,9 +155,6 @@ module HexaPDF
|
|
|
155
155
|
# A boolean specifying whether an AcroForm field's appearances should automatically be
|
|
156
156
|
# generated if they are missing.
|
|
157
157
|
#
|
|
158
|
-
# acro_form.text_field.default_width::
|
|
159
|
-
# A number specifying the default width of AcroForm text fields which should be auto-sized.
|
|
160
|
-
#
|
|
161
158
|
# acro_form.default_font_size::
|
|
162
159
|
# A number specifying the default font size of AcroForm text fields which should be auto-sized.
|
|
163
160
|
#
|
|
@@ -248,7 +245,7 @@ module HexaPDF
|
|
|
248
245
|
#
|
|
249
246
|
# The most often used filters are implemented and readily available.
|
|
250
247
|
#
|
|
251
|
-
# See
|
|
248
|
+
# See PDF2.0 s7.4.1, ADB sH.3 3.3
|
|
252
249
|
#
|
|
253
250
|
# font.map::
|
|
254
251
|
# Defines a mapping from font names and variants to font files.
|
|
@@ -271,14 +268,22 @@ module HexaPDF
|
|
|
271
268
|
#
|
|
272
269
|
# The value needs to be an object that responds to \#call(character, font_wrapper) where
|
|
273
270
|
# +character+ is the Unicode character for the missing glyph and returns a substitute glyph to
|
|
274
|
-
# be used instead.
|
|
271
|
+
# be used instead. This substitute glyph needs to be from the same font, i.e. it needs to be
|
|
272
|
+
# created through the provided +font_wrapper+ instance.
|
|
275
273
|
#
|
|
276
274
|
# The +font_wrapper+ argument is the used font wrapper object, e.g.
|
|
277
275
|
# HexaPDF::Font::TrueTypeWrapper. To access the HexaPDF::Document instance from which this hook
|
|
278
276
|
# was called, you can use +font_wrapper.pdf_object.document+.
|
|
279
277
|
#
|
|
280
278
|
# The default implementation returns an object of class HexaPDF::Font::InvalidGlyph which, when
|
|
281
|
-
# not removed before encoding, will raise
|
|
279
|
+
# not removed before encoding, will raise a HexaPDF::MissingGlyphError.
|
|
280
|
+
#
|
|
281
|
+
# If a replacement glyph should be displayed instead of an error, the following provides a good
|
|
282
|
+
# starting implementation:
|
|
283
|
+
#
|
|
284
|
+
# doc.config['font.on_missing_glyph'] = lambda do |character, font_wrapper|
|
|
285
|
+
# font_wrapper.custom_glyph(font_wrapper.font_type == :Type1 ? :question : 0, character)
|
|
286
|
+
# end
|
|
282
287
|
#
|
|
283
288
|
# font.on_missing_unicode_mapping::
|
|
284
289
|
# Callback hook when a character code point cannot be converted to a Unicode character.
|
|
@@ -298,11 +303,6 @@ module HexaPDF
|
|
|
298
303
|
#
|
|
299
304
|
# See the HexaPDF::FontLoader module for information on how to implement a font loader object.
|
|
300
305
|
#
|
|
301
|
-
# graphic_object.map::
|
|
302
|
-
# A mapping from graphic object names to graphic object factories.
|
|
303
|
-
#
|
|
304
|
-
# See HexaPDF::Content::GraphicObject for more information.
|
|
305
|
-
#
|
|
306
306
|
# graphic_object.arc.max_curves::
|
|
307
307
|
# The maximum number of curves used for approximating a complete ellipse using Bezier curves.
|
|
308
308
|
#
|
|
@@ -310,6 +310,11 @@ module HexaPDF
|
|
|
310
310
|
# to compute. It should not be set to values lower than 4, otherwise the approximation of a
|
|
311
311
|
# complete ellipse is visibly false.
|
|
312
312
|
#
|
|
313
|
+
# graphic_object.map::
|
|
314
|
+
# A mapping from graphic object names to graphic object factories.
|
|
315
|
+
#
|
|
316
|
+
# See HexaPDF::Content::GraphicObject for more information.
|
|
317
|
+
#
|
|
313
318
|
# image_loader::
|
|
314
319
|
# An array with image loader implementations. When an image should be loaded, the array is
|
|
315
320
|
# iterated in sequence to find a suitable image loader.
|
|
@@ -381,14 +386,6 @@ module HexaPDF
|
|
|
381
386
|
#
|
|
382
387
|
# Defaults to +true+.
|
|
383
388
|
#
|
|
384
|
-
# sorted_tree.max_leaf_node_size::
|
|
385
|
-
# The maximum number of nodes that should be in a leaf node of a node tree.
|
|
386
|
-
#
|
|
387
|
-
# style.layers_map::
|
|
388
|
-
# A mapping from style layer names to layer objects.
|
|
389
|
-
#
|
|
390
|
-
# See HexaPDF::Layout::Style::Layers for more information.
|
|
391
|
-
#
|
|
392
389
|
# signature.signing_handler::
|
|
393
390
|
# A mapping from a Symbol to a signing handler class (see
|
|
394
391
|
# HexaPDF::Document::Signatures::DefaultHandler). If the value is a String, it should contain
|
|
@@ -403,6 +400,14 @@ module HexaPDF
|
|
|
403
400
|
# filter value of a signature dictionary is ignored since we only support the standard
|
|
404
401
|
# signature algorithms.
|
|
405
402
|
#
|
|
403
|
+
# sorted_tree.max_leaf_node_size::
|
|
404
|
+
# The maximum number of nodes that should be in a leaf node of a node tree.
|
|
405
|
+
#
|
|
406
|
+
# style.layers_map::
|
|
407
|
+
# A mapping from style layer names to layer objects.
|
|
408
|
+
#
|
|
409
|
+
# See HexaPDF::Layout::Style::Layers for more information.
|
|
410
|
+
#
|
|
406
411
|
# task.map::
|
|
407
412
|
# A mapping from task names to callable task objects. See HexaPDF::Task for more information.
|
|
408
413
|
DefaultDocumentConfiguration =
|
|
@@ -459,13 +464,13 @@ module HexaPDF
|
|
|
459
464
|
'HexaPDF::FontLoader::FromConfiguration',
|
|
460
465
|
'HexaPDF::FontLoader::FromFile',
|
|
461
466
|
],
|
|
467
|
+
'graphic_object.arc.max_curves' => 6,
|
|
462
468
|
'graphic_object.map' => {
|
|
463
469
|
arc: 'HexaPDF::Content::GraphicObject::Arc',
|
|
464
470
|
endpoint_arc: 'HexaPDF::Content::GraphicObject::EndpointArc',
|
|
465
471
|
solid_arc: 'HexaPDF::Content::GraphicObject::SolidArc',
|
|
466
472
|
geom2d: 'HexaPDF::Content::GraphicObject::Geom2D',
|
|
467
473
|
},
|
|
468
|
-
'graphic_object.arc.max_curves' => 6,
|
|
469
474
|
'image_loader' => [
|
|
470
475
|
'HexaPDF::ImageLoader::JPEG',
|
|
471
476
|
'HexaPDF::ImageLoader::PNG',
|
|
@@ -479,15 +484,12 @@ module HexaPDF
|
|
|
479
484
|
image: 'HexaPDF::Layout::ImageBox',
|
|
480
485
|
column: 'HexaPDF::Layout::ColumnBox',
|
|
481
486
|
list: 'HexaPDF::Layout::ListBox',
|
|
487
|
+
table: 'HexaPDF::Layout::TableBox',
|
|
482
488
|
},
|
|
483
489
|
'page.default_media_box' => :A4,
|
|
484
490
|
'page.default_media_orientation' => :portrait,
|
|
485
491
|
'parser.on_correctable_error' => proc { false },
|
|
486
492
|
'parser.try_xref_reconstruction' => true,
|
|
487
|
-
'sorted_tree.max_leaf_node_size' => 64,
|
|
488
|
-
'style.layers_map' => {
|
|
489
|
-
link: 'HexaPDF::Layout::Style::LinkLayer',
|
|
490
|
-
},
|
|
491
493
|
'signature.signing_handler' => {
|
|
492
494
|
default: 'HexaPDF::DigitalSignature::Signing::DefaultHandler',
|
|
493
495
|
timestamp: 'HexaPDF::DigitalSignature::Signing::TimestampHandler',
|
|
@@ -498,6 +500,10 @@ module HexaPDF
|
|
|
498
500
|
'ETSI.CAdES.detached': 'HexaPDF::DigitalSignature::CMSHandler',
|
|
499
501
|
'ETSI.RFC3161': 'HexaPDF::DigitalSignature::CMSHandler',
|
|
500
502
|
},
|
|
503
|
+
'sorted_tree.max_leaf_node_size' => 64,
|
|
504
|
+
'style.layers_map' => {
|
|
505
|
+
link: 'HexaPDF::Layout::Style::LinkLayer',
|
|
506
|
+
},
|
|
501
507
|
'task.map' => {
|
|
502
508
|
optimize: 'HexaPDF::Task::Optimize',
|
|
503
509
|
dereference: 'HexaPDF::Task::Dereference',
|
|
@@ -512,12 +518,19 @@ module HexaPDF
|
|
|
512
518
|
#
|
|
513
519
|
# Classes for the most often used color space families are implemented and readily available.
|
|
514
520
|
#
|
|
515
|
-
# See
|
|
521
|
+
# See PDF2.0 s8.6
|
|
516
522
|
#
|
|
517
523
|
# filter.flate.compression::
|
|
518
524
|
# Specifies the compression level that should be used with the FlateDecode filter. The level
|
|
519
525
|
# can range from 0 (no compression), 1 (best speed) to 9 (best compression, default).
|
|
520
526
|
#
|
|
527
|
+
# filter.flate.memory::
|
|
528
|
+
# Specifies the memory level that should be used with the FlateDecode filter. The level can
|
|
529
|
+
# range from 1 (minimum memory usage; slow, reduces compression) to 9 (maximum memory usage).
|
|
530
|
+
#
|
|
531
|
+
# The HexaPDF default value of 6 has been found in tests to be nearly equivalent to the Zlib
|
|
532
|
+
# default of 8 in terms of speed and compression level but uses less memory.
|
|
533
|
+
#
|
|
521
534
|
# filter.flate.on_error::
|
|
522
535
|
# Callback hook when a potentially recoverable Zlib error occurs in the FlateDecode filter.
|
|
523
536
|
#
|
|
@@ -527,13 +540,6 @@ module HexaPDF
|
|
|
527
540
|
#
|
|
528
541
|
# The default implementation prevents errors from being raised.
|
|
529
542
|
#
|
|
530
|
-
# filter.flate.memory::
|
|
531
|
-
# Specifies the memory level that should be used with the FlateDecode filter. The level can
|
|
532
|
-
# range from 1 (minimum memory usage; slow, reduces compression) to 9 (maximum memory usage).
|
|
533
|
-
#
|
|
534
|
-
# The HexaPDF default value of 6 has been found in tests to be nearly equivalent to the Zlib
|
|
535
|
-
# default of 8 in terms of speed and compression level but uses less memory.
|
|
536
|
-
#
|
|
537
543
|
# filter.predictor.strict::
|
|
538
544
|
# Specifies whether the predictor algorithm used by LZWDecode and FlateDecode should operate in
|
|
539
545
|
# strict mode, i.e. adhering to the PDF specification without correcting for common deficiences
|
|
@@ -555,15 +561,15 @@ module HexaPDF
|
|
|
555
561
|
# This mapping is used to provide automatic wrapping of objects in the HexaPDF::Document#wrap
|
|
556
562
|
# method.
|
|
557
563
|
GlobalConfiguration =
|
|
558
|
-
Configuration.new('
|
|
559
|
-
'filter.flate.on_error' => proc { false },
|
|
560
|
-
'filter.flate.memory' => 6,
|
|
561
|
-
'filter.predictor.strict' => false,
|
|
562
|
-
'color_space.map' => {
|
|
564
|
+
Configuration.new('color_space.map' => {
|
|
563
565
|
DeviceRGB: 'HexaPDF::Content::ColorSpace::DeviceRGB',
|
|
564
566
|
DeviceCMYK: 'HexaPDF::Content::ColorSpace::DeviceCMYK',
|
|
565
567
|
DeviceGray: 'HexaPDF::Content::ColorSpace::DeviceGray',
|
|
566
568
|
},
|
|
569
|
+
'filter.flate.compression' => 9,
|
|
570
|
+
'filter.flate.memory' => 6,
|
|
571
|
+
'filter.flate.on_error' => proc { false },
|
|
572
|
+
'filter.predictor.strict' => false,
|
|
567
573
|
'object.type_map' => {
|
|
568
574
|
XRef: 'HexaPDF::Type::XRefStream',
|
|
569
575
|
ObjStm: 'HexaPDF::Type::ObjectStream',
|
|
@@ -604,6 +610,23 @@ module HexaPDF
|
|
|
604
610
|
XXOutlineItem: 'HexaPDF::Type::OutlineItem',
|
|
605
611
|
PageLabel: 'HexaPDF::Type::PageLabel',
|
|
606
612
|
XXMarkInformation: 'HexaPDF::Type::MarkInformation',
|
|
613
|
+
OCG: 'HexaPDF::Type::OptionalContentGroup',
|
|
614
|
+
OCMD: 'HexaPDF::Type::OptionalContentMembership',
|
|
615
|
+
XXOCUsage: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage',
|
|
616
|
+
XXOCUsageCreatorInfo: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::CreatorInfo',
|
|
617
|
+
XXOCUsageLanguage: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::Language',
|
|
618
|
+
XXOCUsageExport: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::Export',
|
|
619
|
+
XXOCUsageZoom: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::Zoom',
|
|
620
|
+
XXOCUsagePrint: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::Print',
|
|
621
|
+
XXOCUsageView: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::View',
|
|
622
|
+
XXOCUsageUser: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::User',
|
|
623
|
+
XXOCUsagePageElement: 'HexaPDF::Type::OptionalContentGroup::OptionalContentUsage::PageElement',
|
|
624
|
+
XXOCProperties: 'HexaPDF::Type::OptionalContentProperties',
|
|
625
|
+
XXOCConfiguration: 'HexaPDF::Type::OptionalContentConfiguration',
|
|
626
|
+
XXOCUsageApplication: 'HexaPDF::Type::OptionalContentConfiguration::UsageApplication',
|
|
627
|
+
XXReference: 'HexaPDF::Type::Form::Reference',
|
|
628
|
+
XXCIDSystemInfo: 'HexaPDF::Type::CIDFont::CIDSystemInfo',
|
|
629
|
+
Group: 'HexaPDF::Type::Form::Group',
|
|
607
630
|
},
|
|
608
631
|
'object.subtype_map' => {
|
|
609
632
|
nil => {
|
|
@@ -618,6 +641,7 @@ module HexaPDF
|
|
|
618
641
|
GoToR: 'HexaPDF::Type::Actions::GoToR',
|
|
619
642
|
Launch: 'HexaPDF::Type::Actions::Launch',
|
|
620
643
|
URI: 'HexaPDF::Type::Actions::URI',
|
|
644
|
+
SetOCGState: 'HexaPDF::Type::Actions::SetOCGState',
|
|
621
645
|
Text: 'HexaPDF::Type::Annotations::Text',
|
|
622
646
|
Link: 'HexaPDF::Type::Annotations::Link',
|
|
623
647
|
Widget: 'HexaPDF::Type::Annotations::Widget',
|
|
@@ -639,6 +663,7 @@ module HexaPDF
|
|
|
639
663
|
GoToR: 'HexaPDF::Type::Actions::GoToR',
|
|
640
664
|
Launch: 'HexaPDF::Type::Actions::Launch',
|
|
641
665
|
URI: 'HexaPDF::Type::Actions::URI',
|
|
666
|
+
SetOCGState: 'HexaPDF::Type::Actions::SetOCGState',
|
|
642
667
|
},
|
|
643
668
|
Annot: {
|
|
644
669
|
Text: 'HexaPDF::Type::Annotations::Text',
|