hexapdf 0.14.2 → 0.15.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +96 -0
- data/lib/hexapdf/cli/form.rb +30 -8
- data/lib/hexapdf/configuration.rb +19 -4
- data/lib/hexapdf/content/canvas.rb +1 -0
- data/lib/hexapdf/dictionary.rb +3 -0
- data/lib/hexapdf/dictionary_fields.rb +1 -1
- data/lib/hexapdf/encryption/security_handler.rb +7 -2
- data/lib/hexapdf/encryption/standard_security_handler.rb +12 -0
- data/lib/hexapdf/error.rb +4 -3
- data/lib/hexapdf/filter.rb +1 -0
- data/lib/hexapdf/filter/crypt.rb +60 -0
- data/lib/hexapdf/font/true_type/subsetter.rb +5 -1
- data/lib/hexapdf/font/type1/afm_parser.rb +2 -1
- data/lib/hexapdf/parser.rb +46 -14
- data/lib/hexapdf/pdf_array.rb +3 -0
- data/lib/hexapdf/revision.rb +16 -0
- data/lib/hexapdf/serializer.rb +10 -3
- data/lib/hexapdf/tokenizer.rb +44 -3
- data/lib/hexapdf/type/acro_form.rb +1 -0
- data/lib/hexapdf/type/acro_form/appearance_generator.rb +32 -17
- data/lib/hexapdf/type/acro_form/button_field.rb +8 -4
- data/lib/hexapdf/type/acro_form/field.rb +1 -0
- data/lib/hexapdf/type/acro_form/form.rb +37 -0
- data/lib/hexapdf/type/acro_form/signature_field.rb +223 -0
- data/lib/hexapdf/type/annotation.rb +13 -9
- data/lib/hexapdf/type/annotations/widget.rb +3 -1
- data/lib/hexapdf/type/font_descriptor.rb +9 -2
- data/lib/hexapdf/type/page.rb +81 -0
- data/lib/hexapdf/type/resources.rb +4 -0
- data/lib/hexapdf/type/xref_stream.rb +7 -0
- data/lib/hexapdf/utils/graphics_helpers.rb +4 -4
- data/lib/hexapdf/version.rb +1 -1
- data/test/hexapdf/content/test_canvas.rb +21 -0
- data/test/hexapdf/encryption/test_security_handler.rb +15 -0
- data/test/hexapdf/encryption/test_standard_security_handler.rb +26 -0
- data/test/hexapdf/filter/test_crypt.rb +21 -0
- data/test/hexapdf/font/true_type/test_subsetter.rb +2 -0
- data/test/hexapdf/font/type1/test_afm_parser.rb +5 -0
- data/test/hexapdf/test_dictionary_fields.rb +7 -0
- data/test/hexapdf/test_parser.rb +82 -2
- data/test/hexapdf/test_revision.rb +21 -0
- data/test/hexapdf/test_serializer.rb +10 -0
- data/test/hexapdf/test_tokenizer.rb +50 -0
- data/test/hexapdf/test_writer.rb +2 -2
- data/test/hexapdf/type/acro_form/test_appearance_generator.rb +24 -3
- data/test/hexapdf/type/acro_form/test_button_field.rb +13 -7
- data/test/hexapdf/type/acro_form/test_field.rb +5 -0
- data/test/hexapdf/type/acro_form/test_form.rb +46 -2
- data/test/hexapdf/type/acro_form/test_signature_field.rb +38 -0
- data/test/hexapdf/type/annotations/test_widget.rb +2 -0
- data/test/hexapdf/type/test_annotation.rb +20 -10
- data/test/hexapdf/type/test_font_descriptor.rb +7 -0
- data/test/hexapdf/type/test_page.rb +187 -49
- data/test/hexapdf/type/test_resources.rb +6 -0
- data/test/hexapdf/type/test_xref_stream.rb +7 -0
- data/test/hexapdf/utils/test_graphics_helpers.rb +8 -0
- metadata +6 -2
@@ -194,6 +194,12 @@ describe HexaPDF::Type::Resources do
|
|
194
194
|
assert_equal([:PDF, :Text, :ImageB, :ImageC, :ImageI], @res[:ProcSet].value)
|
195
195
|
end
|
196
196
|
|
197
|
+
it "handles an invalid ProcSet containing a single value instead of an array" do
|
198
|
+
@res[:ProcSet] = :PDF
|
199
|
+
@res.validate
|
200
|
+
assert_equal([:PDF], @res[:ProcSet].value)
|
201
|
+
end
|
202
|
+
|
197
203
|
it "removes invalid procedure set names from ProcSet" do
|
198
204
|
@res[:ProcSet] = [:PDF, :Unknown]
|
199
205
|
@res.validate
|
@@ -71,6 +71,13 @@ describe HexaPDF::Type::XRefStream do
|
|
71
71
|
assert(section[10, 0].in_use?)
|
72
72
|
assert_equal(250, section[10, 0].pos)
|
73
73
|
end
|
74
|
+
|
75
|
+
it "fails if there is not enough data available" do
|
76
|
+
@obj[:Index] = [1, 2, 10, 4]
|
77
|
+
@obj[:W] = [1, 2, 1]
|
78
|
+
@obj.stream = "abcd"
|
79
|
+
assert_raises(HexaPDF::MalformedPDFError) { @obj.xref_section }
|
80
|
+
end
|
74
81
|
end
|
75
82
|
|
76
83
|
describe "trailer" do
|
@@ -15,9 +15,17 @@ describe HexaPDF::Utils::GraphicsHelpers do
|
|
15
15
|
assert_equal([10, 12], calculate_dimensions(5, 6, rwidth: 10))
|
16
16
|
end
|
17
17
|
|
18
|
+
it "returns the requested width and the given height if width is zero" do
|
19
|
+
assert_equal([10, 6], calculate_dimensions(0, 6, rwidth: 10))
|
20
|
+
end
|
21
|
+
|
18
22
|
it "returns the requested height and an adjusted width" do
|
19
23
|
assert_equal([10, 12], calculate_dimensions(5, 6, rheight: 12))
|
20
24
|
end
|
25
|
+
|
26
|
+
it "returns the requested height and the given width if height is zero" do
|
27
|
+
assert_equal([5, 12], calculate_dimensions(5, 0, rheight: 12))
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
31
|
describe "point_on_line" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hexapdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Leitner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01
|
11
|
+
date: 2021-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cmdparse
|
@@ -267,6 +267,7 @@ files:
|
|
267
267
|
- lib/hexapdf/filter.rb
|
268
268
|
- lib/hexapdf/filter/ascii85_decode.rb
|
269
269
|
- lib/hexapdf/filter/ascii_hex_decode.rb
|
270
|
+
- lib/hexapdf/filter/crypt.rb
|
270
271
|
- lib/hexapdf/filter/encryption.rb
|
271
272
|
- lib/hexapdf/filter/flate_decode.rb
|
272
273
|
- lib/hexapdf/filter/lzw_decode.rb
|
@@ -358,6 +359,7 @@ files:
|
|
358
359
|
- lib/hexapdf/type/acro_form/choice_field.rb
|
359
360
|
- lib/hexapdf/type/acro_form/field.rb
|
360
361
|
- lib/hexapdf/type/acro_form/form.rb
|
362
|
+
- lib/hexapdf/type/acro_form/signature_field.rb
|
361
363
|
- lib/hexapdf/type/acro_form/text_field.rb
|
362
364
|
- lib/hexapdf/type/acro_form/variable_text_field.rb
|
363
365
|
- lib/hexapdf/type/action.rb
|
@@ -507,6 +509,7 @@ files:
|
|
507
509
|
- test/hexapdf/filter/common.rb
|
508
510
|
- test/hexapdf/filter/test_ascii85_decode.rb
|
509
511
|
- test/hexapdf/filter/test_ascii_hex_decode.rb
|
512
|
+
- test/hexapdf/filter/test_crypt.rb
|
510
513
|
- test/hexapdf/filter/test_encryption.rb
|
511
514
|
- test/hexapdf/filter/test_flate_decode.rb
|
512
515
|
- test/hexapdf/filter/test_lzw_decode.rb
|
@@ -593,6 +596,7 @@ files:
|
|
593
596
|
- test/hexapdf/type/acro_form/test_choice_field.rb
|
594
597
|
- test/hexapdf/type/acro_form/test_field.rb
|
595
598
|
- test/hexapdf/type/acro_form/test_form.rb
|
599
|
+
- test/hexapdf/type/acro_form/test_signature_field.rb
|
596
600
|
- test/hexapdf/type/acro_form/test_text_field.rb
|
597
601
|
- test/hexapdf/type/acro_form/test_variable_text_field.rb
|
598
602
|
- test/hexapdf/type/actions/test_launch.rb
|