Class PDPageTree

java.lang.Object
org.sejda.sambox.pdmodel.PDPageTree
All Implemented Interfaces:
Iterable<PDPage>, COSObjectable

public class PDPageTree extends Object implements COSObjectable, Iterable<PDPage>
The page tree, which defines the ordering of pages in the document in an efficient manner.
Author:
John Hewson
  • Constructor Details

    • PDPageTree

      public PDPageTree()
      Constructor for embedding.
    • PDPageTree

      public PDPageTree(COSDictionary root)
      Constructor for reading.
      Parameters:
      root - A page tree root.
  • Method Details

    • getInheritableAttribute

      public static <T extends COSBase> COSBase getInheritableAttribute(COSDictionary node, COSName key, Class<T> clazz)
      Similar to getInheritableAttribute(COSDictionary, COSName) but also checks the returned element matches the expected type class
      Type Parameters:
      T -
      Parameters:
      node -
      key -
      clazz - expected type class
      Returns:
    • getInheritableAttribute

      public static COSBase getInheritableAttribute(COSDictionary node, COSName key)
      Returns the given attribute, inheriting from parent tree nodes if necessary.
      Parameters:
      node - page object
      key - the key to look up
      Returns:
      COS value for the given key
    • getInheritableAttribute

      public static COSBase getInheritableAttribute(COSDictionary node, COSName key, Set<String> visitedObjectIds)
    • iterator

      public Iterator<PDPage> iterator()
      Returns an iterator which walks all pages in the tree, in order.
      Specified by:
      iterator in interface Iterable<PDPage>
    • stream

      public Stream<PDPage> stream()
      Returns:
      a sequential Stream over the pages of this page tree.
    • streamNodes

      public Stream<COSDictionary> streamNodes()
      Returns:
      a sequential Stream over the nodes of this page tree.
    • get

      public PDPage get(int index)
      Returns the page at the given index.
      Parameters:
      index - zero-based index
    • isPageTreeNode

      public static boolean isPageTreeNode(COSDictionary node)
      Returns:
      true if the node is a page tree node (i.e. and intermediate).
    • indexOf

      public int indexOf(PDPage page)
      Returns the index of the given page, or -1 if it does not exist.
      Parameters:
      page - The page to search for.
      Returns:
      the zero-based index of the given page, or -1 if the page is not found.
    • getCount

      public int getCount()
      Returns the number of leaf nodes (page objects) that are descendants of this root within the page tree.
    • getCOSObject

      public COSDictionary getCOSObject()
      Specified by:
      getCOSObject in interface COSObjectable
      Returns:
      The COSBase that matches this Java object.
    • remove

      public void remove(int index)
      Removes the page with the given index from the page tree.
      Parameters:
      index - zero-based page index
    • remove

      public void remove(PDPage page)
      Removes the given page from the page tree.
      Parameters:
      page - The page to remove.
    • add

      public void add(PDPage page)
      Adds the given page to this page tree.
      Parameters:
      page - The page to add.
    • insertBefore

      public void insertBefore(PDPage newPage, PDPage nextPage)
      Insert a page before another page within a page tree.
      Parameters:
      newPage - the page to be inserted.
      nextPage - the page that is to be after the new page.
      Throws:
      IllegalArgumentException - if one attempts to insert a page that isn't part of a page tree.
    • insertAfter

      public void insertAfter(PDPage newPage, PDPage prevPage)
      Insert a page after another page within a page tree.
      Parameters:
      newPage - the page to be inserted.
      prevPage - the page that is to be before the new page.
      Throws:
      IllegalArgumentException - if one attempts to insert a page that isn't part of a page tree.