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
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
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
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
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
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
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
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
Iterates over all pages inorder.
# File lib/hexapdf/document/pages.rb, line 129 def each(&block) @document.catalog.pages.each_page(&block) end
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
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