Dieser Interceptor bietet die Möglichkeit, per Tastatur die aktuelle Seite innerhalb des Dokuments zu verschieben, ohne hierfür die Seitenleiste verwenden zu müssen.
Die Kürzel wären in diesem Fall Alt+Bild hoch und Alt+Bild runter. Diese kann man aber natürlich auch anpassen.
class MovePageShortcuts {
mode = '';
async initEditorConfiguration(instance) {
// Shortcut um die aktuelle Seite nach oben verschiebt
instance.UI.hotkeys.on('Alt+PageUp', async (e) => {
e.preventDefault();
await this.pageUp(instance);
});
// Shortcut um die aktuelle Seite nach unten verschiebt
instance.UI.hotkeys.on('Alt+PageDown', async (e) => {
e.preventDefault();
await this.pageDown(instance);
});
}
// Bei jeder Statusänderung des Editors merken, ob der PDF Editor im Bearbeitungsmodus ist
async updateEditorConfiguration(instance, info, config) {
this.mode = info.mode;
}
async pageUp(instance) {
// Nur im Bearbeitungsmodus zulassen
if (this.mode != 'edit') {
return;
}
const { documentViewer } = instance.Core;
const pageNumber = documentViewer.getCurrentPage();
// Ignorieren, falls die Seite bereits die erste Seite ist
if (pageNumber <= 1) {
return;
}
// Aktuelle Seite vor die vorherige Seite schieben
await documentViewer.getDocument().movePages([pageNumber], pageNumber - 1);
// Zur neuen Position der Seite scrollen
await documentViewer.setCurrentPage(pageNumber - 1, true);
}
async pageDown(instance) {
// Nur im Bearbeitungsmodus zulassen
if (this.mode != 'edit') {
return;
}
const { documentViewer } = instance.Core;
const pdfDocument = documentViewer.getDocument();
const pageNumber = documentViewer.getCurrentPage();
// Ignorieren, falls die Seite bereits die letzte Seite ist
if (pageNumber >= pdfDocument.getPageCount()) {
return;
}
// Nachfolgende Seite vor die aktuelle Seite schieben
await documentViewer.getDocument().movePages([pageNumber + 1], pageNumber);
// Zur neuen Position der Seite scrollen
await documentViewer.setCurrentPage(pageNumber + 1, true);
}
}
// Interceptor registieren
window.ed.registerInterceptor(new MovePageShortcuts());