Customizing zoom options in our Android PDF viewer
This guide shows how to programmatically manage the zoom scale of a PDF page.
Manual zooming
PdfFragment
allows you to programmatically zoom to a certain scale or to an area of a PDF document page using a convenient zooming API.
-
PdfFragment#zoomTo(RectF, int, long)
allows you to zoom to a specificRectF
on the given page. -
PdfFragment#zoomTo(int, int, int, float, long)
lets you zoom to a focus point at the given scale.
ℹ️ Note: Both methods take PDF page coordinates. To find out more on that topic, see the guide on coordinate space conversion.
You can also get the current zoom level of a page by calling PdfFragment#getZoomScale
.
Zooming in to the page
You can programmatically zoom in to the current page using zoomTo
, which zooms to a specific scale. If you’d like to apply a scale factor to the current scale (e.g. increase page scale by 2), you can use zoomBy
. Furthermore, you can use zoomTo(RectF, ...)
to zoom in to a RectF
of any page (e.g. zoom in to a sentence or annotation):
// Zoom to the annotation. val duration = 250L fragment.zoomTo(annotation.boundingBox, annotation.pageIndex, duration)
RectF annotationPosition = annotation.getBoundingBox(); int page = annotation.getPageIndex(); long duration = 250; // Zoom to the annotation. fragment.zoomTo(annotationPosition, page, duration);
💡 Tip:
zoomTo(RectF, ...)
will automatically go to the given page if some other page is currently being viewed. There’s no need to switch the page manually!
For more information on zooming, you can try out the ZoomExample
inside our Catalog app.
Starting the document at a given scale
A document can be started at an already predetermined scale (on the given page). Note that rotating the screen resets the scale. The property that controls this is startZoomScale
in PdfConfiguration
:
val configuration = PdfConfiguration.Builder() .startZoomScale(3.0f) .build()
final PdfConfiguration configuration = new PdfConfiguration.Builder() .startZoomScale(3.0f) .build();
Disabling zooming
Zooming can be disabled by setting maxZoomScale
of PdfConfiguration
to 1
. It’s important to set this value before creating the view:
val configuration = PdfConfiguration.Builder() .maxZoomScale(1.0f) .build()
final PdfConfiguration configuration = new PdfConfiguration.Builder() .maxZoomScale(1.0f) .build();