Class: Pdfrb::Model::Type::PageTreeNode
Overview
Intermediate page-tree node (s7.7.3.2). Holds /Kids (array of
PageTreeNode or Page) + /Count + inheritable /MediaBox,
/CropBox, /Resources, /Rotate. The root uses the same dict
shape and is conventionally distinguished via PageTreeNodeRoot
for type-dispatch purposes.
Instance Attribute Summary
Attributes inherited from Object
#document, #gen, #oid, #value
Instance Method Summary
collapse
#[], #[]=, arlington_available?, arlington_default, arlington_key_to_symbol, arlington_loaded_for?, arlington_mark_loaded, arlington_object, arlington_one_type_to_ruby, arlington_required?, arlington_types_to_ruby, arlington_version, define_field, define_field_from_arlington, #delete, #each, each_field, #each_raw, #empty?, field, #initialize, #key?, #keys, lookup_type, own_fields, #pdf_type, register_type, type_map, #validate
Methods inherited from Object
#==, define_type, #deref, #indirect?, #initialize, #must_be_indirect?, #pdf_type, pdf_type
Instance Method Details
16
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 16
def count; self[:Count] || 0; end
|
19
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 19
def crop_box; self[:CropBox]; end
|
#each_child ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 31
def each_child
return enum_for(:each_child) unless block_given?
return unless kids && document
arr = kids.is_a?(Pdfrb::Model::Reference) ? document.object(kids) : kids
return unless arr.is_a?(Array)
arr.each do |kid_ref|
obj = kid_ref.is_a?(Pdfrb::Model::Reference) ? document.object(kid_ref) : kid_ref
yield obj if obj
end
end
|
#each_page(&block) ⇒ Object
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 44
def each_page(&block)
return enum_for(:each_page) unless block
each_child do |kid|
case kid[:Type]
when :Pages then kid.each_page(&block)
when :Page then yield kid
end
end
end
|
#first_page ⇒ Object
63
64
65
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 63
def first_page
each_page.first
end
|
15
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 15
def kids; self[:Kids]; end
|
#last_page ⇒ Object
67
68
69
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 67
def last_page
each_page.to_a.last
end
|
#leaf? ⇒ Boolean
27
28
29
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 27
def leaf?
false
end
|
18
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 18
def media_box; self[:MediaBox]; end
|
#page_at(index) ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 71
def page_at(index)
return nil if index.negative? || index >= page_count
each_page.with_index do |page, i|
return page if i == index
end
end
|
#page_count ⇒ Object
59
60
61
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 59
def page_count
count
end
|
55
56
57
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 55
def pages
each_page.to_a
end
|
17
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 17
def parent; self[:Parent]; end
|
#resources ⇒ Object
20
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 20
def resources; self[:Resources]; end
|
#root? ⇒ Boolean
23
24
25
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 23
def root?
parent.nil?
end
|
21
|
# File 'lib/pdfrb/model/type/page_tree_node.rb', line 21
def rotate; self[:Rotate]; end
|