class UI { static allowedToolbarItems = [ 'sidebar-thumbnails', 'sidebar-document-ouline', 'sidebar-bookmarks', 'pager', 'pan', 'zoom-out', 'zoom-in', 'zoom-mode', 'spacer', 'search', ] // Load the PSPDFKit UI by setting a target element as the container to render in // and a arraybuffer which represents the document that should be displayed. static Instance static loadPSPDFKit(arrayBuffer, container, licenseKey, locale) { UI.Instance = PSPDFKit.load({ locale: locale, licenseKey: licenseKey, styleSheets: ['/css/site.css'], container: container, document: arrayBuffer, annotationPresets: UI.getPresets(), electronicSignatures: { creationModes: ['DRAW', 'TYPE', 'IMAGE'], }, initialViewState: new PSPDFKit.ViewState({ sidebarMode: PSPDFKit.SidebarMode.THUMBNAILS, }), isEditableAnnotation: function (annotation) { // Check if the annotation is a signature // This will allow new signatures, but not allow edits. if (annotation.isSignature || annotation.description == 'FRAME') { return false } return true //return !annotation.isSignature; }, customRenderers: { Annotation: UI.annotationRenderer, }, }) return UI.Instance; } static configurePSPDFKit(instance, handler) { const toolbarItems = UI.getToolbarItems(instance, handler) instance.setToolbarItems(toolbarItems) } static annotationRenderer(data) { // leave everything as is return null } static getToolbarItems(instance, handler) { const customItems = UI.getCustomItems(handler) const defaultItems = UI.getDefaultItems(instance.toolbarItems) return defaultItems.concat(customItems) } static createElementFromHTML(html) { const el = document.createElement('div') el.innerHTML = html.trim() return el.firstChild } static getCustomItems = function (callback) { return [] return [ { type: 'custom', id: 'button-reset', className: 'button-reset', title: 'Zurücksetzen', onPress() { callback('RESET') }, icon: ` `, }, { type: 'custom', id: 'button-reject', className: 'button-reject', title: 'Ablehnen', onPress() { callback('REJECT') }, icon: ` `, }, { type: 'custom', id: 'button-finish', className: 'button-finish', title: 'Abschließen', onPress() { callback('FINISH') }, }, ] } static getDefaultItems(items) { return items.filter((item) => UI.allowedToolbarItems.includes(item.type)) } static getPresets() { const annotationPresets = PSPDFKit.defaultAnnotationPresets annotationPresets.ink = { lineWidth: 10, } annotationPresets.widget = { readOnly: true, } return annotationPresets } }