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 | |
---|---|
int | addPageAnnotation(PdfAnnotation annotation) Adds the given annotation to the page. |
int | addPageObject(PdfPageObject pageObject) Adds the given |
List<Rect> | applyEdit(FormEditRecord editRecord) Applies a |
void | close() Closes this page. |
FormWidgetInfo | getFormWidgetInfoAtIndex(int widgetIndex) Returns information about the widget with |
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(int[] types) Returns information about all form widgets of the specified types on the page, or an empty list if there are no form widgets of the specified types 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 |
List<PdfPageImageContent> | getImageContents() Return list of |
int | getIndex() Gets the page index. |
List<PdfPageLinkContent> | getLinkContents() Get the bounds and URLs of all the links on the page. |
List<Pair<Integer, PdfAnnotation>> | getPageAnnotations() Returns a list of pairs, where each pair consists of a supported |
List<Pair<Integer, PdfPageObject>> | getPageObjects() Returns |
List<PdfPageTextContent> | getTextContents() Return list of |
Pair<Integer, PdfPageObject> | getTopPageObjectAtPosition(PointF point, int[] types) Retrieves the top-most page object at a specified position. |
int | getWidth() Returns the width of the |
void | removePageAnnotation(int annotationId) Removes the annotation with the specified id. |
void | removePageObject(int objectId) Removes the |
void | render(Bitmap destination, Rect destClip, Matrix transform, RenderParams params) Renders a page to a bitmap. |
void | render(Bitmap destination, Rect destClip, Matrix transform, int renderMode) 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 start, SelectionBoundary stop) Return a |
boolean | updatePageAnnotation(int annotationId, PdfAnnotation annotation) Update the given |
boolean | updatePageObject(int objectId, PdfPageObject pageObject) Update the given |
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
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
public static final int RENDER_MODE_FOR_PRINT
Mode to render the content for printing.
Constant Value: 2 (0x00000002)
Public methods
addPageAnnotation
public int addPageAnnotation (PdfAnnotation annotation)
Adds the given annotation to the page. The annotation should be of supported type. See PdfAnnotationType
for the supported types
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
annotation | PdfAnnotation : the PdfAnnotation object to add This value cannot be null . |
Returns | |
---|---|
int | id of the added annotation, or -1 if the annotation cannot be added. The id is guaranteed to be non-negative if the annotation is added successfully. Value is -1 or greater |
Throws | |
---|---|
IllegalArgumentException | if the provided annotation is of unsupported type i.e.- PdfAnnotationType.UNKNOWN or if the add operation failed. |
IllegalStateException | if PdfRenderer or PdfRenderer.Page is closed before invocation. |
addPageObject
public int addPageObject (PdfPageObject pageObject)
Adds the given PdfPageObject
to the page.
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
pageObject | PdfPageObject : the PdfPageObject object to add. This value cannot be null . |
Returns | |
---|---|
int | id of the added page object, or -1 if the page object cannot be added. The id is guaranteed to be non-negative if the page object is added successfully. |
Throws | |
---|---|
IllegalArgumentException | if the provided PdfPageObject is of unsupported type i.e. PdfPageObjectType.UNKNOWN or if the add operation failed. |
IllegalStateException | if the PdfRenderer.Page is closed before invocation. |
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 FormEditRecord
s, performs a click on FormEditRecord.getClickPoint()
For set text type FormEditRecord
s, sets the text value of the form widget.
For set indices type FormEditRecord
s, 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 cannot be applied to the widget indicated by the index, or if the index does not correspond to a widget on the page. |
IllegalStateException | If the document is already closed. |
IllegalStateException | If the page is already closed. |
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 widget annotations array in the PDF document, available on results of previous calls to getFormWidgetInfos(int[]) or getFormWidgetInfoAtPosition(int, int) via FormWidgetInfo.getWidgetIndex() . Value is 0 or greater |
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 (int[] types)
Returns information about all form widgets of the specified types on the page, or an empty list if there are no form widgets of the specified types on the page.
Parameters | |
---|---|
types | int : the types of form widgets to return, or an empty array to return all widgets This value cannot be null . |
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, ordered left to right and top to bottom. This value cannot be null . |
Throws | |
---|---|
IllegalStateException | If the document/page is closed before invocation. |
getHeight
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 Value is 0 or greater |
Throws | |
---|---|
IllegalStateException | If the document/page is closed before invocation. |
getImageContents
public List<PdfPageImageContent> getImageContents ()
Return list of PdfPageImageContent
found on the page, ordered left to right and top to bottom. 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. Currently, localisation does not have any impact on the order in which PdfPageImageContent
is returned.
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
public int getIndex ()
Gets the page index.
Returns | |
---|---|
int | The index. Value is 0 or greater |
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. |
getPageAnnotations
public List<Pair<Integer, PdfAnnotation>> getPageAnnotations ()
Returns a list of pairs, where each pair consists of a supported PdfAnnotation
and its corresponding ID on the specified page. ID of the annotation will be required for updatePageAnnotation(int, android.graphics.pdf.component.PdfAnnotation)
and removePageAnnotation(int)
and will remain same without mutate operations.
The returned list will be empty if no supported annotations are present on the page, even if the page contains other annotation types. Refer to PdfAnnotationType
for the supported annotation types.
Returns | |
---|---|
List<Pair<Integer, PdfAnnotation>> | A list of pairs representing the supported annotations and their ids on the page. This value cannot be null . |
Throws | |
---|---|
IllegalStateException | if PdfRenderer or PdfRenderer.Page is closed before invocation. |
getPageObjects
public List<Pair<Integer, PdfPageObject>> getPageObjects ()
Returns List
of Pair
objects, where each pair contains: - An Integer
representing the object ID, which is required for updatePageObject(int, android.graphics.pdf.component.PdfPageObject)
and removePageObject(int)
. Object ID will remain same without mutate operations. - A PdfPageObject
representing the page object.
The list will be empty if there are no supported page objects present on the page, even if the page contains other page object types.
Returns | |
---|---|
List<Pair<Integer, PdfPageObject>> | List of Pair objects containing Integer and PdfPageObject . This value cannot be null . |
Throws | |
---|---|
IllegalStateException | if the PdfRenderer.Page is closed before invocation. |
getTextContents
public List<PdfPageTextContent> getTextContents ()
Return list of PdfPageTextContent
found on the page, ordered left to right and top to bottom. It contains all the content associated with text found on the page. The list will be empty if there are no results found. Currently, localisation does not have any impact on the order in which PdfPageTextContent
is returned.
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. |
getTopPageObjectAtPosition
public Pair<Integer, PdfPageObject> getTopPageObjectAtPosition (PointF point, int[] types)
Retrieves the top-most page object at a specified position.
Parameters | |
---|---|
point | PointF : The coordinates (as a PointF ) on the page to check for page objects. This value cannot be null . |
types | int : An array of ERROR(/PdfPageObjectType.Type) values. Only page objects whose types are included in this array will be considered. If multiple matching objects overlap at the specified point, only the one with the highest z-index will be returned. The order of types within this array does not influence the outcome. If this array is empty, known supported PdfPageObjectType s will be considered. This value cannot be null . |
Returns | |
---|---|
Pair<Integer, PdfPageObject> | A Pair containing:
|
Throws | |
---|---|
IllegalStateException | if the PdfRenderer.Page is closed before invocation |
IllegalArgumentException | if the provided type(s) are not supported. |
getWidth
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 Value is 0 or greater |
Throws | |
---|---|
IllegalStateException | If the document/page is closed before invocation. |
removePageAnnotation
public void removePageAnnotation (int annotationId)
Removes the annotation with the specified id.
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
annotationId | int : id of the annotation to remove from the page Value is 0 or greater |
Throws | |
---|---|
IllegalArgumentException | if annotationId is negative or invalid or if the remove operation failed. |
IllegalStateException | if PdfRenderer or PdfRenderer.Page is closed before invocation or if annotation is failed to get removed from the page. |
removePageObject
public void removePageObject (int objectId)
Removes the PdfPageObject
with the specified ID.
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
objectId | int : the id of the page object to remove from the page. Value is 0 or greater |
Throws | |
---|---|
IllegalArgumentException | if the provided objectId is negative or invalid or if the remove operation failed. |
IllegalStateException | if the page object cannot be removed. |
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 to control the appearance of annotations and PDF form content This value cannot be null . |
Throws | |
---|---|
IllegalStateException | If the document/page is closed before invocation. |
render
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 |
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 start, SelectionBoundary stop)
Return a PageSelection
which represents the selected content that spans between the two boundaries. The boundaries 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 at 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 start and stop 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 | |
---|---|
start | SelectionBoundary : boundary where the selection starts (inclusive) This value cannot be null . |
stop | SelectionBoundary : boundary where the selection stops (exclusive) This value cannot be null . |
Returns | |
---|---|
PageSelection | collection of the selected content for text, images, etc. |
Throws | |
---|---|
IllegalStateException | If the document/page is closed before invocation. |
updatePageAnnotation
public boolean updatePageAnnotation (int annotationId, PdfAnnotation annotation)
Update the given PdfAnnotation
to the page.
Note: The PdfAnnotationType
of the provided annotation must be the same as the original annotation being updated.
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
annotationId | int : id corresponding to which the annotation is to be updated Value is 0 or greater |
annotation | PdfAnnotation : the annotation to update This value cannot be null . |
Returns | |
---|---|
boolean | true if annotation is updated, false otherwise |
Throws | |
---|---|
IllegalArgumentException | if the provided annotation is of unsupported type i.e. PdfAnnotationType.UNKNOWN or if the provided annotationId is negative or if PdfAnnotationType of the provided annotation is different from the original annotation's type |
IllegalStateException | if PdfRenderer or PdfRenderer.Page is closed before invocation |
updatePageObject
public boolean updatePageObject (int objectId, PdfPageObject pageObject)
Update the given PdfPageObject
to the page.
Note: This method only updates the parameters of the PageObject whose setters are available. Attempting to update fields with no corresponding setters will have no effect. Furthermore, the PdfPageObjectType
of the provided pageObject must be the same as the original pageObject being updated.
PdfRenderer.write
needs to be called to get the updated PDF stream after calling this method. PdfRenderer.Page
instance can be closed before calling PdfRenderer.write
.
Parameters | |
---|---|
objectId | int : The unique identifier of the page object to update. Value is 0 or greater |
pageObject | PdfPageObject : The PdfPageObject object to update. This value cannot be null . |
Returns | |
---|---|
boolean | true if page object is updated, false otherwise. |
Throws | |
---|---|
IllegalArgumentException | if the provided PdfPageObject is unsupported or if the PdfPageObjectType of the provided pageObject is different from the original pageObject's type. |
IllegalStateException | if the PdfRenderer.Page is closed before invocation. |
Protected methods
finalize
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 |