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?
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]);
});
}
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:
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);
}
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
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: