Parent

Methods

Included Modules

PDF::Reader::XRef

An internal PDF::Reader class that represents the XRef table in a PDF file as a hash-like object.

An Xref table is a map of object identifiers and byte offsets. Any time a particular object needs to be found, the Xref table is used to find where it is stored in the file.

Hash keys are object ids, values are either:

The class behaves much like a standard Ruby hash, including the use of the Enumerable mixin. The key difference is no []= method - the hash is read only.

Attributes

trailer[R]

Public Class Methods

new(io) click to toggle source

create a new Xref table based on the contents of the supplied io object

io - must be an IO object, generally either a file or a StringIO

# File lib/pdf/reader/xref.rb, line 55
def initialize (io)
  @io = io
  @junk_offset = calc_junk_offset(io) || 0
  @xref = {}
  @trailer = load_offsets
end

Public Instance Methods

[](ref) click to toggle source

returns the byte offset for the specified PDF object.

ref - a PDF::Reader::Reference object containing an object ID and revision number

# File lib/pdf/reader/xref.rb, line 72
def [](ref)
  @xref[ref.id][ref.gen]
rescue
  raise InvalidObjectError, "Object #{ref.id}, Generation #{ref.gen} is invalid"
end
each(&block) click to toggle source

iterate over each object in the xref table

# File lib/pdf/reader/xref.rb, line 79
def each(&block)
  ids = @xref.keys.sort
  ids.each do |id|
    gen = @xref[id].keys.sort[-1]
    yield PDF::Reader::Reference.new(id, gen)
  end
end
size() click to toggle source

return the number of objects in this file. Objects with multiple generations are only counter once.

# File lib/pdf/reader/xref.rb, line 65
def size
  @xref.size
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.