An internal PDF::Reader class that reads objects from the PDF file and converts them into useable ruby objects (hash's, arrays, true, false, etc)
Create a new parser around a PDF::Reader::Buffer object
buffer - a PDF::Reader::Buffer object that contains PDF data objects - a PDF::Reader::ObjectHash object that can return objects from the PDF file
# File lib/pdf/reader/parser.rb, line 61 def initialize (buffer, objects=nil) @buffer = buffer @objects = objects end
Reads an entire PDF object from the buffer and returns it as a Ruby String. If the object is a content stream, returns both the stream and the dictionary that describes it
id - the object ID to return gen - the object revision number to return
# File lib/pdf/reader/parser.rb, line 96 def object (id, gen) Error.assert_equal(parse_token, id) Error.assert_equal(parse_token, gen) Error.str_assert(parse_token, "obj") obj = parse_token post_obj = parse_token if post_obj == "stream" stream(obj) else obj end end
Reads the next token from the underlying buffer and convets it to an appropriate object
operators - a hash of supported operators to read from the underlying buffer.
# File lib/pdf/reader/parser.rb, line 70 def parse_token (operators={}) token = @buffer.token if STRATEGIES.has_key? token STRATEGIES[token].call(self, token) elsif token.is_a? PDF::Reader::Reference token elsif token.is_a? Token token elsif operators.has_key? token Token.new(token) elsif token.respond_to?(:to_token) token.to_token elsif token =~ %r\d*\.\d/ token.to_f else token.to_i end end