class PDF::Writer::Object::Pages
object which is a parent to the pages in the document
Attributes
bleed_box[RW]
media_box[RW]
Each of the following should be an array of 4 numbers, the x and y coordinates of the lower left and upper right bounds of the box.
procset[RW]
trim_box[RW]
Public Class Methods
new(parent)
click to toggle source
Calls superclass method
PDF::Writer::Object::new
# File lib/pdf/writer/object/pages.rb 13 def initialize(parent) 14 super(parent) 15 16 @parent.catalog.pages = self 17 18 @pages = [] 19 @procset = nil 20 @media_box = nil 21 @fonts = [] 22 @xObjects = [] 23 @bleed_box = nil 24 @trim_box = nil 25 end
Public Instance Methods
<<(p)
click to toggle source
Add the page ID to the end of the page list.
# File lib/pdf/writer/object/pages.rb 36 def <<(p) 37 if p.kind_of?(PDF::Writer::Object::Page) 38 @pages << p 39 elsif p.kind_of?(PDF::Writer::Object::Font) 40 @fonts << p 41 elsif p.kind_of?(PDF::Writer::External) 42 @xObjects << p 43 else 44 raise ArgumentError, PDF::Message[:req_FPXO] 45 end 46 end
add(p)
click to toggle source
Add a page to the page list. If p is just a Page, then it will be added to the page list. Otherwise, it will be treated as a Hash with keys :page, :pos, and :rpage. :page is the Page to be added to the list; :pos is :before or :after; :rpage is the Page to which the new Page will be added relative to.
# File lib/pdf/writer/object/pages.rb 53 def add(p) 54 if p.kind_of?(PDF::Writer::Object::Page) 55 @pages << p 56 elsif p.kind_of?(PDF::Writer::FontMetrics) 57 @fonts << p 58 elsif p.kind_of?(PDF::Writer::External) 59 @xObjects << p 60 elsif p.kind_of?(Hash) 61 # Find a match. 62 i = @pages.index(p[:rpage]) 63 unless i.nil? 64 # There is a match; insert the page. 65 case p[:pos] 66 when :before 67 @pages[i, 0] = p[:page] 68 when :after 69 @pages[i + 1, 0] = p[:page] 70 else 71 raise ArgumentError, PDF::Message[:invalid_pos] 72 end 73 end 74 else 75 raise ArgumentError, PDF::Message[:req_FPXOH] 76 end 77 end
first_page()
click to toggle source
# File lib/pdf/writer/object/pages.rb 31 def first_page 32 @pages[0] 33 end
size()
click to toggle source
# File lib/pdf/writer/object/pages.rb 27 def size 28 @pages.size 29 end
to_s()
click to toggle source
# File lib/pdf/writer/object/pages.rb 86 def to_s 87 unless @pages.empty? 88 res = "\n#{@oid} 0 obj\n<< /Type /Pages\n/Kids [" 89 @pages.uniq! # uniqify the data... 90 @pages.each { |p| res << "#{p.oid} 0 R\n" } 91 res << "]\n/Count #{@pages.size}" 92 unless @fonts.empty? and @procset.nil? 93 res << "\n/Resources <<" 94 res << "\n/ProcSet #{@procset.oid} 0 R" unless @procset.nil? 95 unless @fonts.empty? 96 res << "\n/Font << " 97 @fonts.each { |f| res << "\n/F#{f.font_id} #{f.oid} 0 R" } 98 res << " >>" 99 end 100 unless @xObjects.empty? 101 res << "\n/XObject << " 102 @xObjects.each { |x| res << "\n/#{x.label} #{x.oid} 0 R" } 103 res << " >>" 104 end 105 res << "\n>>" 106 res << "\n/MediaBox [#{@media_box.join(' ')}]" unless @media_box.nil? or @media_box.empty? 107 res << "\n/BleedBox [#{@bleed_box.join(' ')}]" unless @bleed_box.nil? or @bleed_box.empty? 108 res << "\n/TrimBox [#{@trim_box.join(' ')}]" unless @trim_box.nil? or @trim_box.empty? 109 end 110 res << "\n >>\nendobj" 111 else 112 "\n#{@oid} 0 obj\n<< /Type /Pages\n/Count 0\n>>\nendobj" 113 end 114 end