Skip to main content
MuPDF WebViewer can listen for the following events:
Events
ACTION_HISTORY_CHANGE
ANNOTATION_CREATE
ANNOTATION_MODIFY
ANNOTATION_REMOVE
ANNOTATION_SELECTION_CHANGE
ANNOTATION_TOOL_CHANGE
CURRENT_PAGE_INDEX_CHANGE
CURRENT_READING_PAGE_CHANGE
CUSTOM_CONTEXT_MENU_EXECUTE
DOCUMENT_DOWNLOAD
KEYDOWN
KEYUP
MOUSEDOWN
MOUSEUP
POINTERDOWN
POINTERUP
REDACTION_CREATE
REDACTION_MODIFY
REDACTION_REMOVE
SCALE_CHANGE
SCROLL_POSITION_CHANGE
SIDE_VIEW_CLOSE
SIDE_VIEW_OPEN
TEXT_SEARCH_START
TEXT_SELECTION_CHANGE
In order to register a listener just use the mupdf.addEventListener method.

Examples

Page Change

mupdf.addEventListener(mupdf.refs.event.type.CURRENT_PAGE_INDEX_CHANGE, (e) => {
  console.log(Object.keys(e.data));
  console.log(e.data.currentPageIndex);
});

Key Events

// Listen for a key down
mupdf.addEventListener(mupdf.refs.event.type.KEYDOWN, keyDown);

function keyDown(e) {

    console.log(Object.keys(e.data));
    
    for (var i in e.data) {
        console.log(e.data[i]);
    }

    console.log("Keycode="+e.data.event.keyCode);
}

Pointer Events

// Listen for a pointer down
mupdf.addEventListener(mupdf.refs.event.type.POINTERDOWN, pointerDown);

function pointerDown(e) {

    console.log(Object.keys(e.data));

    for (var i in e.data) {
        console.log(e.data[i]);
    }

    console.log("clientX="+e.data.event.clientX);
}

Listening for Multiple Key Presses

For example, if you would like to add a shortcut for ctrl+s to save a document you could do the following to register for multiple key presses:
mupdf.addEventListener(mupdf.refs.event.type.KEYDOWN, (event) => {
  if (event.data.event.ctrlKey && event.data.event.key === 's') {
    mupdf.document.download();
  }
});

Removing Event Listeners

Event listeners can be removed using the mupdf.removeEventListener method. You need to pass in the same function reference that was used to add the event listener.
function keyDown(e) {   
    console.log("Keycode="+e.data.event.keyCode);
}

mupdf.removeEventListener(mupdf.refs.event.type.KEYDOWN, keyDown);