Below, please find the release notes for VirtualViewer v4.14. For questions, please contact us at or by phone at (617) 607-2010.

New Features

Document Filter

There is now an easy way to filter available documents by name in the document navigation pane. This feature is enabled by default, but can be disabled by setting the config.js parameter showDocumentFilter to false.

API for Retrieving User Display Name

virtualViewer.getUsername(): A new API has been added to programmatically retrieve the current user’s displayed user name on the client.

  • virtualViewer.getUsername() takes no arguments

  • Returns a string containing the user name currently set in the browser

Streaming Video Support

Virtual Viewer now progressively loads videos when possible. This allows the user to play the video as it buffers, instead of waiting for the entire video to load before allowing playback. Browsers may not support progressive playback on certain files that have not been optimized for progressive loading, on certain files that the browser does not support, or for other factors of the browser’s implementation of video. If the browser is not able to load a video progressively, then it will fall back to previous behavior and load the entire file.

This feature requires no configuration and is on by default. Video behavior in VirtualViewer is the same as before this feature; the only visible change is that the user may be able to play a video in VirtualViewer before the entire file has loaded. There are no API changes or additions.

Overwrite Original Format Notice

When a user makes a page manipulation (e.g. crop, rotate, insert a page, remove a page etc) on a document that is not TIFF or PDF and saves, the document’s original format is always overwritten to either TIFF or PDF. With this feature the user is warned when saving if the original format will be changed. The notice dialog gives the user three options:

“Save and Overwrite”: Continue the save and overwrite the original document’s format.

“Save to New Document”: Close the dialog and open the “Save As” dialog.

“Cancel”: Quit the save operation and close the dialog.

The dialog only pops up if the user has made a page manipulation and the original file format is not TIFF or PDF. Simply saving annotations, or modifying a document that is already a TIFF or PDF, will not result in overwrite. This feature does not change saving behavior; it notifies the user of the current saving workflow. This warning can be prevented from appearing by setting enableSaveOverwriteWarning in config.js to false.

New and Changed Callbacks

  • imageLoadCompleted will be called when an image has finished loading and is able to be displayed. Note that this callback was previously named imageLoadFinished; this callback imageLoadCompleted is a replacement of imageLoadFinished.

  • afterTabClosed will be called after a tab closes successfully. It will not fire if there’s an error while closing the tab, or if the user initiates closing the tab and cancels. The following parameters will be provided to the callback in the argument object:
    • closedDocumentId {String} The ID of the document that has just been closed.
  • onLoadUsername will be called when User Preferences code has finished loading a username from localforage, or has found that there is no username to be loaded. The following parameters will be provided to the callback in the argument object:
    • loadedUsername {String} The user name that has just been retrieved from localforage
    • previousUsername {String} The user name that was previously set in the viewer

Fixes and Changes

Multiple network requests for each image on Internet Explorer and Edge

Previously, a quirk of Internet Explorer and Edge’s image loading workflow could create a race condition. Both browsers may have significant time between when the image is done loading and when the image is usable; due to a bug in VirtualViewer’s loading process, this could lead VirtualViewer to request the image again.

Now, VirtualViewer accounts for Internet Explorer and Edge with more nuanced checks for image readiness, preventing multiple requests.

Large images and SVGs on Internet Explorer

As an older browser, Internet Explorer can handle very large images poorly: if a web application uses a great deal of memory, Internet Explorer will behave in unexpected ways. A large image with a high DPI, or multiple large images, may not be displayed or may cause errors.

Now, VirtualViewer has several fallbacks in the event of an image loading or drawing failure. First, as before, if an image is loaded as an SVG, VirtualViewer will attempt to reload it as a raster image. After that, if the image is still too large or still cannot be drawn, VirtualViewer will load a downscaled, smaller image, as an attempt to use less memory in the browser. Beginning with such large and high-resolution images means that displaying a slightly smaller image will not provide a dramatic degradation in quality.

If the downscaled image still fails to function, VirtualViewer now has more fallbacks beyond displaying a blank page; an expanded version of the page’s thumbnail will be displayed in place, to allow the user to manipulate the page and its annotations.

Miscellaneous Fixes and Changes

  • Fixed a bug on VirtualViewer .NET only, where sparse documents would display the first document’s image as every page. Now, sparse documents are properly displayed on VirtualViewer .NET.

  • enableCacheObfuscation is no longer required to be set in the client-side config.js: only the server-side configuration is needed and the client setting will be ignored.

  • Fixed a bug where if a user printed two documents in very short succession, VirtualViewer might print the last document instead of the most recent

  • Improved annotation selection to make it more natural. A user must now click on the visible line of a line or arrow annotation in order to select it, instead of anywhere in its large bounding box

  • Fixed an issue with the annotation tag dropdown

  • Ensured the annotation navigation panel hides and shows correctly when switching between documents

  • Previously, the toolbar jump-to-page text box in Internet Explorer would behave unexpectedly, and sometimes interpret a backspace as a browser “back” command. Now, the text box behaves in a standard manner

  • Fixed user interface problems in the layer manager dialog

  • Removed a source of error in the layer manager dialog by modifying the layer deletion workflow. Previously, the layer would be deleted on the server immediately upon clicking “OK” in the layer manager dialog. Now, the layer will be deleted on the server only when the user saves the entire document

  • Prevent Microsoft Edge from cutting off the bottom of extremely long documents

  • Addressed video loading and downloading bugs

  • Fixed a problem where document thumbnails could appear even if the thumbnail tab was disabled

  • Videos resize properly in Edge

  • If vvConfig.enableSingleClickImageRubberStamp is set to false, the stamp now draws in the correct location, instead of initially appearing off the page

  • Fixed a bug where redaction buttons in the search panel might be enabled for documents without text

  • Fixed a subtle bug could appear where drag-and-dropping a page thumbnail on a document tab, in exactly the right place, could cause a browser error

  • Ensure that document notes load properly when switching between tabs

  • Watermarks may now apply to a document created with Copy/Cut to New Document, if requested by the user

  • Improved VirtualViewer’s treatment of document IDs with special characters on .NET

  • Fixed a bug where the dialog asking permission to OCR would appear inappropriately during document compare

  • Update logic in the Export Document dialog so a user can no longer export a document in its original format while including document notes

  • Hiding the top Image Controls toolbar no longer hides the thumbnail panel toggle

  • Fixed UI bugs regarding disabled thumbnail tabs

  • Annotations now cannot be copied and pasted onto a cropped document

  • Annotation filtering and navigation works properly with Virtual Documents

  • Postit Annotations now enforce minimum size on creation, instead of just on resize.