lib/hexapdf/document.rb in hexapdf-0.30.0 vs lib/hexapdf/document.rb in hexapdf-0.31.0
- old
+ new
@@ -323,10 +323,17 @@
if type.kind_of?(Class)
klass = type
type = (klass <= HexaPDF::Dictionary ? klass.type : nil)
else
type ||= deref(data.value[:Type]) if data.value.kind_of?(Hash)
- klass = GlobalConfiguration.constantize('object.type_map', type) { nil } if type
+ if type
+ klass = GlobalConfiguration.constantize('object.type_map', type) { nil }
+ if (type == :ObjStm || type == :XRef) &&
+ klass.each_field.any? {|name, field| field.required? && !data.value.key?(name) }
+ data.value.delete(:Type)
+ klass = nil
+ end
+ end
end
if data.value.kind_of?(Hash)
subtype ||= deref(data.value[:Subtype]) || deref(data.value[:S])
end