def parse (io, receiver, opts = {})
@buffer = Buffer.new(io)
@xref = XRef.new(@buffer)
@parser = Parser.new(@buffer, @xref)
@content = (receiver == Explore ? Explore : Content).new(receiver, @xref)
options = {:pages => true, :metadata => true}
options.merge!(opts)
trailer = @xref.load
raise PDF::Reader::UnsupportedFeatureError, 'PDF::Reader cannot read encrypted PDF files' if trailer[:Encrypt]
@content.metadata(@xref.object(trailer[:Root]), @xref.object(trailer[:Info])) if options[:metadata]
@content.document(@xref.object(trailer[:Root])) if options[:pages]
self
end