Class: Prawn::Core::DocumentState

Inherits:
Object
  • Object
show all
Defined in:
lib/prawn/core/document_state.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ DocumentState

Returns a new instance of DocumentState.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/prawn/core/document_state.rb', line 4

def initialize(options)
  (options)

  if options[:template]
    @store = Prawn::Core::ObjectStore.new(:template => options[:template])
  else
    @store = Prawn::Core::ObjectStore.new(:info => options[:info])
  end

  @version                 = 1.3
  @pages                   = []
  @page                    = nil
  @trailer                 = {}
  @compress                = options.fetch(:compress, false)
  @encrypt                 = options.fetch(:encrypt, false)
  @encryption_key          = options[:encryption_key]
  @optimize_objects        = options.fetch(:optimize_objects, false)
  @skip_encoding           = options.fetch(:skip_encoding, false)
  @before_render_callbacks = []
  @on_page_create_callback = nil
end

Instance Attribute Details

#before_render_callbacksObject

Returns the value of attribute before_render_callbacks.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def before_render_callbacks
  @before_render_callbacks
end

#compressObject

Returns the value of attribute compress.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def compress
  @compress
end

#encryptObject

Returns the value of attribute encrypt.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def encrypt
  @encrypt
end

#encryption_keyObject

Returns the value of attribute encryption_key.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def encryption_key
  @encryption_key
end

#on_page_create_callbackObject

Returns the value of attribute on_page_create_callback.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def on_page_create_callback
  @on_page_create_callback
end

#optimize_objectsObject

Returns the value of attribute optimize_objects.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def optimize_objects
  @optimize_objects
end

#pageObject

Returns the value of attribute page.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def page
  @page
end

#pagesObject

Returns the value of attribute pages.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def pages
  @pages
end

#skip_encodingObject

Returns the value of attribute skip_encoding.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def skip_encoding
  @skip_encoding
end

#storeObject

Returns the value of attribute store.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def store
  @store
end

#trailerObject

Returns the value of attribute trailer.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def trailer
  @trailer
end

#versionObject

Returns the value of attribute version.



26
27
28
# File 'lib/prawn/core/document_state.rb', line 26

def version
  @version
end

Instance Method Details

#before_render_actions(doc) ⇒ Object



59
60
61
# File 'lib/prawn/core/document_state.rb', line 59

def before_render_actions(doc)
  before_render_callbacks.each{ |c| c.call(self) }
end

#insert_page(page, page_number) ⇒ Object



49
50
51
52
53
# File 'lib/prawn/core/document_state.rb', line 49

def insert_page(page, page_number)
  pages.insert(page_number, page)
  store.pages.data[:Kids].insert(page_number, page.dictionary)
  store.pages.data[:Count] += 1
end

#normalize_metadata(options) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/prawn/core/document_state.rb', line 41

def (options)
  options[:info] ||= {}
  options[:info][:Creator] ||= "Prawn"
  options[:info][:Producer] = "Prawn"

  info = options[:info]
end

#on_page_create_action(doc) ⇒ Object



55
56
57
# File 'lib/prawn/core/document_state.rb', line 55

def on_page_create_action(doc)
  on_page_create_callback[doc] if on_page_create_callback
end

#page_countObject



63
64
65
# File 'lib/prawn/core/document_state.rb', line 63

def page_count
  pages.length
end

#populate_pages_from_store(document) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/prawn/core/document_state.rb', line 30

def populate_pages_from_store(document)
  return 0 if @store.page_count <= 0 || @pages.size > 0

  count = (1..@store.page_count)
  @pages = count.map do |index|
    orig_dict_id = @store.object_id_for_page(index)
    Prawn::Core::Page.new(document, :object_id => orig_dict_id)
  end

end

#render_body(output) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/prawn/core/document_state.rb', line 67

def render_body(output)
  store.compact if optimize_objects
  store.each do |ref|
    ref.offset = output.size
    output << (@encrypt ? ref.encrypted_object(@encryption_key) : 
                          ref.object)
  end
end