PdfRenderer.Page

public final class PdfRenderer.Page
extends Object implements AutoCloseable

java.lang.Object
   ↳ android.graphics.pdf.PdfRenderer.Page


This class represents a PDF document page for rendering.

Summary

Constants

int RENDER_MODE_FOR_DISPLAY

Mode to render the content for display on a screen.

int RENDER_MODE_FOR_PRINT

Mode to render the content for printing.

Public methods

List<Rect> applyEdit(FormEditRecord editRecord)

Applies a FormEditRecord to the PDF.

List<FormEditRecord> applyEdits(List<FormEditRecord> formEditRecords)

Applies the FormEditRecords to the page, in order.

void close()

Closes this page.

FormWidgetInfo getFormWidgetInfoAtIndex(int widgetIndex)

Returns information about the widget with widgetIndex.

FormWidgetInfo getFormWidgetInfoAtPosition(int x, int y)

Returns information about the widget at the given point.

List<FormWidgetInfo> getFormWidgetInfos()

Returns information about all form widgets on the page, or an empty list if there are no form widgets on the page.

List<FormWidgetInfo> getFormWidgetInfos(Set<Integer> types)

Returns information about all form widgets on the page, or an empty list if there are no form widgets on the page.

List<PdfPageGotoLinkContent> getGotoLinks()

Gets bookmarks and goto links present on the page of a pdf document.

int getHeight()

Returns the height of the PdfRenderer.Page object in points (1/72").

List<PdfPageImageContent> getImageContents()

Return list of PdfPageImageContent in the order it was found on the page.

int getIndex()

Gets the page index.

List<PdfPageLinkContent> getLinkContents()

Get the bounds and URLs of all the links on the page.

List<PdfPageTextContent> getTextContents()

Return list of PdfPageTextContent in the order it was found on the page.

int getWidth()

Returns the width of the PdfRenderer.Page object in points (1/72").

void render(Bitmap destination, Rect destClip, Matrix transform, int renderMode)

Renders a page to a bitmap.

void render(Bitmap destination, Rect destClip, Matrix transform, RenderParams params)

Renders a page to a bitmap.

List<PageMatchBounds> searchText(String query)

Search for the given string on the page and returns the bounds of all the matches.

PageSelection selectContent(SelectionBoundary left, SelectionBoundary right, boolean isRtl)

Return a PageSelection which represents the selected content that spans between the two boundaries, both of which can be either exactly defined with text indexes, or approximately defined with points on the page.

Protected methods

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

Inherited methods

Constants

RENDER_MODE_FOR_DISPLAY

Added in API level 21
public static final int RENDER_MODE_FOR_DISPLAY

Mode to render the content for display on a screen.

Constant Value: 1 (0x00000001)

RENDER_MODE_FOR_PRINT

Added in API level 21
public static final int RENDER_MODE_FOR_PRINT

Mode to render the content for printing.

Constant Value: 2 (0x00000002)

Public methods

applyEdit

public List<Rect> applyEdit (FormEditRecord editRecord)

Applies a FormEditRecord to the PDF.

Apps must call render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, android.graphics.pdf.RenderParams) to render new bitmaps for the corresponding areas of the page.

For click type FormEditRecords, performs a click on FormEditRecord.getClickPoint()

For set text type FormEditRecords, sets the text value of the form widget.

For set indices type FormEditRecords, sets the FormEditRecord.getSelectedIndices() as selected and all others as unselected for the form widget indicated by the record.

Parameters
editRecord FormEditRecord: the FormEditRecord to be applied This value cannot be null.

Returns
List<Rect> Rectangular areas of the page bitmap that have been invalidated by this action. This value cannot be null.

Throws
IllegalArgumentException if the provided FormEditRecord is not applicable to the widget indicated by the index (e.g. a set indices type record contains an index that corresponds to push button widget, or if the index does not correspond to a form widget on the page).
IllegalStateException If the document is already closed.
IllegalStateException If the page is already closed.

applyEdits

public List<FormEditRecord> applyEdits (List<FormEditRecord> formEditRecords)

Applies the FormEditRecords to the page, in order.

Note: Re-rendering the page via render(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Matrix, android.graphics.pdf.RenderParams) is required after calling this method. Applying edits to form widgets will change the appearance of the page.

If any record cannot be applied, it will be returned and no further records will be applied. Records already applied will not be reverted. To restore the page to its state before any records were applied, re-load the page via close() and PdfRenderer.openPage(int).

Parameters
formEditRecords List: the FormEditRecords to be applied This value cannot be null.

Returns
List<FormEditRecord> the records that could not be applied, or an empty list if all were applied This value cannot be null.

Throws
IllegalStateException If the document is already closed.
IllegalStateException If the page is already closed.

close

Added in API level 21
public void close ()

Closes this page.

getFormWidgetInfoAtIndex

public FormWidgetInfo getFormWidgetInfoAtIndex (int widgetIndex)

Returns information about the widget with widgetIndex.

Parameters
widgetIndex int: the index of the widget within the page's "Annot" array in the PDF document, available on results of previous calls to getFormWidgetInfos(java.util.Set) or getFormWidgetInfoAtPosition(int, int) via FormWidgetInfo.getWidgetIndex().

Returns
FormWidgetInfo This value cannot be null.

Throws
IllegalArgumentException if there is no form widget at the provided index.
IllegalStateException if the renderer or page is closed

getFormWidgetInfoAtPosition

public FormWidgetInfo getFormWidgetInfoAtPosition (int x, 
                int y)

Returns information about the widget at the given point.

Parameters
x int: the x position of the widget on the page, in points

y int: the y position of the widget on the page, in points

Returns
FormWidgetInfo This value cannot be null.

Throws
IllegalArgumentException if there is no form widget at the provided position.
IllegalStateException if the renderer or page is closed

getFormWidgetInfos

public List<FormWidgetInfo> getFormWidgetInfos ()

Returns information about all form widgets on the page, or an empty list if there are no form widgets on the page.

Returns
List<FormWidgetInfo> This value cannot be null.

Throws
IllegalStateException if the renderer or page is closed

getFormWidgetInfos

public List<FormWidgetInfo> getFormWidgetInfos (Set<Integer> types)

Returns information about all form widgets on the page, or an empty list if there are no form widgets on the page.

Parameters
types Set: the types of form widgets to return This value cannot be null. Value is FormWidgetInfo.WIDGET_TYPE_UNKNOWN, FormWidgetInfo.WIDGET_TYPE_PUSHBUTTON, FormWidgetInfo.WIDGET_TYPE_CHECKBOX, FormWidgetInfo.WIDGET_TYPE_RADIOBUTTON, FormWidgetInfo.WIDGET_TYPE_COMBOBOX, FormWidgetInfo.WIDGET_TYPE_LISTBOX, FormWidgetInfo.WIDGET_TYPE_TEXTFIELD, or FormWidgetInfo.WIDGET_TYPE_SIGNATURE

Returns
List<FormWidgetInfo> This value cannot be null.

Throws
IllegalStateException if the renderer or page is closed

getGotoLinks

public List<PdfPageGotoLinkContent> getGotoLinks ()

Gets bookmarks and goto links present on the page of a pdf document. Goto Links are the internal navigation links which directs the user to different location within the same document.

Returns
List<PdfPageGotoLinkContent> list of all goto links PdfPageGotoLinkContent on a page in the order they are present on the page This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

getHeight

Added in API level 21
public int getHeight ()

Returns the height of the PdfRenderer.Page object in points (1/72"). It is not guaranteed that all pages will have the same height and the viewport should be resized to the page height.

Returns
int height of the page

Throws
IllegalStateException If the document/page is closed before invocation.

getImageContents

public List<PdfPageImageContent> getImageContents ()

Return list of PdfPageImageContent in the order it was found on the page. It contains all the content associated with images found on the page including alt text. The list will be empty if there are no results found.

Returns
List<PdfPageImageContent> list of image content found on the page. This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

getIndex

Added in API level 21
public int getIndex ()

Gets the page index.

Returns
int The index.

getLinkContents

public List<PdfPageLinkContent> getLinkContents ()

Get the bounds and URLs of all the links on the page.

Returns
List<PdfPageLinkContent> list of all links on the page. This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

getTextContents

public List<PdfPageTextContent> getTextContents ()

Return list of PdfPageTextContent in the order it was found on the page. It contains all the content associated with text found on the page. The list will be empty if there are no results found.

Returns
List<PdfPageTextContent> list of text content found on the page. This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

getWidth

Added in API level 21
public int getWidth ()

Returns the width of the PdfRenderer.Page object in points (1/72"). It is not guaranteed that all pages will have the same width and the viewport should be resized to the page width.

Returns
int width of the page

Throws
IllegalStateException If the document/page is closed before invocation.

render

Added in API level 21
public void render (Bitmap destination, 
                Rect destClip, 
                Matrix transform, 
                int renderMode)

Renders a page to a bitmap.

You may optionally specify a rectangular clip in the bitmap bounds. No rendering outside the clip will be performed, hence it is your responsibility to initialize the bitmap outside the clip.

You may optionally specify a matrix to transform the content from page coordinates which are in points (1/72") to bitmap coordinates which are in pixels. If this matrix is not provided this method will apply a transformation that will fit the whole page to the destination clip if provided or the destination bitmap if no clip is provided.

The clip and transformation are useful for implementing tile rendering where the destination bitmap contains a portion of the image, for example when zooming. Another useful application is for printing where the size of the bitmap holding the page is too large and a client can render the page in stripes.

Note: The destination bitmap format must be ARGB.

Note: The optional transformation matrix must be affine as per Matrix.isAffine(). Hence, you can specify rotation, scaling, translation but not a perspective transformation.

Parameters
destination Bitmap: Destination bitmap to which to render. This value cannot be null.

destClip Rect: Optional clip in the bitmap bounds. This value may be null.

transform Matrix: Optional transformation to apply when rendering. This value may be null.

renderMode int: The render mode. Value is RENDER_MODE_FOR_DISPLAY, or RENDER_MODE_FOR_PRINT

render

public void render (Bitmap destination, 
                Rect destClip, 
                Matrix transform, 
                RenderParams params)

Renders a page to a bitmap. In case of default zoom, the Bitmap dimensions will be equal to the page dimensions. In this case, Rect parameter can be null.

In case of zoom, the Rect parameter needs to be specified which represents the offset from top and left for tile generation purposes. In this case, the Bitmap dimensions should be equal to the tile dimensions.

Note: The method will take care of closing the bitmap. Should be invoked on the ERROR(/android.annotation.WorkerThread) as it is long-running task.

Parameters
destination Bitmap: Destination bitmap to write to. This value cannot be null.

destClip Rect: If null, default zoom is applied. In case the value is non-null, the value specifies the top top-left corner of the tile.

transform Matrix: Applied to scale the bitmap up/down from default 1/72 points. This value may be null.

params RenderParams: Render params for the changing display mode and/or annotations. This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

searchText

public List<PageMatchBounds> searchText (String query)

Search for the given string on the page and returns the bounds of all the matches. The list will be empty if there are no matches on the page. If this function was invoked previously for any page, it will wait for that operation to complete before this operation is started.

Note: Should be invoked on the ERROR(/android.annotation.WorkerThread) as it is long-running task.

Parameters
query String: plain search string for querying the document This value cannot be null.

Returns
List<PageMatchBounds> List of PageMatchBounds representing the bounds of each match on the page. This value cannot be null.

Throws
IllegalStateException If the document/page is closed before invocation.

selectContent

public PageSelection selectContent (SelectionBoundary left, 
                SelectionBoundary right, 
                boolean isRtl)

Return a PageSelection which represents the selected content that spans between the two boundaries, both of which can be either exactly defined with text indexes, or approximately defined with points on the page. The resulting selection will also be exactly defined with both indexes and points. If the start and stop boundary are both the same point, selects the word at that point. In case the selection from the given boundaries result in an empty space, then the method returns null. The left and right SelectionBoundary in PageSelection resolves to the "nearest" index when returned.

Note: Should be invoked on a ERROR(/android.annotation.WorkerThread) as it is long-running task.

Parameters
left SelectionBoundary: start boundary of the selection (inclusive) This value cannot be null.

right SelectionBoundary: stop boundary of the selection (exclusive) This value cannot be null.

isRtl boolean: determines right-to-left mode for the selection.

Returns
PageSelection collection of the selected content for text, images, etc.

Throws
IllegalStateException If the document/page is closed before invocation.

Protected methods

finalize

Added in API level 21
protected void finalize ()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup.

The general contract of finalize is that it is invoked if and when the Java virtual machine has determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, except as a result of an action taken by the finalization of some other object or class which is ready to be finalized. The finalize method may take any action, including making this object available again to other threads; the usual purpose of finalize, however, is to perform cleanup actions before the object is irrevocably discarded. For example, the finalize method for an object that represents an input/output connection might perform explicit I/O transactions to break the connection before the object is permanently discarded.

The finalize method of class Object performs no special action; it simply returns normally. Subclasses of Object may override this definition.

The Java programming language does not guarantee which thread will invoke the finalize method for any given object. It is guaranteed, however, that the thread that invokes finalize will not be holding any user-visible synchronization locks when finalize is invoked. If an uncaught exception is thrown by the finalize method, the exception is ignored and finalization of that object terminates.

After the finalize method has been invoked for an object, no further action is taken until the Java virtual machine has again determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, including possible actions by other objects or classes which are ready to be finalized, at which point the object may be discarded.

The finalize method is never invoked more than once by a Java virtual machine for any given object.

Any exception thrown by the finalize method causes the finalization of this object to be halted, but is otherwise ignored.

Throws
Throwable