Document Listeners

PSPDFKit provides the DocumentListener interface which allows you to hook into interesting document events like document loading, page changes, page clicks, and more. Have a look at the FragmentExample or the CustomLayoutExample of the catalog app which, among other examples, showcase DocumentListener usage.

Register a document listener

Add a document listener to a PdfFragment by registering it using the addDocumentListener() method. You can register as many document listeners as you like.

1
fragment.addDocumentListener(myDocumentListener)
1
fragment.addDocumentListener(myDocumentListener);

Note: To prevent memory leaks PdfFragment removes all previously registered listeiners inside its #onDetach method.

Unregister a document listener

If you want to stop receiving document events on a listener, simply provide the listener instance to removeDocumentListener(). Performance wise, you are encouraged to unregister the listener as soon as you don't need it anymore, e.g. inside your activity's onStop() method.

1
fragment.removeDocumentListener(myDocumentListener)
1
fragment.removeDocumentListener(myDocumentListener);

Document events

The DocumentListener interface provides callback methods for important and interesting document events:

Note: All page numbers in PSPDFKit have a 0-based index, meaning 0 denotes the first page of a document and pageCount - 1 denotes the last document page.

Activity callbacks

PdfActivity implements the DocumentListener interfaces by default, allowing you to listen for the events by simply overriding those methods in your subclassed activities.

Copy
MainActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
class MyActivity : PdfActivity() {

    override fun onDocumentLoaded(document : PdfDocument) {
        Toast.makeText(this, "Document has been loaded with ${document.pageCount} pages",
            Toast.LENGTH_SHORT).show()
    }

    override fun onDocumentLoadFailed(exception : Throwable?) {
        Toast.makeText(this, "Document loading failed!", Toast.LENGTH_SHORT).show()
        exception?.printStackTrace()
    }
}
Copy
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyActivity extends PdfActivity {

    @Override
    public void onDocumentLoaded(@NonNull PdfDocument document) {
        Toast.makeText(this, String.format("Document has been loaded with %d pages",
            document.getPageCount(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDocumentLoadFailed(Throwable exception) {
        Toast.makeText(this, "Document loading failed!", Toast.LENGTH_SHORT).show();
        exception.printStackTrace();
    }
}