hexapdf 0.17.2 → 0.17.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71e5d38f8a3d1a6b4371e5f8e2f991d36c0ea8c01ca5dc4ec1e132043fad00aa
4
- data.tar.gz: cf78ef5b6fa915bac30fe75157fc414148c8bd2b8c5c7ee10fe4bb3cbf70076a
3
+ metadata.gz: 15efadb34e0a5dc93ec7659d02cb95a19400a38fe7ccffcbc2438fa6e6f51b8f
4
+ data.tar.gz: 29ddd43180432e648c107ae40c2618415f0ead8bf6e6fcbe46bc1f0557eae271
5
5
  SHA512:
6
- metadata.gz: 2153a1c0eadc0ca940480502b42780717e2777416f1e85e1c9506b879e01df0b2bc4e6d838ecd140af4a62e93bd16aa08ab42bbf522f6bbd234c0d9da82e4115
7
- data.tar.gz: e91b860ece2751633350739852b392719d9d09cb1bdd9e1c1896ef76e5828db9d2d0f9204b93521efbd6e5dcefc84b0451984392c2a4de3703a6060def1f5c75
6
+ metadata.gz: 0a3668dd377838665e75b6c8325efbe237e379823deb060acdf5c7be26d799ab4eee65e94a75b50e9ffc27c81693cb0158765402d9d6f4ddbacc3c1b3be531d4
7
+ data.tar.gz: 759a4a692997d50022f26fd6e5fbf06859a93a00b5d371286a084ffbcb98d3571d72eeb1d3c8d733b4b8917d195c236f7dac3654e4fddae8cb9c2cf7b2f9ab42
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 0.17.3 - 2021-10-31
2
+
3
+ ### Fixed
4
+
5
+ * Reconstruction of invalid PDF files where the PDF header is not at the start
6
+ of the file
7
+ * Reconstruction of invalid PDF files where the first object is invalid
8
+
9
+
1
10
  ## 0.17.2 - 2021-10-26
2
11
 
3
12
  ### Fixed
@@ -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
@@ -37,6 +37,6 @@
37
37
  module HexaPDF
38
38
 
39
39
  # The version of HexaPDF.
40
- VERSION = '0.17.2'
40
+ VERSION = '0.17.3'
41
41
 
42
42
  end
@@ -135,12 +135,12 @@ describe HexaPDF::DictionaryFields do
135
135
  end
136
136
 
137
137
  def configuration
138
- {'document.on_invalid_string' => proc {|str| str }}
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("\xD8\x00\x00s\x00t".force_encoding("UTF-16BE"), @field.convert(str, self))
143
+ assert_equal("st", @field.convert(str, self))
144
144
  end
145
145
  end
146
146
 
@@ -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)
@@ -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.2)>>
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.2)>>
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.2
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-26 00:00:00.000000000 Z
11
+ date: 2021-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse