Class: PDF::Core::DocumentState

Inherits:
Object
  • Object
show all
Defined in:
lib/pdf/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.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/pdf/core/document_state.rb', line 6

def initialize(options)
  (options)

  @store =
    if options[:print_scaling]
      PDF::Core::ObjectStore.new(
        info: options[:info],
        print_scaling: options[:print_scaling]
      )
    else
      PDF::Core::ObjectStore.new(info: options[:info])
    end

  @version                 = 1.3
  @pages                   = []
  @page                    = nil
  @trailer                 = options.fetch(:trailer, {})
  @compress                = options.fetch(:compress, false)
  @encrypt                 = options.fetch(:encrypt, false)
  @encryption_key          = options[:encryption_key]
  @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.



32
33
34
# File 'lib/pdf/core/document_state.rb', line 32

def before_render_callbacks
  @before_render_callbacks
end

#compressObject

Returns the value of attribute compress.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def compress
  @compress
end

#encryptObject

Returns the value of attribute encrypt.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def encrypt
  @encrypt
end

#encryption_keyObject

Returns the value of attribute encryption_key.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def encryption_key
  @encryption_key
end

#on_page_create_callbackObject

Returns the value of attribute on_page_create_callback.



32
33
34
# File 'lib/pdf/core/document_state.rb', line 32

def on_page_create_callback
  @on_page_create_callback
end

#pageObject

Returns the value of attribute page.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def page
  @page
end

#pagesObject

Returns the value of attribute pages.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def pages
  @pages
end

#skip_encodingObject

Returns the value of attribute skip_encoding.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def skip_encoding
  @skip_encoding
end

#storeObject

Returns the value of attribute store.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def store
  @store
end

#trailerObject

Returns the value of attribute trailer.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def trailer
  @trailer
end

#versionObject

Returns the value of attribute version.



31
32
33
# File 'lib/pdf/core/document_state.rb', line 31

def version
  @version
end

Instance Method Details

#before_render_actions(_doc) ⇒ Object



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

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

#insert_page(page, page_number) ⇒ Object



53
54
55
56
57
# File 'lib/pdf/core/document_state.rb', line 53

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



45
46
47
48
49
50
51
# File 'lib/pdf/core/document_state.rb', line 45

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

  options[:info]
end

#on_page_create_action(doc) ⇒ Object



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

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

#page_countObject



67
68
69
# File 'lib/pdf/core/document_state.rb', line 67

def page_count
  pages.length
end

#populate_pages_from_store(document) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/pdf/core/document_state.rb', line 34

def populate_pages_from_store(document)
  return 0 if @store.page_count <= 0 || !@pages.empty?

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

#render_body(output) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
# File 'lib/pdf/core/document_state.rb', line 71

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