Class: PDF::Core::DocumentState
- Inherits:
-
Object
- Object
- PDF::Core::DocumentState
- Defined in:
- lib/pdf/core/document_state.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#before_render_callbacks ⇒ Object
Returns the value of attribute before_render_callbacks.
-
#compress ⇒ Object
Returns the value of attribute compress.
-
#encrypt ⇒ Object
Returns the value of attribute encrypt.
-
#encryption_key ⇒ Object
Returns the value of attribute encryption_key.
-
#on_page_create_callback ⇒ Object
Returns the value of attribute on_page_create_callback.
-
#page ⇒ Object
Returns the value of attribute page.
-
#pages ⇒ Object
Returns the value of attribute pages.
-
#skip_encoding ⇒ Object
Returns the value of attribute skip_encoding.
-
#store ⇒ Object
Returns the value of attribute store.
-
#trailer ⇒ Object
Returns the value of attribute trailer.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
- #before_render_actions(_doc) ⇒ Object
-
#initialize(options) ⇒ DocumentState
constructor
A new instance of DocumentState.
- #insert_page(page, page_number) ⇒ Object
- #normalize_metadata(options) ⇒ Object
- #on_page_create_action(doc) ⇒ Object
- #page_count ⇒ Object
- #populate_pages_from_store(document) ⇒ Object
- #render_body(output) ⇒ Object
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() () @store = if [:print_scaling] PDF::Core::ObjectStore.new( info: [:info], print_scaling: [:print_scaling] ) else PDF::Core::ObjectStore.new(info: [:info]) end @version = 1.3 @pages = [] @page = nil @trailer = .fetch(:trailer, {}) @compress = .fetch(:compress, false) @encrypt = .fetch(:encrypt, false) @encryption_key = [:encryption_key] @skip_encoding = .fetch(:skip_encoding, false) @before_render_callbacks = [] @on_page_create_callback = nil end |
Instance Attribute Details
#before_render_callbacks ⇒ Object
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 |
#compress ⇒ Object
Returns the value of attribute compress.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def compress @compress end |
#encrypt ⇒ Object
Returns the value of attribute encrypt.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def encrypt @encrypt end |
#encryption_key ⇒ Object
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_callback ⇒ Object
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 |
#page ⇒ Object
Returns the value of attribute page.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def page @page end |
#pages ⇒ Object
Returns the value of attribute pages.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def pages @pages end |
#skip_encoding ⇒ Object
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 |
#store ⇒ Object
Returns the value of attribute store.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def store @store end |
#trailer ⇒ Object
Returns the value of attribute trailer.
31 32 33 |
# File 'lib/pdf/core/document_state.rb', line 31 def trailer @trailer end |
#version ⇒ Object
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 () [:info] ||= {} [:info][:Creator] ||= 'Prawn' [:info][:Producer] ||= 'Prawn' [: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_count ⇒ Object
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 |