We're currently using the Web GUI and the (DocUltimate) previewer component. What we do is showing a preview of a subject. This preview is a SVG-document, which the previewer component converts to a PDF file, and previews. We use this especially because of the zoom functionality. We've received some feedback of our end users that the previewer is too slow. What they do is they open a record, check the preview and continue on to the next one (it's a grid + a preview). Caching is useless in this process, as it's most likely the document will be opened only once.
Now the problem is that I somehow want to increase the performance, or better said, the user experience. Currently it's not loaded 'with a blink of the eye'. Causes of this can be:
- Not enough resources on the server
- The convertion from SVG to PDF that DocUltimate has to do
- The contents of the SVG
These cases we've tested and try to influence. We scaled the Azure environment up, but you'll still see the loading image spinning, and doesn't affect the performance. We've also tried direct PDF files in stead of the SVG's, but still no performance increase. We did find out the contents of the SVG affect the performance and we've applied a trick here that affects it (by scaling it down in sizes to fit with the window width). But problem is that the user can define the content of this preview, so it still can be really large. You simply don't know what the user does. And although that's applied, it's still not fast enough in the eyes of the end user.
So, we're looking to alternatives, or fixes.
Because it's actually a SVG document, it could be perfectly an HTML component which could be embedded. Problem is that this cannot be zoomed in and out, which is mandatory. And it cannot be set to full screen, which is also mandatory. I say it cannot be zoomed, because we've tried to embed some JavaScript libraries (https://github.com/ariutta/svg-pan-zoom) but they are stripped away by the HTML control.
So are there any suggestions? I was thinking of going for the 'html component' way, which sounds the most 'light' solution, only it doesn't has the required zoom / full screen features. Even if JavaScript is allowed, I am not sure if it's possible. Another idea is embed it as an url. So that the preview is generated by a web service or so. The column value is for example https://my-service.site/generate?data=base64data. Just an idea, don't know if it's possible.