Below, please find the release notes for VirtualViewer v5.4.0 and associated minor releases. For questions, please contact us at info@accusoft.com or by phone at (617) 607-2010.

v5.4.0 - August 27, 2020

General availability release.

New features

  • Upgraded iText from 7.0.5 to 7.1.9 for PDF/XFA, HTML file format support
  • Added Tesseract 4.1 OCR support for Linux Operating Systems

Packaging changes

  • Provided POM with dependencies only

  • Added Javadoc JAR packaging

Known Issues

  • The default software repository used by Debian 10 “buster”, and possibly other Linux distros, will install tesseract 4.0 which is incompatible with tess4j 4.5.2. Downgrading tess4j is not feasible. You must compile and install tesseract 4.1.x from source or use a 3’rd party repository. A quick guide (provided with no guarantees) is located in our VirtualViewer 5.4.0 Docker release GitHub repository. Windows is unaffected as these DLLs are provided.
    • If you are using Docker, our image already has this fix applied. If you would like to build your own image, see our reference design provided in the custom directory.

Hiding the Toolbars and Document Tabs

VirtualViewer’s top toolbar, annotation toolbar and document tabs can all be hidden from the viewer. To hide the top toolbar, the parameter disableToolbar must be set to true in the config.js file. To hide the annotation toolbar, the parameter disableAnnToolbar must be set to true in the config.js file. Finally, to hide the document tabs and remove the tab bar above the document, the parameter disableImageTabs must be set to true in the config.js file. If all, a combination of the three, or any of these parameters are set to true the space is filled by the document.

Configurable Canvas Size

VirtualViewer’s canvas height and width calculations are now more accurate. In addition to the more accurate canvas size calculations, the canvas size is now configurable by setting the parameter canvasBufferSpace in the config.js file. Therefore, the canvas size cannot become too big and overlap the horizontal scrollbar, leaving the scrollbar unusable. A suggested value for the canvasBufferSize is a value less than 20.

Drawing Annotations with a Locked Aspect Ratio

Users can now draw and resize most annotations while locking their aspect ratio. Several new behaviors allow this enhancement.

A new configuration item has been introduced to ensure that image rubber stamp annotations will never deform as a user resizes them. Set vvConfig.enableStampAspectRatioLock to true in order to force image rubber stamps to retain their aspect ratio as the user draws and resizes. This configuration item is off by default.

When the user draws a new ellipse or rectangle annotation, holding shift will force the annotation to a circle or a square, respectively. Holding shift while resizing a drawn annotation will preserve that annotation’s aspect ratio as it shrinks or expands.

Holding shift while drawing a line or arrow will make it snap to horizontal or vertical lines. Holding shift while resizing lines doesn’t lock it’s aspect ratio or orientation.

New Alpha of a RESTful Content Handler

VirtualViewer 5.4 includes an alpha version of a RESTful content handler. Normally, VirtualViewer calls content handler code through Java interfaces, requiring Java development. The alpha RESTful content handler translates those requests to an HTTP API. This allows the custom content handler to be completely written in any programming language and to be independent of VirtualViewer code.

New Callbacks

  • annotationDeletion will be called when the user deletes an annotation. The following parameters will be provided to the callback in the argument object:
    • type {String} The type of annotation that was deleted. For instance, “Line” or “Arrow”.
  • onWindowResize will be called when the browser window resizes. The following parameters will be provided to the callback in the argument object:
    • defaultZoomMode {Number} The default zoom mode set in config.js. This number correspond to a value in the vvDefines.zoomModes enum.
    • currentZoomMode {Number} The current zoom mode used by the browser; after load, this value is usually set to the custom zoom mode. This number correspond to a value in the vvDefines.zoomModes enum.
  • onPageLoadAndRendered will be called when a page has been successfully rendered on the canvas. There may still be cases where the page unexpectedly fails to render without an error that the viewer can catch. The following parameters will be provided to the callback in the argument object:
    • documentId {String} The ID of the currently open document.
    • pageNumber {Number} The index of the page that has just been loaded.
  • onThumbLoadAndRendered will be called when a thumbnail image is loaded and rendered. The following parameters will be provided to the callback in the argument object:
    • documentId {String} The ID of the currently open document.
    • pageNumber {Number} The index of the page thumbnail that has just been loaded.
  • onSplitScreenComplete will be called when the viewer has successfully entered into split screen mode. The following parameters will be provided to the callback in the argument object:
    • documentId {String} The document id of the document we are opening in the split pane.
    • paneIndex {Number} The current pane index for the document.

Miscellaneous

  • Copying and pasting between sessions of VirtualViewer in different tabs or windows can now be disabled by setting enableCopyPasteBetweenSessions in config.js to false.
  • A document is no longer marked as modified when an annotation button is selected, but an annotation is not drawn.
  • Closing the right pane document when in document compare mode can now be disabled by calling the function virtualViewer.removeUndoSplit(). The x button on the top left corner of the right pane is removed. In addition, the option to close the document from the right-click context menu has also been removed.
  • The thumbnail image in the pages tab align with the current page when selecting a bookmark link.
  • Documents may now Save As their original format, rather than converting to TIF or PDF, when no image manipulations or modifications have been performed.
  • Client-side calculation of image brightness has been tweaked to better match the server’s calculations.