Shortcuts zum verschieben von Seiten im PDF

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());

1 „Gefällt mir“