Class PDF::Writer::Object::Page
In: lib/pdf/writer/object/page.rb
Parent: PDF::Writer::Object
Transaction::Simple SimpleTable TechBook Complex Action Procset FontDescriptor FontEncoding Destination Info Catalog Encryption Contents Pages Outline Outlines Annotation Page Font ViewerPreferences Image Hash OHash QuickRef FontMetrics ARC4 StrokeStyle PolygonPoint ImageInfo StdDev lib/pdf/simpletable.rb lib/pdf/techbook.rb lib/pdf/writer.rb lib/pdf/quickref.rb Math lib/pdf/writer/fontmetrics.rb lib/pdf/writer/ohash.rb lib/pdf/writer/arc4.rb lib/pdf/writer/strokestyle.rb lib/pdf/writer/graphics.rb lib/pdf/writer/object.rb lib/pdf/writer/object/image.rb External EN Lang OffsetReader lib/pdf/writer/graphics/imageinfo.rb Graphics lib/pdf/writer/object/outlines.rb lib/pdf/writer/object/destination.rb lib/pdf/writer/object/viewerpreferences.rb lib/pdf/writer/object/fontencoding.rb lib/pdf/writer/object/page.rb lib/pdf/writer/object/contents.rb lib/pdf/writer/object/procset.rb lib/pdf/writer/object/pages.rb lib/pdf/writer/object/info.rb lib/pdf/writer/object/encryption.rb lib/pdf/writer/object/catalog.rb lib/pdf/writer/object/outline.rb lib/pdf/writer/object/fontdescriptor.rb lib/pdf/writer/object/action.rb lib/pdf/writer/object/font.rb lib/pdf/writer/object/annotation.rb Object Writer lib/pdf/charts/stddev.rb Charts PDF dot/m_33_0.png

A page object, it also creates a contents object to hold its contents

Methods

add_annotation   new   to_s  

Attributes

contents  [RW] 
page_number  [R] 

Public Class methods

Create a page. The optional relative is a Hash with keys :pos => :before|:after and :rpage, the page to which this new page will be added relative.

[Source]

    # File lib/pdf/writer/object/page.rb, line 16
16:   def initialize(parent, relative = nil)
17:     super(parent)
18: 
19:     @parent.current_page = self
20:     @owner = @parent.instance_variable_get('@current_node')
21:     @page_number = @parent.pages.size
22:     @contents = []
23: 
24:     if relative.nil?
25:       @parent.pages << self
26:     else
27:       relative[:page] = self
28:       @parent.pages.add(relative)
29:     end
30: 
31:       # make a contents object to go with this page
32:     @contents << PDF::Writer::Object::Contents.new(@parent, self)
33:     @parent.instance_variable_set('@current_contents', @contents[-1])
34:     match = (@parent.pages.size % 2 == 0 ? :even_pages : :odd_pages)
35:       # Cheat here. I don't want to add an unnecessary attribute.
36:     @parent.instance_variable_get('@add_loose_objects').each do |obj, target|
37:       @contents << obj if target == :all_pages or match == target
38:     end
39: 
40:     @annotations = []
41: 
42:     @media_box  = nil
43:     @crop_box   = nil
44:     @bleed_box  = nil
45:     @trim_box   = nil
46:     @art_box    = nil
47:   end

Public Instance methods

[Source]

    # File lib/pdf/writer/object/page.rb, line 52
52:   def add_annotation(a)
53:     @annotations << a
54:   end

[Source]

     # File lib/pdf/writer/object/page.rb, line 56
 56:   def to_s
 57:     res = "\n#{@oid} 0 obj\n<< /Type /Page\n/Parent #{@owner.oid} 0 R"
 58:     unless @annotations.empty?
 59:       res << "\n/Annots ["
 60:       @annotations.each { |e| res << " #{e.oid} 0 R"}
 61:       res << "]"
 62:     end
 63: 
 64:     if @contents.size == 1
 65:       res << "\n/Contents #{@contents[0].oid} 0 R"
 66:     else
 67:       res << "\n/Contents [\n"
 68:       @contents.each { |c| res << "#{c.oid} 0 R\n" }
 69:       res << "]"
 70:     end
 71: 
 72:       # MediaBox::  rectangle (Required; inheritable). A rectangle (see
 73:       #             Section 3.8.4, “Rectangles”), expressed in default user
 74:       #             space units, defining the boundaries of the physical
 75:       #             medium on which the page is intended to be displayed or
 76:       #             printed (see Section 10.10.1, “Page Boundaries”). 
 77:     res << "\n/MediaBox [#{@media_box.join(' ')}]" unless @media_box.nil? or @media_box.empty?
 78:       # CropBox::   rectangle (Optional; inheritable) A rectangle, expressed
 79:       #             in default user space units, defining the visible region
 80:       #             of default user space. When the page is displayed or
 81:       #             printed, its contents are to be clipped (cropped) to
 82:       #             this rectangle and then imposed on the output medium in
 83:       #             some implementation-defined manner (see Section 10.10.1,
 84:       #             “Page Boundaries”). Default value: the value of MediaBox. 
 85:     res << "\n/CropBox [#{@crop_box.join(' ')}]" unless @crop_box.nil? or @crop_box.empty?
 86:       # BleedBox::  rectangle (Optional; PDF 1.3) A rectangle, expressed in
 87:       #             default user space units, defining the region to which
 88:       #             the contents of the page should be clipped when output
 89:       #             in a production environment (see Section 10.10.1, “Page
 90:       #             Boundaries”). Default value: the value of CropBox. 
 91:     res << "\n/BleedBox [#{@bleed_box.join(' ')}]" unless @bleed_box.nil? or @bleed_box.empty?
 92:       # TrimBox::   rectangle (Optional; PDF 1.3) A rectangle, expressed in
 93:       #             default user space units, defining the intended
 94:       #             dimensions of the finished page after trimming (see
 95:       #             Section 10.10.1, “Page Boundaries”). Default value: the
 96:       #             value of CropBox. 
 97:     res << "\n/TrimBox [#{@trim_box.join(' ')}]" unless @trim_box.nil? or @trim_box.empty?
 98:       # ArtBox::    rectangle (Optional; PDF 1.3) A rectangle, expressed in
 99:       #             default user space units, defining the extent of the
100:       #             page’s meaningful content (including potential white
101:       #             space) as intended by the page’s creator (see Section
102:       #             10.10.1, “Page Boundaries”). Default value: the value of
103:       #             CropBox. 
104:     res << "\n/ArtBox [#{@art_box.join(' ')}]" unless @art_box.nil? or @art_box.empty?
105: 
106:     res << "\n>>\nendobj"
107:   end

[Validate]