class HexaPDF::Document::Pages

This class provides methods for managing the pages of a PDF file.

It uses the methods of HexaPDF::Type::PageTreeNode underneath but provides a more convenient interface.

Public Class Methods

new(document) click to toggle source

Creates a new Pages object for the given PDF document.

# File lib/hexapdf/document/pages.rb, line 50
def initialize(document)
  @document = document
end

Public Instance Methods

pages << page → pages click to toggle source

Appends the given page at the end and returns the pages object itself to allow chaining.

# File lib/hexapdf/document/pages.rb, line 89
def <<(page)
  add(page)
  self
end
[](index) click to toggle source

Returns the page for the zero-based index, or nil if no such page exists.

Negative indices count backwards from the end, i.e. -1 is the last page.

# File lib/hexapdf/document/pages.rb, line 120
def [](index)
  @document.catalog.pages.page(index)
end
add → new_page click to toggle source
add(media_box, orientation: :portrait) → new_page
add(page) → page

Adds the page or a new empty page at the end and returns it.

If no argument is given, a new page with the default dimensions (see configuration option 'page.default_media_box') is used.

If the single argument is an array with four numbers (specifying the media box), the new page will have these dimensions.

If the single argument is a symbol, it is taken as referencing a pre-defined media box in HexaPDF::Type::Page::PAPER_SIZE for the new page. The optional argument orientation can be used to change the orientation to :landscape if needed.

# File lib/hexapdf/document/pages.rb, line 75
def add(page = nil, orientation: :portrait)
  if page.kind_of?(Array)
    page = @document.add({Type: :Page, MediaBox: page})
  elsif page.kind_of?(Symbol)
    box = Type::Page.media_box(page, orientation: orientation)
    page = @document.add({Type: :Page, MediaBox: box})
  end
  @document.catalog.pages.add_page(page)
end
count() click to toggle source

Returns the number of pages in the PDF document. May be zero if the document has no pages.

# File lib/hexapdf/document/pages.rb, line 134
def count
  @document.catalog.pages.page_count
end
Also aliased as: size, length
delete(page) click to toggle source

Deletes the given page object from the document's page tree and the document.

Also see: HexaPDF::Type::PageTreeNode#delete_page

# File lib/hexapdf/document/pages.rb, line 106
def delete(page)
  @document.catalog.pages.delete_page(page)
end
delete_at(index) click to toggle source

Deletes the page object at the given index from the document's page tree and the document.

Also see: HexaPDF::Type::PageTreeNode#delete_page

# File lib/hexapdf/document/pages.rb, line 113
def delete_at(index)
  @document.catalog.pages.delete_page(index)
end
each {|page| block } → pages click to toggle source
each → Enumerator

Iterates over all pages inorder.

# File lib/hexapdf/document/pages.rb, line 129
def each(&block)
  @document.catalog.pages.each_page(&block)
end
insert(index, page = nil) click to toggle source

Inserts the page or a new empty page at the zero-based index and returns it.

Negative indices count backwards from the end, i.e. -1 is the last page. When using negative indices, the page will be inserted after that element. So using an index of -1 will insert the page after the last page.

# File lib/hexapdf/document/pages.rb, line 99
def insert(index, page = nil)
  @document.catalog.pages.insert_page(index, page)
end
length()
Alias for: count
root() click to toggle source

Returns the root of the page tree, a HexaPDF::Type::PageTreeNode object.

# File lib/hexapdf/document/pages.rb, line 55
def root
  @document.catalog.pages
end
size()
Alias for: count