com.icesoft.pdf.pobjects
Class Page

java.lang.Object
  extended bycom.icesoft.pdf.pobjects.Dictionary
      extended bycom.icesoft.pdf.pobjects.Page
All Implemented Interfaces:
MemoryManageable

public class Page
extends Dictionary
implements MemoryManageable

This class represents the leaves of a PageTree object known as Page class. The page dictionary specifies attributes of the single page of the document. Many of the page's attributes are inherited from the page tree dictionary if not specified in the page dictionary.

The page object also provides a method which will extract a page's content, such as text and images. The paint method is the core of the ICEpdf renderer, allowing page content to be painted to any Java graphics context.

Page objects in a PDF document have different boundaries defined which govern various aspects of the pre-press process, such as cropping, bleed, and trimming. Facilities for including printer's marks, such a registration targets, gray ramps color bars, and cut marks which assist in the production process. When getting a page's size, the default boundary used is the crop box which is what most viewer applications should use. However, if your application requires the use of different page boundaries, they can be specified when using the getSize or paint methods. If in doubt, always use the crop box constant.

Since:
1.0
See Also:
PageTree

Field Summary
static int BOUNDARY_ARTBOX
          Defines the extent of the page's meaningful content as intended by the page's creator.
static int BOUNDARY_BLEEDBOX
          Defines the region to which the contents of the page should be clipped when output in a production environment (Mainly commercial printing).
static int BOUNDARY_CROPBOX
          Defines the visible region of the default user space.
static int BOUNDARY_MEDIABOX
          Defines the boundaries of the physical medium on which the page is intended to be displayed or printed.
static int BOUNDARY_TRIMBOX
          Defines the intended dimensions of the finished page after trimming.
 
Fields inherited from class com.icesoft.pdf.pobjects.Dictionary
entries, inited, library
 
Constructor Summary
Page(Library l, Hashtable h)
          Create a new Page object.
 
Method Summary
 void addPaintPageListener(PaintPageListener listener)
           
protected  void dispose(boolean cache)
          Dispose the Page.
 Vector getAnnotations()
          Gets all annotation information associated with this page.
 Rectangle2D.Float getArtBox()
          Gets the art box boundary defined by this page.
 Rectangle2D.Float getBleedBox()
          Gets the bleed box boundary defined by this page.
 Rectangle2D.Double getBoundingBox(float userRotation)
          Get the bounding box that the page can occupy, given the userRotation and page's own pageRotation.
 Rectangle2D.Double getBoundingBox(float userRotation, float userZoom)
          Get the bounding box that the page can occupy, given the userRotation, userZoom, page's own pageRotation.
 Rectangle2D.Double getBoundingBox(int boundary, float userRotation, float userZoom)
          Get the bounding box that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.
 Rectangle2D.Float getCropBox()
          Gets the crop box boundary defined by this page.
 Vector getImages()
          Gets a vector of Images where each index represents an image inside this page.
 Rectangle2D.Float getMediaBox()
          Gets the media box boundary defined by this page.
 PRectangle getPageBoundary(int specifiedBox)
          Utility method for appling the page boundary rules.
 Shape getPageShape(int boundary, float userRotation, float userZoom)
          This method returns a Shape that represents the outline of this Page, after being rotated and zoomed.
 AffineTransform getPageTransform(int boundary, float userRotation, float userZoom)
          The Java Graphics coordinate system has the origin at the top-left of the screen, with Y values increasing as one moves down the screen.
 PageTree getParent()
          Gets the page's parent page tree.
protected  Reference getParentReference()
          Gets a reference to the page's parent page tree.
 Resources getResources()
           
 PDimension getSize(float userRotation)
          Get the width and height that the page can occupy, given the userRotation, page's own pageRotation and cropBox boundary.
 PDimension getSize(float userRotation, float userZoom)
          Get the width and height that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.
 PDimension getSize(int boundary, float userRotation, float userZoom)
          Get the width and height that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.
 Vector getText()
          Gets a vector of Strings where each index represents a text block inside this page's content streams.
 float getTotalRotation(float userRotation)
          Gets the total rotation factor of the page after applying a user rotation factor.
 Rectangle2D.Float getTrimBox()
          Gets the trim box boundary defined by this page.
 void init()
          Initialize the Page object.
 boolean isInitiated()
           
 void notifyPaintPageListeners()
           
 void paint(Graphics g, int renderHintType, int boundary, float userRotation, float userZoom)
           
 void paint(Graphics g, int renderHintType, int boundary, float userRotation, float userZoom, PageViewComponentImpl.PagePainter pagePainter)
          Paints the contents of this page to the graphics context using the specified rotation, zoom, rendering hints and page boundary.
 void reduceMemory()
          Reduces the amount of memory used by this object.
 void removePaintPageListener(PaintPageListener listener)
           
 String toString()
          Returns a summary of the page dictionary entries.
 
Methods inherited from class com.icesoft.pdf.pobjects.Dictionary
getEntries, getFloat, getInt, getLibrary, getNumber, getObject, getPObjectReference, setPObjectReference
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.icesoft.pdf.util.MemoryManageable
getLibrary
 

Field Detail

BOUNDARY_MEDIABOX

public static final int BOUNDARY_MEDIABOX
Defines the boundaries of the physical medium on which the page is intended to be displayed or printed.

See Also:
Constant Field Values

BOUNDARY_CROPBOX

public static final int BOUNDARY_CROPBOX
Defines the visible region of the default user space. When the page is displayed or printed, its contents are to be clipped to this rectangle and then imposed on the output medium in some implementation defined manner.

See Also:
Constant Field Values

BOUNDARY_BLEEDBOX

public static final int BOUNDARY_BLEEDBOX
Defines the region to which the contents of the page should be clipped when output in a production environment (Mainly commercial printing).

See Also:
Constant Field Values

BOUNDARY_TRIMBOX

public static final int BOUNDARY_TRIMBOX
Defines the intended dimensions of the finished page after trimming.

See Also:
Constant Field Values

BOUNDARY_ARTBOX

public static final int BOUNDARY_ARTBOX
Defines the extent of the page's meaningful content as intended by the page's creator.

See Also:
Constant Field Values
Constructor Detail

Page

public Page(Library l,
            Hashtable h)
Create a new Page object. A page object represents a PDF object that has the name page associated with it. It also conceptually represents a page entity and all of it child elements that are associated with it.

Parameters:
l - pointer to default library containing all document objects
h - hashtable containing all of the dictionary entries
Method Detail

dispose

protected void dispose(boolean cache)
Dispose the Page.

Parameters:
cache - if true, cached files are removed; otherwise, objects are freed but object caches are left intact.

isInitiated

public boolean isInitiated()

init

public void init()
Initialize the Page object. This method triggers the parsing of a page's child elements. Once a page has been initialized, it can be painted.

Overrides:
init in class Dictionary

paint

public void paint(Graphics g,
                  int renderHintType,
                  int boundary,
                  float userRotation,
                  float userZoom)

paint

public void paint(Graphics g,
                  int renderHintType,
                  int boundary,
                  float userRotation,
                  float userZoom,
                  PageViewComponentImpl.PagePainter pagePainter)
Paints the contents of this page to the graphics context using the specified rotation, zoom, rendering hints and page boundary.

Parameters:
g - graphics context to which the page content will be painted.
renderHintType - Constant specified by the GraphicsRenderingHints class. There are two possible entries, SCREEN and PRINT, each with configurable rendering hints settings.
boundary - Constant specifying the page boundary to use when painting the page content.
userRotation - Rotation factor, in degrees, to be applied to the rendered page
userZoom - Zoom factor to be applied to the rendered page
pagePainter - class which will receive paint events.

getPageTransform

public AffineTransform getPageTransform(int boundary,
                                        float userRotation,
                                        float userZoom)
The Java Graphics coordinate system has the origin at the top-left of the screen, with Y values increasing as one moves down the screen. The PDF coordinate system has the origin at the bottom-left of the document, with Y values increasing as one moved up the document. As well, PDFs can be displayed both rotated and zoomed. This method gives an AffineTransform which can be passed to java.awt.Graphics2D.transform(AffineTransform) so that one can then use that Graphics2D in the user-perspectived PDF coordinate space.

Parameters:
boundary - Constant specifying the page boundary to use when painting the page content.
userRotation - Rotation factor, in degrees, to be applied to the rendered page
userZoom - Zoom factor to be applied to the rendered page
Returns:
AffineTransform for translating from the rotated and zoomed PDF coordinate system to the Java Graphics coordinate system

getPageShape

public Shape getPageShape(int boundary,
                          float userRotation,
                          float userZoom)
This method returns a Shape that represents the outline of this Page, after being rotated and zoomed. It is used for clipping, and drawing borders around the page rendering onscreen.

Parameters:
boundary - Constant specifying the page boundary to use
userRotation - Rotation factor, in degrees, to be applied
userZoom - Zoom factor to be applied
Returns:
Shape outline of the rotated and zoomed portion of this Page corresponding to the specified boundary

getParentReference

protected Reference getParentReference()
Gets a reference to the page's parent page tree. A reference can be resolved by the Library class.

Returns:
reference to parent page tree.
See Also:
Library

getParent

public PageTree getParent()
Gets the page's parent page tree.

Returns:
parent page tree.

getSize

public PDimension getSize(float userRotation)
Get the width and height that the page can occupy, given the userRotation, page's own pageRotation and cropBox boundary. The page's default zoom of 1.0f is used.

Parameters:
userRotation - Rotation factor specified by the user under which the page will be rotated.
Returns:
Dimension of width and height of the page represented in point units.
See Also:
getSize(float, float)

getSize

public PDimension getSize(float userRotation,
                          float userZoom)
Get the width and height that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.

Parameters:
userRotation - rotation factor specified by the user under which the page will be rotated.
userZoom - zoom factor specifed by the user under which the page will be rotated.
Returns:
Dimension of width and height of the page represented in point units.

getSize

public PDimension getSize(int boundary,
                          float userRotation,
                          float userZoom)
Get the width and height that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.

Parameters:
boundary - boundary constant to specify which boundary to respect when calculating the page's size.
userRotation - rotation factor specified by the user under which the page will be rotated.
userZoom - zoom factor specified by the user under which the page will be rotated.
Returns:
Dimension of width and height of the page represented in point units.

getBoundingBox

public Rectangle2D.Double getBoundingBox(float userRotation)
Get the bounding box that the page can occupy, given the userRotation and page's own pageRotation. The boundary of BOUNDARY_CROPBOX, and the default zoom of 1.0f are assumed.

Parameters:
userRotation - Rotation factor specified by the user under which the page will be rotated.
Returns:
Dimension of width and height of the page represented in point units.
See Also:
getSize(float, float)

getBoundingBox

public Rectangle2D.Double getBoundingBox(float userRotation,
                                         float userZoom)
Get the bounding box that the page can occupy, given the userRotation, userZoom, page's own pageRotation.

Parameters:
userRotation - rotation factor specified by the user under which the page will be rotated.
userZoom - zoom factor specified by the user under which the page will be rotated.
Returns:
Rectangle encompassing the page represented in point units.

getBoundingBox

public Rectangle2D.Double getBoundingBox(int boundary,
                                         float userRotation,
                                         float userZoom)
Get the bounding box that the page can occupy, given the userRotation, userZoom, page's own pageRotation and cropBox boundary.

Parameters:
boundary - boundary constant to specify which boundary to respect when calculating the page's size.
userRotation - rotation factor specified by the user under which the page will be rotated.
userZoom - zoom factor specified by the user under which the page will be rotated.
Returns:
Rectangle encompassing the page represented in point units.

getPageBoundary

public PRectangle getPageBoundary(int specifiedBox)
Utility method for appling the page boundary rules.

Parameters:
specifiedBox - page boundary constant
Returns:
bounds of page after the chain of rules have been applied.

toString

public String toString()
Returns a summary of the page dictionary entries.

Overrides:
toString in class Dictionary
Returns:
dictionary entries.

getTotalRotation

public float getTotalRotation(float userRotation)
Gets the total rotation factor of the page after applying a user rotation factor. This method will normalize rotation factors to be in the range of 0 to 360 degrees.

Parameters:
userRotation - rotation factor to be applied to page
Returns:
Total Rotation, representing pageRoation + user rotation factor applied to the whole document.

getAnnotations

public Vector getAnnotations()
Gets all annotation information associated with this page. Each entry in the vector represents one annotation. The size of the vector represents the total number of annotations associated with the page.

Returns:
annotation associated with page; null, if there are no annotations.

getMediaBox

public Rectangle2D.Float getMediaBox()
Gets the media box boundary defined by this page. The media box is a required page entry and can be inherited from its parent page tree.

Returns:
media box boundary in user space units.

getCropBox

public Rectangle2D.Float getCropBox()
Gets the crop box boundary defined by this page. The media box is a required page entry and can be inherited from its parent page tree.

Returns:
crop box boundary in user space units.

getArtBox

public Rectangle2D.Float getArtBox()
Gets the art box boundary defined by this page. The art box is a required page entry and can be inherited from its parent page tree.

Returns:
art box boundary in user space units.

getBleedBox

public Rectangle2D.Float getBleedBox()
Gets the bleed box boundary defined by this page. The bleed box is a required page entry and can be inherited from its parent page tree.

Returns:
bleed box boundary in user space units.

getTrimBox

public Rectangle2D.Float getTrimBox()
Gets the trim box boundary defined by this page. The trim box is a required page entry and can be inherited from its parent page tree.

Returns:
trim box boundary in user space units.

getText

public Vector getText()
Gets a vector of Strings where each index represents a text block inside this page's content streams. Due to limitations in how PDF documents are encoded, it is not always possible to extract valid ASCII or unicode text and order is not always guaranteed.

Returns:
vector of Strings of all text objects inside the specified page.

getImages

public Vector getImages()
Gets a vector of Images where each index represents an image inside this page.

Returns:
vector of Images inside the current page

getResources

public Resources getResources()

reduceMemory

public void reduceMemory()
Reduces the amount of memory used by this object.

Specified by:
reduceMemory in interface MemoryManageable

addPaintPageListener

public void addPaintPageListener(PaintPageListener listener)

removePaintPageListener

public void removePaintPageListener(PaintPageListener listener)

notifyPaintPageListeners

public void notifyPaintPageListeners()