lib/hexapdf/parser.rb in hexapdf-0.15.6 vs lib/hexapdf/parser.rb in hexapdf-0.15.7

- old
+ new

@@ -446,9 +446,18 @@ end if !trailer || trailer.empty? _, trailer = load_revision(startxref_offset) rescue nil unless trailer + xref.each do |_oid, _gen, xref_entry| + obj, * = parse_indirect_object(xref_entry.pos) rescue nil + if obj.kind_of?(Hash) && obj[:Type] == :Catalog + trailer = {Root: HexaPDF::Reference.new(xref_entry.oid, xref_entry.gen)} + break + end + end + end + unless trailer @in_reconstruct_revision = false raise_malformed("Could not reconstruct malformed PDF because trailer was not found", pos: 0) end end trailer&.delete(:Prev) # no need for this and may wreak havoc