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

v5.10.0 - November 8, 2022

General availability release.

Known Issues

  • Report Issues Here

New features

Left-Right Thumbnails

The user preferences menu now has an opition under the General Preferences tab that allows users to shift the thumbnal panel from the right side to the left.

This feature’s default behavior is controlled in vvConfig.js file under the thumbPanelSide attribute. The two options are vvDefines.thumbPanelSide.rightSide and vvDefines.thumbPanelSide.leftSide, rightSide being the default.

API

Health Check

The content handler has new API endpoints for checking the server’s health. A checkHealth method was added to the server, where an administrator can call into the VirtualViewer server and get an HTML response. The following health checks can be called on the server:

  • threadInterruptions: check to see when the last time a thread was interruped on the server
  • unexpectedErrors: returns the last time the server encounted an unhealthy response
  • contentHandlerAvailable: returns 200 if the AjaxServlet can confirm a connection to a contentHandler
  • goodLicense: returns 200 if there are no issues with the license on the server
  • alive: returns 200 if the server is alive and active

Load Tabs Without Setting Focus

A public API call openDocumentsInTabs() takes in a list of document IDs and a number, which indicates which document in the list should have focus. It will open each document in a new tab and then place focus on the document indicated. For example, if the call is virtualViewer.openDocumentsInTabs(["1234567.pdf", "Arabic.pdf", "1000Page.pdf"], 1); then, “Arabic.pdf” will have focus.

Draw Highlight Annotation API

A public Javascript API call createHighlightAnnotation(x,y,width,height,page,options) that allows users to generate Highlight annotations where they need them. The passed variables are:

  • @param {int} x how far from the left the annotation will start drawing
  • @param {int} y how far from the top the annotation will start drawing
  • @param {int} width The width of the new annotation
  • @param {int} height The height of the new annotation
  • @param {int} page page to draw the new annotation on

Callbacks

Add Note

Callback createAnnotationNote added. This will be called when you finish making your annotation note and you click the button to complete the creation. The variables that are passed are:

  • @param {string} args.type The type of the annotation of the note that was created. For instance, “Line” or “Arrow”.
  • @param {string} args.documentId The ID of the document where the annotation note was created.
  • @param {string} args.annotationLayerId The name of the annotation’s layer the note was attacherd to.
  • @param {string} args.annotationId The current ID of the newly-created annotation that the note was on.

Edit Note

Callback editAnnotationNote added. This will be called when you finish editing a annotation note and you click the button to complete the modification. The variables that are passed are:

  • @param {string} args.type The type of the annotation of the note that was edited. For instance, “Line” or “Arrow”.
  • @param {string} args.documentId The ID of the document where the annotation note was edited.
  • @param {string} args.annotationLayerId The name of the annotation’s layer the note was attacherd to.
  • @param {string} args.annotationId The current ID of the edited annotation that the note was on.

Delete Note

Callback deleteAnnotationNote added. This will be called when you click the delete button on an annotation note. The variables that are passed are:

  • @param {string} args.type The type of annotation of the note that was deleted. For instance, “Line” or “Arrow”.
  • @param {string} args.documentId The ID of the document whose annotation note was deleted.
  • @param {string} args.annotationLayerId The name of the annotation’s layer the note was attacherd to.
  • @param {string} args.annotationId The current ID of the deleted annotation that the note was on.

Add Bookmark

Callback createBookmark added. This will be called after the creation of a new bookmark. The variables that are passed are:

  • @param {string} args.documentId The ID of the document that the bookmark was added to.
  • @param {number} args.page The page number of the bookmark

Edit Bookmark

Callback editBookmark added. This will be called after you are finished modifying a bookmark. The variables that are passed are:

  • @param {string} args.documentId The ID of the document that the bookmark was edited on.
  • @param {number} args.page The page number of the bookmark

Delete Bookmark

Callback deleteBookmark added. This will be called after a user deletes a bookmark from a document. The variables that are passed are:

  • @param {string} args.documentId The ID of the document that the bookmark was deleted on.
  • @param {number} args.page The page number of the bookmark

Bug Fixes

  • Fixed an issue where the media failed to load when selecting its tab after calling openSpecifiedDocuments to open a media file in a tab.
  • Opening an overlay, removing it, then opening it again now functions correctly.
  • Overlay movement is now unlocked correctly when specified when a new overlay is added.
  • virtualViewer.addOverlayByPage should now work correctly.
  • The virtualviewer.printMultipleDocuments() API now works as expected.