Entferne verschiedener Funktionen in der Oberfläche

Hallo zusammen,

ich ziemlich begeistert über die Möglichkeiten der Anpassung der Oberfläche mit Interceptoren. Ich würde gerne verschiedene Funktionen (z.B. Notiz; Signatur; Dateianhang) ausblenden, da diese in unserem Umfeld nicht genutzt werden sollen, bzw. ja auch beim Einbrennen zerstört werden. Beispiele wie man z.B. die Rechteckfunktion beeinflusst habe ich ja auch gefunden. Gibt es irgendwo eine Dokumentation wie die einzelenen Elemente (also deren Namen) angesprochen werden? Gleichzeitig würde mich auch eine Liste der Felder (wie zum Beispiel $currentUser) interessieren um z.B. einen benutzerdefinierten Stempel noch mit Metadaten aus dem Dokument zu bestücken. Wo finde ich sowas?

1 Like

Hallo @THeucken, das freut mich sehr zu hören.

Ich nehme an, dies bezieht sich unter anderem auf diesen Beitrag?

Viele Elemente können dafür im Inspector (Ctrl+Shift+I) gesucht und identifiziert werden:

Bezieht sich das auf das etwas ältere Beispiel unter Interceptor-Beispiel: Selbstdefinierter Stempel in Stempel-Dropdown "Benutzerdefiniert"? Die dort verwendete Technik stösst mit Datum und Benutzer schon mehr oder weniger an seine Grenzen, aber die enaio-API (z. B. /api/session) hat viel mehr Informationen bzw. können ja beliebige Web-APIs genutzt werden, um Stempeltexte zu befüllen.

Danke für den Tipp, so konnte ich die gewünschten Elemente identifizieren:

const disableNote = { /** Disable buttons on toolBarBox **/ updateEditorConfiguration: async (instance, info, config) => { // Die Liste der Elemente, die deaktiviert/entfernt werden sollen // Füge hier 'printButton' oder einen der Kandidaten hinzu! const elementsToDisable = [ "stickyToolGroupButton", "fileAttachmentToolGroupButton", "signatureToolGroupButton" ];
    elementsToDisable.forEach(function (element) {
        // Die interne API-Methode zum Entfernen von UI-Elementen
        instance.UI.disableElements([element]);
    });
}

}

window.ed.registerInterceptor(disableNote);

1 Like

Für den Aufruf der enaio-API suche ich jetzt auch noch ein Beispiel, gibt es da was?

Super, freut mich.

Hier hatte @uw dieses Beispiel:

Embedded Documents Menü einschränken?

In den ersten paar Zeilen sieht man, wie Informationen zur OS-Session geladen werdne und dann der Interceptor nur weitermacht, wenn der aktuelle User in der Gruppe MeineBenutzergruppe ist:

...
        const session = await fetch("/osrest/api/session").json();
        
        if(!session.groups.includes("MeineBenutzergruppe")){
            return;
        }
...

Die gleiche fetch(...)-Technik geht aber im Grunde mit jeder API, die im Kontext von enaio (z. B. hinter dem enaio-Gateway) erreichbar ist. So könnte man damit z. B. auch Daten aus einer Fachanwendung, Metadaten des aktuellen Dokuments etc. abrufen.

Erstmal vielen Dank, grundsätzlich hilft mir das schon weiter, allerdings gelingt es mir nicht den Inhalt der ausgelesen Variablen in den Stempel zu bringen.
Folgender Code:

class EDCustomDataStamp { /* instance: Hierbei handelt es sich um dieses Objekt: https://docs.apryse.com/api/web/WebViewerInstance.html#main instance.Core: https://docs.apryse.com/api/web/Core.html documentViewer: https://docs.apryse.com/api/web/Core.DocumentViewer.html tool: https://docs.apryse.com/api/web/Core.Tools.RubberStampCreateTool.html#main */
async updateEditorConfiguration(instance, info, config) {	
	const { documentViewer, Annotations } = instance.Core;
    // Langname auslesen
    const session = await fetch("/osrest/api/session");
	const nutzerinfo = await session.json();
	let langName = nutzerinfo.fullname;
	console.log(langName);

    const tool = documentViewer.getTool('AnnotationCreateRubberStamp');
	// Textfarbe lässt sich nicht konfigurieren (erst in PDFTron Version 8.7+ möglich)
	// nur die Hintergrundfarbe als HTML HEX Farbe möglich
	const customStamps = [{ title: "GEPRÜFT", subtitle: "DD.MM.YYYY HH:mm von: " + langName + " [$currentUser] ", color: '#228B44'},]
	
	tool.setCustomStamps(customStamps);
}

}
window.ed.registerInterceptor(new EDCustomDataStamp());

Auf der Console wird der Langname korrekt ausgegeben:

console

Im Stempel nicht:
stempel

Was mache ich falsch?

Im Titel wird der Inhalt korrekt angzeigt:

const customStamps = [{ title: "GEPRÜFT von " + langName, subtitle: „DD.MM.YYYY HH:mm ([$currentUser])“, color: ‚#228B44‘},]

Nur in den Subtitle bekomme ich ihn nicht korrekt rein :thinking:

1 Like

Hoi @THeucken,

Embedded Documents „schützt“ was aus technischer Sicht Freitext sein soll mit den [...]-Klammern. Insofern muss nur ein Zeichen in der subtitle-Zeile verschoben werden:

var customStamps = {
  updateEditorConfiguration: async (instance, info, config) => {
    const { documentViewer, Annotations } = instance.Core;
    const session = await fetch("/osrest/api/session");
    const nutzerinfo = await session.json();
    let langName = nutzerinfo.fullname;
    console.log(langName);

    const tool = documentViewer.getTool("AnnotationCreateRubberStamp");
    const customStamps = [
      {
        title: "GEPRÜFT",
        subtitle: "DD.MM.YYYY HH:mm von: [" + langName + " $currentUser] ",
        color: "#228B44",
      },
    ];

    tool.setCustomStamps(customStamps);
  },
};

window.ed.registerInterceptor(customStamps);
1 Like