Class: Prawn::Core::Page
- Inherits:
-
Object
- Object
- Prawn::Core::Page
- Defined in:
- lib/prawn/core/page.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#content ⇒ Object
Returns the value of attribute content.
-
#dictionary ⇒ Object
Returns the value of attribute dictionary.
-
#document ⇒ Object
Returns the value of attribute document.
-
#margins ⇒ Object
Returns the value of attribute margins.
Instance Method Summary collapse
- #dimensions ⇒ Object
- #ext_gstates ⇒ Object
- #finalize ⇒ Object
- #fonts ⇒ Object
- #imported_page? ⇒ Boolean
- #in_stamp_stream? ⇒ Boolean
-
#initialize(document, options = {}) ⇒ Page
constructor
A new instance of Page.
- #layout ⇒ Object
-
#new_content_stream ⇒ Object
As per the PDF spec, each page can have multiple content streams.
- #resources ⇒ Object
- #size ⇒ Object
- #stamp_stream(dictionary) ⇒ Object
- #xobjects ⇒ Object
Constructor Details
#initialize(document, options = {}) ⇒ Page
Returns a new instance of Page.
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/prawn/core/page.rb', line 14 def initialize(document, ={}) @document = document @margins = [:margins] || { :left => 36, :right => 36, :top => 36, :bottom => 36 } if [:object_id] init_from_object() else init_new_page() end end |
Instance Attribute Details
#content ⇒ Object
Returns the value of attribute content.
12 13 14 |
# File 'lib/prawn/core/page.rb', line 12 def content @content end |
#dictionary ⇒ Object
Returns the value of attribute dictionary.
12 13 14 |
# File 'lib/prawn/core/page.rb', line 12 def dictionary @dictionary end |
#document ⇒ Object
Returns the value of attribute document.
12 13 14 |
# File 'lib/prawn/core/page.rb', line 12 def document @document end |
#margins ⇒ Object
Returns the value of attribute margins.
12 13 14 |
# File 'lib/prawn/core/page.rb', line 12 def margins @margins end |
Instance Method Details
#dimensions ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/prawn/core/page.rb', line 132 def dimensions return dictionary.data[:MediaBox] if imported_page? coords = Prawn::Document::PageGeometry::SIZES[size] || size [0,0] + case(layout) when :portrait coords when :landscape coords.reverse else raise Prawn::Errors::InvalidPageLayout, "Layout must be either :portrait or :landscape" end end |
#ext_gstates ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/prawn/core/page.rb', line 108 def ext_gstates if resources[:ExtGState] document.deref(resources[:ExtGState]) else resources[:ExtGState] = {} end end |
#finalize ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/prawn/core/page.rb', line 116 def finalize if dictionary.data[:Contents].is_a?(Array) dictionary.data[:Contents].each do |stream| stream.compress_stream if document.compression_enabled? stream.data[:Length] = stream.stream.size end else content.compress_stream if document.compression_enabled? content.data[:Length] = content.stream.size end end |
#fonts ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/prawn/core/page.rb', line 92 def fonts if resources[:Font] document.deref(resources[:Font]) else resources[:Font] = {} end end |
#imported_page? ⇒ Boolean
128 129 130 |
# File 'lib/prawn/core/page.rb', line 128 def imported_page? @imported_page end |
#in_stamp_stream? ⇒ Boolean
43 44 45 |
# File 'lib/prawn/core/page.rb', line 43 def in_stamp_stream? !!@stamp_stream end |
#layout ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/prawn/core/page.rb', line 28 def layout return @layout if @layout mb = dictionary.data[:MediaBox] if mb[3] > mb[2] :portrait else :landscape end end |
#new_content_stream ⇒ Object
As per the PDF spec, each page can have multiple content streams. This will add a fresh, empty content stream this the page, mainly for use in loading template files.
70 71 72 73 74 75 76 77 78 |
# File 'lib/prawn/core/page.rb', line 70 def new_content_stream return if in_stamp_stream? unless dictionary.data[:Contents].is_a?(Array) dictionary.data[:Contents] = [content] end @content = document.ref(:Length => 0) dictionary.data[:Contents] << document.state.store[@content] end |
#resources ⇒ Object
84 85 86 87 88 89 90 |
# File 'lib/prawn/core/page.rb', line 84 def resources if dictionary.data[:Resources] document.deref(dictionary.data[:Resources]) else dictionary.data[:Resources] = {} end end |
#size ⇒ Object
39 40 41 |
# File 'lib/prawn/core/page.rb', line 39 def size @size || dimensions[2,2] end |
#stamp_stream(dictionary) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/prawn/core/page.rb', line 47 def stamp_stream(dictionary) @stamp_stream = "" @stamp_dictionary = dictionary document.send(:update_colors) yield if block_given? document.send(:update_colors) @stamp_dictionary.data[:Length] = @stamp_stream.length + 1 @stamp_dictionary << @stamp_stream @stamp_stream = nil @stamp_dictionary = nil end |
#xobjects ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/prawn/core/page.rb', line 100 def xobjects if resources[:XObject] document.deref(resources[:XObject]) else resources[:XObject] = {} end end |