hexapdf 0.6.0 → 0.7.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 +5 -5
- data/CHANGELOG.md +33 -0
- data/CONTRIBUTERS +1 -1
- data/LICENSE +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/hexapdf +1 -1
- data/examples/text_layouter_styling.rb +1 -2
- data/lib/hexapdf.rb +2 -2
- data/lib/hexapdf/cli.rb +3 -3
- data/lib/hexapdf/cli/batch.rb +5 -5
- data/lib/hexapdf/cli/command.rb +15 -17
- data/lib/hexapdf/cli/files.rb +3 -3
- data/lib/hexapdf/cli/images.rb +3 -4
- data/lib/hexapdf/cli/info.rb +5 -5
- data/lib/hexapdf/cli/inspect.rb +6 -6
- data/lib/hexapdf/cli/merge.rb +6 -6
- data/lib/hexapdf/cli/modify.rb +4 -4
- data/lib/hexapdf/cli/optimize.rb +3 -3
- data/lib/hexapdf/configuration.rb +4 -5
- data/lib/hexapdf/content.rb +2 -2
- data/lib/hexapdf/content/canvas.rb +35 -36
- data/lib/hexapdf/content/color_space.rb +9 -14
- data/lib/hexapdf/content/graphic_object.rb +2 -2
- data/lib/hexapdf/content/graphic_object/arc.rb +3 -3
- data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +2 -2
- data/lib/hexapdf/content/graphic_object/solid_arc.rb +4 -8
- data/lib/hexapdf/content/graphics_state.rb +4 -13
- data/lib/hexapdf/content/operator.rb +33 -35
- data/lib/hexapdf/content/parser.rb +28 -18
- data/lib/hexapdf/content/processor.rb +4 -5
- data/lib/hexapdf/content/transformation_matrix.rb +2 -2
- data/lib/hexapdf/data_dir.rb +2 -2
- data/lib/hexapdf/dictionary.rb +8 -9
- data/lib/hexapdf/dictionary_fields.rb +7 -10
- data/lib/hexapdf/document.rb +18 -18
- data/lib/hexapdf/document/files.rb +12 -10
- data/lib/hexapdf/document/fonts.rb +2 -2
- data/lib/hexapdf/document/images.rb +3 -3
- data/lib/hexapdf/document/pages.rb +4 -4
- data/lib/hexapdf/encryption.rb +2 -2
- data/lib/hexapdf/encryption/aes.rb +2 -2
- data/lib/hexapdf/encryption/arc4.rb +4 -4
- data/lib/hexapdf/encryption/fast_aes.rb +2 -2
- data/lib/hexapdf/encryption/fast_arc4.rb +4 -4
- data/lib/hexapdf/encryption/identity.rb +5 -4
- data/lib/hexapdf/encryption/ruby_aes.rb +147 -139
- data/lib/hexapdf/encryption/ruby_arc4.rb +4 -4
- data/lib/hexapdf/encryption/security_handler.rb +11 -12
- data/lib/hexapdf/encryption/standard_security_handler.rb +6 -9
- data/lib/hexapdf/error.rb +7 -9
- data/lib/hexapdf/filter.rb +2 -3
- data/lib/hexapdf/filter/ascii85_decode.rb +3 -3
- data/lib/hexapdf/filter/ascii_hex_decode.rb +2 -2
- data/lib/hexapdf/filter/dct_decode.rb +2 -2
- data/lib/hexapdf/filter/encryption.rb +2 -2
- data/lib/hexapdf/filter/flate_decode.rb +16 -33
- data/lib/hexapdf/filter/jpx_decode.rb +2 -2
- data/lib/hexapdf/filter/lzw_decode.rb +4 -4
- data/lib/hexapdf/filter/predictor.rb +2 -6
- data/lib/hexapdf/filter/run_length_decode.rb +2 -2
- data/lib/hexapdf/font/cmap.rb +2 -3
- data/lib/hexapdf/font/cmap/parser.rb +11 -11
- data/lib/hexapdf/font/cmap/writer.rb +25 -25
- data/lib/hexapdf/font/encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/base.rb +2 -2
- data/lib/hexapdf/font/encoding/difference_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/glyph_list.rb +6 -6
- data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/standard_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/symbol_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/win_ansi_encoding.rb +2 -2
- data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +2 -2
- data/lib/hexapdf/font/invalid_glyph.rb +7 -7
- data/lib/hexapdf/font/true_type.rb +2 -2
- data/lib/hexapdf/font/true_type/builder.rb +13 -7
- data/lib/hexapdf/font/true_type/font.rb +2 -3
- data/lib/hexapdf/font/true_type/optimizer.rb +2 -2
- data/lib/hexapdf/font/true_type/subsetter.rb +4 -4
- data/lib/hexapdf/font/true_type/table.rb +3 -5
- data/lib/hexapdf/font/true_type/table/cmap.rb +2 -2
- data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +9 -16
- data/lib/hexapdf/font/true_type/table/directory.rb +4 -4
- data/lib/hexapdf/font/true_type/table/glyf.rb +2 -2
- data/lib/hexapdf/font/true_type/table/head.rb +3 -2
- data/lib/hexapdf/font/true_type/table/hhea.rb +2 -2
- data/lib/hexapdf/font/true_type/table/hmtx.rb +2 -2
- data/lib/hexapdf/font/true_type/table/kern.rb +3 -3
- data/lib/hexapdf/font/true_type/table/loca.rb +3 -3
- data/lib/hexapdf/font/true_type/table/maxp.rb +2 -2
- data/lib/hexapdf/font/true_type/table/name.rb +3 -5
- data/lib/hexapdf/font/true_type/table/os2.rb +4 -3
- data/lib/hexapdf/font/true_type/table/post.rb +3 -7
- data/lib/hexapdf/font/true_type_wrapper.rb +20 -22
- data/lib/hexapdf/font/type1.rb +2 -2
- data/lib/hexapdf/font/type1/afm_parser.rb +7 -7
- data/lib/hexapdf/font/type1/character_metrics.rb +2 -2
- data/lib/hexapdf/font/type1/font.rb +3 -3
- data/lib/hexapdf/font/type1/font_metrics.rb +2 -4
- data/lib/hexapdf/font/type1/pfb_parser.rb +2 -2
- data/lib/hexapdf/font/type1_wrapper.rb +8 -9
- data/lib/hexapdf/font_loader.rb +2 -2
- data/lib/hexapdf/font_loader/from_configuration.rb +2 -2
- data/lib/hexapdf/font_loader/from_file.rb +2 -2
- data/lib/hexapdf/font_loader/standard14.rb +2 -2
- data/lib/hexapdf/image_loader.rb +2 -2
- data/lib/hexapdf/image_loader/jpeg.rb +6 -4
- data/lib/hexapdf/image_loader/pdf.rb +2 -2
- data/lib/hexapdf/image_loader/png.rb +6 -6
- data/lib/hexapdf/importer.rb +6 -4
- data/lib/hexapdf/layout.rb +2 -2
- data/lib/hexapdf/layout/box.rb +4 -4
- data/lib/hexapdf/layout/inline_box.rb +2 -2
- data/lib/hexapdf/layout/line.rb +6 -6
- data/lib/hexapdf/layout/numeric_refinements.rb +2 -2
- data/lib/hexapdf/layout/style.rb +17 -8
- data/lib/hexapdf/layout/text_fragment.rb +86 -48
- data/lib/hexapdf/layout/text_layouter.rb +40 -21
- data/lib/hexapdf/layout/text_shaper.rb +2 -2
- data/lib/hexapdf/name_tree_node.rb +2 -2
- data/lib/hexapdf/number_tree_node.rb +2 -2
- data/lib/hexapdf/object.rb +6 -8
- data/lib/hexapdf/parser.rb +10 -10
- data/lib/hexapdf/rectangle.rb +4 -4
- data/lib/hexapdf/reference.rb +2 -2
- data/lib/hexapdf/revision.rb +4 -4
- data/lib/hexapdf/revisions.rb +5 -5
- data/lib/hexapdf/serializer.rb +27 -24
- data/lib/hexapdf/stream.rb +4 -4
- data/lib/hexapdf/task.rb +2 -2
- data/lib/hexapdf/task/dereference.rb +4 -4
- data/lib/hexapdf/task/optimize.rb +5 -4
- data/lib/hexapdf/tokenizer.rb +12 -14
- data/lib/hexapdf/type.rb +2 -2
- data/lib/hexapdf/type/action.rb +3 -3
- data/lib/hexapdf/type/actions.rb +2 -2
- data/lib/hexapdf/type/actions/go_to.rb +2 -2
- data/lib/hexapdf/type/actions/go_to_r.rb +2 -2
- data/lib/hexapdf/type/actions/launch.rb +2 -2
- data/lib/hexapdf/type/actions/uri.rb +3 -3
- data/lib/hexapdf/type/annotation.rb +3 -3
- data/lib/hexapdf/type/annotations.rb +2 -2
- data/lib/hexapdf/type/annotations/link.rb +2 -2
- data/lib/hexapdf/type/annotations/markup_annotation.rb +2 -2
- data/lib/hexapdf/type/annotations/text.rb +2 -2
- data/lib/hexapdf/type/catalog.rb +4 -4
- data/lib/hexapdf/type/cid_font.rb +4 -5
- data/lib/hexapdf/type/embedded_file.rb +3 -3
- data/lib/hexapdf/type/file_specification.rb +6 -7
- data/lib/hexapdf/type/font.rb +4 -4
- data/lib/hexapdf/type/font_descriptor.rb +3 -4
- data/lib/hexapdf/type/font_simple.rb +12 -16
- data/lib/hexapdf/type/font_true_type.rb +2 -2
- data/lib/hexapdf/type/font_type0.rb +5 -5
- data/lib/hexapdf/type/font_type1.rb +4 -4
- data/lib/hexapdf/type/form.rb +3 -3
- data/lib/hexapdf/type/graphics_state_parameter.rb +3 -3
- data/lib/hexapdf/type/image.rb +13 -14
- data/lib/hexapdf/type/info.rb +2 -2
- data/lib/hexapdf/type/names.rb +2 -2
- data/lib/hexapdf/type/object_stream.rb +5 -5
- data/lib/hexapdf/type/page.rb +9 -10
- data/lib/hexapdf/type/page_tree_node.rb +5 -6
- data/lib/hexapdf/type/resources.rb +11 -11
- data/lib/hexapdf/type/trailer.rb +3 -3
- data/lib/hexapdf/type/viewer_preferences.rb +2 -2
- data/lib/hexapdf/type/xref_stream.rb +8 -4
- data/lib/hexapdf/utils/bit_field.rb +4 -4
- data/lib/hexapdf/utils/bit_stream.rb +4 -4
- data/lib/hexapdf/utils/graphics_helpers.rb +2 -2
- data/lib/hexapdf/utils/lru_cache.rb +2 -2
- data/lib/hexapdf/utils/math_helpers.rb +2 -2
- data/lib/hexapdf/utils/object_hash.rb +3 -3
- data/lib/hexapdf/utils/pdf_doc_encoding.rb +3 -3
- data/lib/hexapdf/utils/sorted_tree_node.rb +12 -11
- data/lib/hexapdf/version.rb +3 -3
- data/lib/hexapdf/writer.rb +8 -8
- data/lib/hexapdf/xref_section.rb +3 -3
- data/test/hexapdf/common_tokenizer_tests.rb +6 -7
- data/test/hexapdf/content/graphic_object/test_endpoint_arc.rb +0 -1
- data/test/hexapdf/content/test_canvas.rb +28 -36
- data/test/hexapdf/content/test_color_space.rb +4 -0
- data/test/hexapdf/content/test_graphics_state.rb +2 -0
- data/test/hexapdf/content/test_operator.rb +6 -7
- data/test/hexapdf/content/test_parser.rb +2 -2
- data/test/hexapdf/content/test_processor.rb +1 -1
- data/test/hexapdf/document/test_files.rb +1 -0
- data/test/hexapdf/document/test_images.rb +1 -1
- data/test/hexapdf/encryption/common.rb +3 -3
- data/test/hexapdf/encryption/test_aes.rb +10 -4
- data/test/hexapdf/encryption/test_identity.rb +1 -1
- data/test/hexapdf/encryption/test_security_handler.rb +13 -17
- data/test/hexapdf/encryption/test_standard_security_handler.rb +12 -12
- data/test/hexapdf/filter/test_ascii85_decode.rb +2 -3
- data/test/hexapdf/filter/test_ascii_hex_decode.rb +6 -1
- data/test/hexapdf/filter/test_flate_decode.rb +2 -2
- data/test/hexapdf/filter/test_lzw_decode.rb +10 -10
- data/test/hexapdf/filter/test_predictor.rb +10 -2
- data/test/hexapdf/filter/test_run_length_decode.rb +1 -1
- data/test/hexapdf/font/cmap/test_parser.rb +40 -40
- data/test/hexapdf/font/cmap/test_writer.rb +29 -29
- data/test/hexapdf/font/test_true_type_wrapper.rb +3 -2
- data/test/hexapdf/font/true_type/common.rb +2 -0
- data/test/hexapdf/font/true_type/table/test_cmap.rb +1 -1
- data/test/hexapdf/font/true_type/table/test_cmap_subtable.rb +5 -4
- data/test/hexapdf/font/true_type/table/test_glyf.rb +2 -2
- data/test/hexapdf/font/true_type/table/test_head.rb +2 -2
- data/test/hexapdf/font/true_type/table/test_name.rb +9 -6
- data/test/hexapdf/font/true_type/test_builder.rb +8 -3
- data/test/hexapdf/font/true_type/test_optimizer.rb +1 -2
- data/test/hexapdf/font/type1/test_afm_parser.rb +2 -2
- data/test/hexapdf/image_loader/test_jpeg.rb +1 -1
- data/test/hexapdf/image_loader/test_pdf.rb +1 -1
- data/test/hexapdf/image_loader/test_png.rb +3 -3
- data/test/hexapdf/layout/test_inline_box.rb +10 -1
- data/test/hexapdf/layout/test_line.rb +4 -4
- data/test/hexapdf/layout/test_style.rb +19 -7
- data/test/hexapdf/layout/test_text_fragment.rb +73 -27
- data/test/hexapdf/layout/test_text_layouter.rb +84 -68
- data/test/hexapdf/layout/test_text_shaper.rb +4 -6
- data/test/hexapdf/task/test_dereference.rb +2 -2
- data/test/hexapdf/task/test_optimize.rb +16 -7
- data/test/hexapdf/test_configuration.rb +1 -1
- data/test/hexapdf/test_data_dir.rb +2 -2
- data/test/hexapdf/test_dictionary.rb +6 -3
- data/test/hexapdf/test_dictionary_fields.rb +15 -14
- data/test/hexapdf/test_document.rb +47 -48
- data/test/hexapdf/test_filter.rb +30 -26
- data/test/hexapdf/test_importer.rb +14 -0
- data/test/hexapdf/test_object.rb +16 -4
- data/test/hexapdf/test_parser.rb +36 -36
- data/test/hexapdf/test_reference.rb +7 -5
- data/test/hexapdf/test_revision.rb +1 -1
- data/test/hexapdf/test_revisions.rb +90 -90
- data/test/hexapdf/test_serializer.rb +3 -2
- data/test/hexapdf/test_stream.rb +2 -4
- data/test/hexapdf/test_tokenizer.rb +2 -2
- data/test/hexapdf/test_writer.rb +80 -80
- data/test/hexapdf/test_xref_section.rb +1 -1
- data/test/hexapdf/type/annotations/test_link.rb +1 -1
- data/test/hexapdf/type/annotations/test_text.rb +3 -3
- data/test/hexapdf/type/test_font_descriptor.rb +1 -1
- data/test/hexapdf/type/test_font_simple.rb +2 -2
- data/test/hexapdf/type/test_font_type0.rb +0 -1
- data/test/hexapdf/type/test_image.rb +0 -3
- data/test/hexapdf/type/test_object_stream.rb +2 -1
- data/test/hexapdf/type/test_page.rb +5 -1
- data/test/hexapdf/type/test_page_tree_node.rb +4 -4
- data/test/hexapdf/type/test_trailer.rb +1 -1
- data/test/hexapdf/type/test_xref_stream.rb +4 -0
- data/test/hexapdf/utils/test_bit_field.rb +2 -0
- data/test/hexapdf/utils/test_bit_stream.rb +1 -1
- data/test/hexapdf/utils/test_lru_cache.rb +1 -1
- data/test/hexapdf/utils/test_sorted_tree_node.rb +10 -4
- data/test/test_helper.rb +3 -6
- metadata +3 -3
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -159,7 +159,7 @@ module HexaPDF
|
|
|
159
159
|
def draw(canvas, move_to_start: true)
|
|
160
160
|
@max_curves = canvas.context.document.config['graphic_object.arc.max_curves']
|
|
161
161
|
canvas.move_to(*start_point) if move_to_start
|
|
162
|
-
curves.each {|curve| canvas.curve_to(*curve)}
|
|
162
|
+
curves.each {|curve| canvas.curve_to(*curve) }
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
# Returns an array of arrays that contain the points for the Bezier curves which are used
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -138,12 +138,10 @@ module HexaPDF
|
|
|
138
138
|
inclination: @inclination, clockwise: false)
|
|
139
139
|
if angle_difference == 0
|
|
140
140
|
arc.draw(canvas)
|
|
141
|
-
canvas.close_subpath
|
|
142
141
|
else
|
|
143
142
|
canvas.move_to(@cx, @cy)
|
|
144
143
|
canvas.line_to(*arc.start_point)
|
|
145
144
|
arc.draw(canvas, move_to_start: false)
|
|
146
|
-
canvas.close_subpath
|
|
147
145
|
end
|
|
148
146
|
else
|
|
149
147
|
inner = canvas.graphic_object(:arc, cx: @cx, cy: @cy, a: @inner_a, b: @inner_b,
|
|
@@ -152,18 +150,16 @@ module HexaPDF
|
|
|
152
150
|
outer = canvas.graphic_object(:arc, cx: @cx, cy: @cy, a: @outer_a, b: @outer_b,
|
|
153
151
|
start_angle: @start_angle, end_angle: @end_angle,
|
|
154
152
|
inclination: @inclination, clockwise: false)
|
|
153
|
+
outer.draw(canvas)
|
|
155
154
|
if angle_difference == 0
|
|
156
|
-
outer.draw(canvas)
|
|
157
155
|
canvas.close_subpath
|
|
158
156
|
inner.draw(canvas)
|
|
159
|
-
canvas.close_subpath
|
|
160
157
|
else
|
|
161
|
-
outer.draw(canvas)
|
|
162
158
|
canvas.line_to(*inner.start_point)
|
|
163
159
|
inner.draw(canvas, move_to_start: false)
|
|
164
|
-
canvas.close_subpath
|
|
165
160
|
end
|
|
166
161
|
end
|
|
162
|
+
canvas.close_subpath
|
|
167
163
|
end
|
|
168
164
|
|
|
169
165
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -69,7 +69,6 @@ module HexaPDF
|
|
|
69
69
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
|
|
73
72
|
# Defines all available line cap styles as constants. Each line cap style is an instance of
|
|
74
73
|
# NamedValue. For use with Content::GraphicsState#line_cap_style.
|
|
75
74
|
#
|
|
@@ -103,7 +102,6 @@ module HexaPDF
|
|
|
103
102
|
|
|
104
103
|
end
|
|
105
104
|
|
|
106
|
-
|
|
107
105
|
# Defines all available line join styles as constants. Each line join style is an instance of
|
|
108
106
|
# NamedValue. For use with Content::GraphicsState#line_join_style.
|
|
109
107
|
#
|
|
@@ -138,7 +136,6 @@ module HexaPDF
|
|
|
138
136
|
|
|
139
137
|
end
|
|
140
138
|
|
|
141
|
-
|
|
142
139
|
# The line dash pattern defines how a line should be dashed. For use with
|
|
143
140
|
# Content::GraphicsState#line_dash_pattern.
|
|
144
141
|
#
|
|
@@ -186,7 +183,7 @@ module HexaPDF
|
|
|
186
183
|
# non-negative and must not all be zero.
|
|
187
184
|
def initialize(array = [], phase = 0)
|
|
188
185
|
if phase < 0 || (!array.empty? &&
|
|
189
|
-
array.inject(0) {|m, n| m < 0 ? m : (n < 0 ? -1 : m + n)} <= 0)
|
|
186
|
+
array.inject(0) {|m, n| m < 0 ? m : (n < 0 ? -1 : m + n) } <= 0)
|
|
190
187
|
raise ArgumentError, "Invalid line dash pattern: #{array.inspect} #{phase.inspect}"
|
|
191
188
|
end
|
|
192
189
|
@array = array.freeze
|
|
@@ -206,7 +203,6 @@ module HexaPDF
|
|
|
206
203
|
|
|
207
204
|
end
|
|
208
205
|
|
|
209
|
-
|
|
210
206
|
# Defines all available rendering intents as constants. For use with
|
|
211
207
|
# Content::GraphicsState#rendering_intent.
|
|
212
208
|
#
|
|
@@ -241,7 +237,6 @@ module HexaPDF
|
|
|
241
237
|
|
|
242
238
|
end
|
|
243
239
|
|
|
244
|
-
|
|
245
240
|
# Defines all available text rendering modes as constants. Each text rendering mode is an
|
|
246
241
|
# instance of NamedValue. For use with Content::GraphicsState#text_rendering_mode.
|
|
247
242
|
#
|
|
@@ -300,7 +295,6 @@ module HexaPDF
|
|
|
300
295
|
|
|
301
296
|
end
|
|
302
297
|
|
|
303
|
-
|
|
304
298
|
# A GraphicsState object holds all the graphic control parameters needed for correct
|
|
305
299
|
# operation when parsing or creating a content stream with a Processor object.
|
|
306
300
|
#
|
|
@@ -360,7 +354,6 @@ module HexaPDF
|
|
|
360
354
|
# interpreted as shape values or opacity values.
|
|
361
355
|
attr_accessor :alpha_source
|
|
362
356
|
|
|
363
|
-
|
|
364
357
|
# The text matrix.
|
|
365
358
|
#
|
|
366
359
|
# This attribute is non-nil only when inside a text object.
|
|
@@ -417,7 +410,6 @@ module HexaPDF
|
|
|
417
410
|
# all glyphs together are treated as one elementary object (knockout = +true+).
|
|
418
411
|
attr_accessor :text_knockout
|
|
419
412
|
|
|
420
|
-
|
|
421
413
|
# The scaled character spacing used in glyph displacement calculations.
|
|
422
414
|
#
|
|
423
415
|
# This returns the value T_c multiplied by #scaled_horizontal_scaling.
|
|
@@ -447,12 +439,11 @@ module HexaPDF
|
|
|
447
439
|
# See PDF1.7 s9.4.4
|
|
448
440
|
attr_reader :scaled_horizontal_scaling
|
|
449
441
|
|
|
450
|
-
|
|
451
442
|
# Initializes the graphics state parameters to their default values.
|
|
452
443
|
def initialize
|
|
453
444
|
@ctm = TransformationMatrix.new
|
|
454
445
|
@stroke_color = @fill_color =
|
|
455
|
-
GlobalConfiguration.constantize('color_space.map'
|
|
446
|
+
GlobalConfiguration.constantize('color_space.map', :DeviceGray).new.default_color
|
|
456
447
|
@line_width = 1.0
|
|
457
448
|
@line_cap_style = LineCapStyle::BUTT_CAP
|
|
458
449
|
@line_join_style = LineJoinStyle::MITER_JOIN
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# -*- encoding: utf-8; frozen_string_literal: true -*-
|
|
2
2
|
#
|
|
3
3
|
#--
|
|
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-2018 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
|
|
@@ -102,9 +102,9 @@ module HexaPDF
|
|
|
102
102
|
def serialize(serializer, *operands)
|
|
103
103
|
result = ''.b
|
|
104
104
|
operands.each do |operand|
|
|
105
|
-
result << serializer.serialize(operand) << " "
|
|
105
|
+
result << serializer.serialize(operand) << " "
|
|
106
106
|
end
|
|
107
|
-
result << name << "\n"
|
|
107
|
+
result << name << "\n"
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
end
|
|
@@ -115,7 +115,7 @@ module HexaPDF
|
|
|
115
115
|
|
|
116
116
|
def initialize(name) #:nodoc:
|
|
117
117
|
super(name)
|
|
118
|
-
@serialized = "#{name}\n"
|
|
118
|
+
@serialized = "#{name}\n"
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
def invoke(_processor) # :nodoc:
|
|
@@ -277,7 +277,7 @@ module HexaPDF
|
|
|
277
277
|
|
|
278
278
|
def serialize(serializer, dash_array, dash_phase) #:nodoc:
|
|
279
279
|
"#{serializer.serialize_array(dash_array)} " \
|
|
280
|
-
"#{serializer.serialize_integer(dash_phase)} d\n"
|
|
280
|
+
"#{serializer.serialize_integer(dash_phase)} d\n"
|
|
281
281
|
end
|
|
282
282
|
|
|
283
283
|
end
|
|
@@ -297,7 +297,7 @@ module HexaPDF
|
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
def serialize(serializer, intent) #:nodoc:
|
|
300
|
-
"#{serializer.serialize_symbol(intent)} ri\n"
|
|
300
|
+
"#{serializer.serialize_symbol(intent)} ri\n"
|
|
301
301
|
end
|
|
302
302
|
|
|
303
303
|
end
|
|
@@ -342,7 +342,7 @@ module HexaPDF
|
|
|
342
342
|
end
|
|
343
343
|
|
|
344
344
|
def serialize(serializer, name) #:nodoc:
|
|
345
|
-
"#{serializer.serialize_symbol(name)} gs\n"
|
|
345
|
+
"#{serializer.serialize_symbol(name)} gs\n"
|
|
346
346
|
end
|
|
347
347
|
|
|
348
348
|
end
|
|
@@ -362,7 +362,7 @@ module HexaPDF
|
|
|
362
362
|
end
|
|
363
363
|
|
|
364
364
|
def serialize(serializer, name) #:nodoc:
|
|
365
|
-
"#{serializer.serialize_symbol(name)} CS\n"
|
|
365
|
+
"#{serializer.serialize_symbol(name)} CS\n"
|
|
366
366
|
end
|
|
367
367
|
|
|
368
368
|
end
|
|
@@ -382,7 +382,7 @@ module HexaPDF
|
|
|
382
382
|
end
|
|
383
383
|
|
|
384
384
|
def serialize(serializer, name) #:nodoc:
|
|
385
|
-
"#{serializer.serialize_symbol(name)} cs\n"
|
|
385
|
+
"#{serializer.serialize_symbol(name)} cs\n"
|
|
386
386
|
end
|
|
387
387
|
|
|
388
388
|
end
|
|
@@ -461,7 +461,7 @@ module HexaPDF
|
|
|
461
461
|
|
|
462
462
|
def serialize(serializer, r, g, b) #:nodoc:
|
|
463
463
|
"#{serializer.serialize_numeric(r)} #{serializer.serialize_numeric(g)} " \
|
|
464
|
-
"#{serializer.serialize_numeric(b)} RG\n"
|
|
464
|
+
"#{serializer.serialize_numeric(b)} RG\n"
|
|
465
465
|
end
|
|
466
466
|
|
|
467
467
|
end
|
|
@@ -483,7 +483,7 @@ module HexaPDF
|
|
|
483
483
|
|
|
484
484
|
def serialize(serializer, r, g, b) #:nodoc:
|
|
485
485
|
"#{serializer.serialize_numeric(r)} #{serializer.serialize_numeric(g)} " \
|
|
486
|
-
"#{serializer.serialize_numeric(b)} rg\n"
|
|
486
|
+
"#{serializer.serialize_numeric(b)} rg\n"
|
|
487
487
|
end
|
|
488
488
|
|
|
489
489
|
end
|
|
@@ -505,7 +505,7 @@ module HexaPDF
|
|
|
505
505
|
|
|
506
506
|
def serialize(serializer, c, m, y, k) #:nodoc:
|
|
507
507
|
"#{serializer.serialize_numeric(c)} #{serializer.serialize_numeric(m)} " \
|
|
508
|
-
"#{serializer.serialize_numeric(y)} #{serializer.serialize_numeric(k)} K\n"
|
|
508
|
+
"#{serializer.serialize_numeric(y)} #{serializer.serialize_numeric(k)} K\n"
|
|
509
509
|
end
|
|
510
510
|
|
|
511
511
|
end
|
|
@@ -527,7 +527,7 @@ module HexaPDF
|
|
|
527
527
|
|
|
528
528
|
def serialize(serializer, c, m, y, k) #:nodoc:
|
|
529
529
|
"#{serializer.serialize_numeric(c)} #{serializer.serialize_numeric(m)} " \
|
|
530
|
-
"#{serializer.serialize_numeric(y)} #{serializer.serialize_numeric(k)} k\n"
|
|
530
|
+
"#{serializer.serialize_numeric(y)} #{serializer.serialize_numeric(k)} k\n"
|
|
531
531
|
end
|
|
532
532
|
|
|
533
533
|
end
|
|
@@ -547,7 +547,7 @@ module HexaPDF
|
|
|
547
547
|
end
|
|
548
548
|
|
|
549
549
|
def serialize(serializer, x, y) #:nodoc:
|
|
550
|
-
"#{serializer.serialize_numeric(x)} #{serializer.serialize_numeric(y)} m\n"
|
|
550
|
+
"#{serializer.serialize_numeric(x)} #{serializer.serialize_numeric(y)} m\n"
|
|
551
551
|
end
|
|
552
552
|
|
|
553
553
|
end
|
|
@@ -568,7 +568,7 @@ module HexaPDF
|
|
|
568
568
|
|
|
569
569
|
def serialize(serializer, x, y, w, h) #:nodoc:
|
|
570
570
|
"#{serializer.serialize_numeric(x)} #{serializer.serialize_numeric(y)} " \
|
|
571
|
-
"#{serializer.serialize_numeric(w)} #{serializer.serialize_numeric(h)} re\n"
|
|
571
|
+
"#{serializer.serialize_numeric(w)} #{serializer.serialize_numeric(h)} re\n"
|
|
572
572
|
end
|
|
573
573
|
|
|
574
574
|
end
|
|
@@ -587,7 +587,7 @@ module HexaPDF
|
|
|
587
587
|
end
|
|
588
588
|
|
|
589
589
|
def serialize(serializer, x, y) #:nodoc:
|
|
590
|
-
"#{serializer.serialize_numeric(x)} #{serializer.serialize_numeric(y)} l\n"
|
|
590
|
+
"#{serializer.serialize_numeric(x)} #{serializer.serialize_numeric(y)} l\n"
|
|
591
591
|
end
|
|
592
592
|
|
|
593
593
|
end
|
|
@@ -605,7 +605,7 @@ module HexaPDF
|
|
|
605
605
|
def serialize(serializer, x1, y1, x2, y2, x3, y3) #:nodoc:
|
|
606
606
|
"#{serializer.serialize_numeric(x1)} #{serializer.serialize_numeric(y1)} " \
|
|
607
607
|
"#{serializer.serialize_numeric(x2)} #{serializer.serialize_numeric(y2)} " \
|
|
608
|
-
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} c\n"
|
|
608
|
+
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} c\n"
|
|
609
609
|
end
|
|
610
610
|
|
|
611
611
|
end
|
|
@@ -622,7 +622,7 @@ module HexaPDF
|
|
|
622
622
|
|
|
623
623
|
def serialize(serializer, x2, y2, x3, y3) #:nodoc:
|
|
624
624
|
"#{serializer.serialize_numeric(x2)} #{serializer.serialize_numeric(y2)} " \
|
|
625
|
-
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} v\n"
|
|
625
|
+
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} v\n"
|
|
626
626
|
end
|
|
627
627
|
|
|
628
628
|
end
|
|
@@ -639,7 +639,7 @@ module HexaPDF
|
|
|
639
639
|
|
|
640
640
|
def serialize(serializer, x1, y1, x3, y3) #:nodoc:
|
|
641
641
|
"#{serializer.serialize_numeric(x1)} #{serializer.serialize_numeric(y1)} " \
|
|
642
|
-
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} y\n"
|
|
642
|
+
"#{serializer.serialize_numeric(x3)} #{serializer.serialize_numeric(y3)} y\n"
|
|
643
643
|
end
|
|
644
644
|
|
|
645
645
|
end
|
|
@@ -678,12 +678,12 @@ module HexaPDF
|
|
|
678
678
|
end
|
|
679
679
|
|
|
680
680
|
def serialize(serializer, dict, data) #:nodoc:
|
|
681
|
-
result = "BI\n"
|
|
681
|
+
result = +"BI\n"
|
|
682
682
|
dict.each do |k, v|
|
|
683
|
-
result << serializer.serialize_symbol(k) << ' '
|
|
684
|
-
result << serializer.serialize(v) << ' '
|
|
683
|
+
result << serializer.serialize_symbol(k) << ' '
|
|
684
|
+
result << serializer.serialize(v) << ' '
|
|
685
685
|
end
|
|
686
|
-
result << "ID\n"
|
|
686
|
+
result << "ID\n" << data << "EI\n"
|
|
687
687
|
end
|
|
688
688
|
|
|
689
689
|
end
|
|
@@ -768,7 +768,7 @@ module HexaPDF
|
|
|
768
768
|
end
|
|
769
769
|
|
|
770
770
|
def serialize(serializer, font, size) #:nodoc:
|
|
771
|
-
"#{serializer.serialize_symbol(font)} #{serializer.serialize_numeric(size)} Tf\n"
|
|
771
|
+
"#{serializer.serialize_symbol(font)} #{serializer.serialize_numeric(size)} Tf\n"
|
|
772
772
|
end
|
|
773
773
|
|
|
774
774
|
end
|
|
@@ -856,7 +856,7 @@ module HexaPDF
|
|
|
856
856
|
end
|
|
857
857
|
|
|
858
858
|
def serialize(serializer, tx, ty) #:nodoc:
|
|
859
|
-
"#{serializer.serialize_numeric(tx)} #{serializer.serialize_numeric(ty)} Td\n"
|
|
859
|
+
"#{serializer.serialize_numeric(tx)} #{serializer.serialize_numeric(ty)} Td\n"
|
|
860
860
|
end
|
|
861
861
|
|
|
862
862
|
end
|
|
@@ -877,7 +877,7 @@ module HexaPDF
|
|
|
877
877
|
end
|
|
878
878
|
|
|
879
879
|
def serialize(serializer, tx, ty) #:nodoc:
|
|
880
|
-
"#{serializer.serialize_numeric(tx)} #{serializer.serialize_numeric(ty)} TD\n"
|
|
880
|
+
"#{serializer.serialize_numeric(tx)} #{serializer.serialize_numeric(ty)} TD\n"
|
|
881
881
|
end
|
|
882
882
|
|
|
883
883
|
end
|
|
@@ -900,7 +900,7 @@ module HexaPDF
|
|
|
900
900
|
def serialize(serializer, a, b, c, d, e, f) #:nodoc:
|
|
901
901
|
"#{serializer.serialize_numeric(a)} #{serializer.serialize_numeric(b)} " \
|
|
902
902
|
"#{serializer.serialize_numeric(c)} #{serializer.serialize_numeric(d)} " \
|
|
903
|
-
"#{serializer.serialize_numeric(e)} #{serializer.serialize_numeric(f)} Tm\n"
|
|
903
|
+
"#{serializer.serialize_numeric(e)} #{serializer.serialize_numeric(f)} Tm\n"
|
|
904
904
|
end
|
|
905
905
|
|
|
906
906
|
end
|
|
@@ -933,7 +933,7 @@ module HexaPDF
|
|
|
933
933
|
end
|
|
934
934
|
|
|
935
935
|
def serialize(serializer, text) #:nodoc:
|
|
936
|
-
"#{serializer.serialize_string(text)}
|
|
936
|
+
"#{serializer.serialize_string(text)}Tj\n"
|
|
937
937
|
end
|
|
938
938
|
|
|
939
939
|
end
|
|
@@ -953,7 +953,7 @@ module HexaPDF
|
|
|
953
953
|
end
|
|
954
954
|
|
|
955
955
|
def serialize(serializer, text)
|
|
956
|
-
"#{serializer.serialize_string(text)}
|
|
956
|
+
"#{serializer.serialize_string(text)}'\n"
|
|
957
957
|
end
|
|
958
958
|
|
|
959
959
|
end
|
|
@@ -977,12 +977,11 @@ module HexaPDF
|
|
|
977
977
|
def serialize(serializer, word_space, char_space, text) #:nodoc:
|
|
978
978
|
"#{serializer.serialize_numeric(word_space)} " \
|
|
979
979
|
"#{serializer.serialize_numeric(char_space)} " \
|
|
980
|
-
"#{serializer.serialize_string(text)}
|
|
980
|
+
"#{serializer.serialize_string(text)}\"\n"
|
|
981
981
|
end
|
|
982
982
|
|
|
983
983
|
end
|
|
984
984
|
|
|
985
|
-
|
|
986
985
|
# Implementation of the 'TJ' operator.
|
|
987
986
|
#
|
|
988
987
|
# See: PDF1.7 s9.4.3
|
|
@@ -994,12 +993,11 @@ module HexaPDF
|
|
|
994
993
|
end
|
|
995
994
|
|
|
996
995
|
def serialize(serializer, array) #:nodoc:
|
|
997
|
-
"#{serializer.serialize_array(array)}
|
|
996
|
+
"#{serializer.serialize_array(array)}TJ\n"
|
|
998
997
|
end
|
|
999
998
|
|
|
1000
999
|
end
|
|
1001
1000
|
|
|
1002
|
-
|
|
1003
1001
|
# Mapping of operator names to their default operator implementations.
|
|
1004
1002
|
DEFAULT_OPERATORS = {
|
|
1005
1003
|
q: SaveGraphicsState.new,
|
|
@@ -1064,7 +1062,7 @@ module HexaPDF
|
|
|
1064
1062
|
'"'.to_sym => SetSpacingMoveTextNextLineAndShowText.new,
|
|
1065
1063
|
TJ: ShowTextWithPositioning.new,
|
|
1066
1064
|
}
|
|
1067
|
-
DEFAULT_OPERATORS.default_proc = proc {|h, k| h[k] = BaseOperator.new(k.to_s)}
|
|
1065
|
+
DEFAULT_OPERATORS.default_proc = proc {|h, k| h[k] = BaseOperator.new(k.to_s) }
|
|
1068
1066
|
|
|
1069
1067
|
end
|
|
1070
1068
|
|