Class: PDF::Reader::ObjectStream

Inherits:
Object
  • Object
show all
Defined in:
lib/pdf/reader/object_stream.rb

Overview

provides a wrapper around a PDF stream object that contains other objects in it. This is done for added compression and is described as an “Object Stream” in the spec.

Instance Method Summary collapse

Constructor Details

#initialize(stream) ⇒ ObjectStream

: (PDF::Reader::Stream) -> void



12
13
14
15
16
17
# File 'lib/pdf/reader/object_stream.rb', line 12

def initialize(stream)
  @dict = stream.hash #: Hash[Symbol, untyped]
  @data = stream.unfiltered_data #: String
  @offsets = nil #: Hash[Integer, Integer] | nil
  @buffer = nil #: PDF::Reader::Buffer | nil
end

Instance Method Details

#[](objid) ⇒ Object

: (Integer) -> ( | PDF::Reader::Reference | | PDF::Reader::Token | | Numeric | | String | | Symbol | | Array | | Hash[untyped, untyped] | | nil | )



29
30
31
32
33
34
35
36
37
# File 'lib/pdf/reader/object_stream.rb', line 29

def [](objid)
  if offsets[objid].nil?
    nil
  else
    buf = PDF::Reader::Buffer.new(StringIO.new(@data), :seek => offsets[objid])
    parser = PDF::Reader::Parser.new(buf)
    parser.parse_token
  end
end

#sizeObject

: () -> Integer



40
41
42
# File 'lib/pdf/reader/object_stream.rb', line 40

def size
  TypeCheck.cast_to_int!(@dict[:N])
end