hexapdf 0.17.2 → 0.17.3
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 +9 -0
- data/lib/hexapdf/parser.rb +3 -0
- data/lib/hexapdf/version.rb +1 -1
- data/test/hexapdf/test_dictionary_fields.rb +2 -2
- data/test/hexapdf/test_parser.rb +11 -0
- data/test/hexapdf/test_writer.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15efadb34e0a5dc93ec7659d02cb95a19400a38fe7ccffcbc2438fa6e6f51b8f
|
4
|
+
data.tar.gz: 29ddd43180432e648c107ae40c2618415f0ead8bf6e6fcbe46bc1f0557eae271
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a3668dd377838665e75b6c8325efbe237e379823deb060acdf5c7be26d799ab4eee65e94a75b50e9ffc27c81693cb0158765402d9d6f4ddbacc3c1b3be531d4
|
7
|
+
data.tar.gz: 759a4a692997d50022f26fd6e5fbf06859a93a00b5d371286a084ffbcb98d3571d72eeb1d3c8d733b4b8917d195c236f7dac3654e4fddae8cb9c2cf7b2f9ab42
|
data/CHANGELOG.md
CHANGED
data/lib/hexapdf/parser.rb
CHANGED
@@ -404,6 +404,7 @@ module HexaPDF
|
|
404
404
|
def reconstruct_revision
|
405
405
|
return if @in_reconstruct_revision
|
406
406
|
@in_reconstruct_revision = true
|
407
|
+
@header_offset = 0
|
407
408
|
|
408
409
|
raise unless @document.config['parser.try_xref_reconstruction']
|
409
410
|
msg = "#{$!} - trying cross-reference table reconstruction"
|
@@ -428,8 +429,10 @@ module HexaPDF
|
|
428
429
|
elsif gen.kind_of?(Integer) && tok.kind_of?(Tokenizer::Token) && tok == 'obj'
|
429
430
|
xref.add_in_use_entry(token, gen, pos)
|
430
431
|
if linearized.nil?
|
432
|
+
pos = @tokenizer.pos
|
431
433
|
obj = @tokenizer.next_object rescue nil
|
432
434
|
linearized = obj.kind_of?(Hash) && obj.key?(:Linearized)
|
435
|
+
@tokenizer.pos = pos
|
433
436
|
end
|
434
437
|
@tokenizer.scan_until(/(?:\n|\r\n?)endobj\b/)
|
435
438
|
end
|
data/lib/hexapdf/version.rb
CHANGED
@@ -135,12 +135,12 @@ describe HexaPDF::DictionaryFields do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def configuration
|
138
|
-
|
138
|
+
HexaPDF::Configuration.with_defaults
|
139
139
|
end
|
140
140
|
|
141
141
|
it "calls document.on_invalid_string if the provided string is invalid" do
|
142
142
|
str = "\xfe\xff\xD8\x00\x00s\x00t".b
|
143
|
-
assert_equal("
|
143
|
+
assert_equal("st", @field.convert(str, self))
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
data/test/hexapdf/test_parser.rb
CHANGED
@@ -607,11 +607,22 @@ describe HexaPDF::Parser do
|
|
607
607
|
assert_equal(4, @parser.load_object(@xref).value)
|
608
608
|
end
|
609
609
|
|
610
|
+
it "handles an invalid object as first object" do
|
611
|
+
create_parser("2 0 obj\n(a(b\nendobj\n1 0 obj\n6\nendobj #)(\ntrailer\n<</Size 1>>")
|
612
|
+
assert_equal(6, @parser.load_object(@xref).value)
|
613
|
+
end
|
614
|
+
|
610
615
|
it "ignores invalid lines" do
|
611
616
|
create_parser("1 0 obj\n5\nendobj\nhello there\n1 0 obj\n6\nendobj\ntrailer\n<</Size 1>>")
|
612
617
|
assert_equal(6, @parser.load_object(@xref).value)
|
613
618
|
end
|
614
619
|
|
620
|
+
it "resets the header offset" do
|
621
|
+
create_parser("1 0 obj\n5\nendobj\ntrailer\n<</Size 1>>")
|
622
|
+
@parser.instance_variable_set(:@header_offset, 5)
|
623
|
+
assert_equal(5, @parser.load_object(@xref).value)
|
624
|
+
end
|
625
|
+
|
615
626
|
it "uses the last trailer" do
|
616
627
|
create_parser("trailer <</Size 1>>\ntrailer <</Size 2/Prev 342>>")
|
617
628
|
assert_equal({Size: 2}, @parser.reconstructed_revision.trailer.value)
|
data/test/hexapdf/test_writer.rb
CHANGED
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
|
|
40
40
|
219
|
41
41
|
%%EOF
|
42
42
|
3 0 obj
|
43
|
-
<</Producer(HexaPDF version 0.17.
|
43
|
+
<</Producer(HexaPDF version 0.17.3)>>
|
44
44
|
endobj
|
45
45
|
xref
|
46
46
|
3 1
|
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
|
|
72
72
|
141
|
73
73
|
%%EOF
|
74
74
|
6 0 obj
|
75
|
-
<</Producer(HexaPDF version 0.17.
|
75
|
+
<</Producer(HexaPDF version 0.17.3)>>
|
76
76
|
endobj
|
77
77
|
2 0 obj
|
78
78
|
<</Length 10>>stream
|
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.17.
|
4
|
+
version: 0.17.3
|
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-10-
|
11
|
+
date: 2021-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cmdparse
|