# File lib/pdf/reader.rb, line 123
  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