Technical FAQs for "PrizmDoc Viewer"

Question

I am integrating PrizmDoc using just the API to convert documents, and I am noticing an initial delay of about 10 seconds before the conversion starts.

Why is this happening?

Answer

One of the likely reasons this could happen is if your PrizmDoc Server is not licensed properly or if you are running in the Evaluation mode. In such cases, there are restrictions in place.

Among those restrictions is an artificial delay of 10 seconds imposed before viewing or conversion operations begin. A dialog window normally indicates this in the Viewer interface, but if you are just making API calls to the server, it will not be apparent.

A valid product license is required to eliminate these restrictions, which can be done as follows: https://help.accusoft.com/PrizmDoc/latest/HTML/prizmdoc-server-docker.html#2-configure-your-license.

Question

We have been noticing in our PrizmDoc environment that the viewer seems to take longer and longer to view documents over time. After a few days, we restart the Prizm services, and the Viewer processes faster. What might be the reason for this issue?

Answer

This issue is typically caused by a change in the core count of the server after PrizmDoc has been installed. Specifically, the non-interactive heap size will not automatically update if the core count is changed after PrizmDoc has been installed. We update this value during install.

If you have made changes to the core count of the server after installation, please see the following page for correlation between the non-interactive heap size and the CPU cores count:
https://help.accusoft.com/PrizmDoc/latest/HTML/registry-changes.html?highlight=heap%2C.

The reason the non-interactive heap size matters here is because it affects performance of the Office and HTML conversion services, and the symptom of insufficient non-interactive heap size is soffice.bin crashing.

Question

We just installed the PrizmDoc client and noticed that when we run Prizm Application Services, the service states that it is started, but it is not listening on 3000, and there are no logs written to the Prizm\logs\pas folder. What might the issue be?

Answer

A possible reason for this issue can be due to the Windows system environment variable called PATHEXT. By default, .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC are configured.

What this variable does is allow commands to be executed without needing to add the extension to them.

For example, PM2, which runs with PAS, has a file extension of .CMD, so when executing PM2 in a command line you just need to type PM2 instead of the full name PM2.CMD.

If .CMD is not in the PATHEXT environment variable, then just typing PM2 would return a command not found error, and you would need to use the full PM2.CMD for it to work.

To fix the issue, ensure the following:

  1. Open Control Panel > All Control Panel Items > System
  2. Select Advanced System Settings
  3. Select Environment Variables
  4. Under System Variables double-click PATHEXT
  5. Add to the end of the current string
  6. Restart Prizm Application Services
Question

Does viewing HTML in PrizmDoc Viewer allow JavaScript execution or local file access? Can PrizmDoc Viewer block externally-referenced content from being rendered?

Answer

When viewing HTML in PrizmDoc, JavaScript and local file access are disabled.

Additionally, you may configure the security.htmlRendering.blockExternalContent setting found in PrizmDoc’s Central Configuration file. When rendering any source document which uses HTML content, this setting controls whether or not externally-referenced content, such as images and iframes, will be blocked. This option affects any source document file type which uses HTML, including HTML, EML, and MSG.

Question

Why am I receiving a 500 error when making a Viewing Session PUT request?

Answer

This issue can occur if you forget to prefix the {viewingSessionId} portion of the URL with u, or if you simply request an invalid {viewingSessionId} in the call.

For example, the PUT call should look like the following:

PUT /ViewingSession/u{viewingSessionId}/SourceFile

For more information on syntax and other API calls related to Viewing sessions, please see:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#pas-viewing-sessions.html

Question

What’s the difference between a Viewing Session and a Viewing Package?

Answer

Viewing sessions require source information for the document that you want to view. There are 3 types of sources to choose from: File, URL, and viewing package.

A viewing package is a file you want to view that is stored in its already “converted state”, which we call “pre-conversion”. This is different than a file or URL because these sources are converted and set in a temporary cache folder for use until the cache is cleared out.

Viewing package information can be set to never expire which is useful if you have documents that will be viewed over and over again by many clients. This allows the server not to have to convert the file every time and increases performance.

Question

For reporting purposes, we want to rename the markup layer JSON files to help identify which tenant made the markup. For example:

c1fea5868607402c1b664272e5b82aeb7fff7390_0_0hg91gTqSCeg_P9B2Ko7BaH-YxkaazjH.json

rename to:

accusoft_c1fea5868607402c1b664272e5b82aeb7fff7390_0_0hg91gTqSCeg_P9B2Ko7BaH-YxkaazjH.json.

Is this possible?

Answer

The actual filename for an annotation .json file contains an encrypted value of the file path and document name. This is what is used to associate the JSON markup layer file with the document.

If you make changes to the first part of the file, PrizmDoc will no longer be able to associate those markups to the actual file.

As a alternative, you can set up a separate PAS instance for each tenant, which will provide a different markup layer for each tenant.

Or you can programmatically handle the markups and store them specifically for each tenant. The following articles outline our Markup JSON specifications:

Question

Why do the fonts in my document look different when rendered in PrizmDoc?

Answer

There are times when a document was created on a machine where a user installed a non-standard font (e.g., Maestro-Regular). When the document is viewed on another system, without that font installed, the text will look different.

PrizmDoc uses the fonts installed on the server where it is running when converting the document. If the document has a non-standard font, and the font is not installed on the server where PrizmDoc is running, then it will render the document with a default font.

To fix the issue, you need to install the font onto the PrizmDoc server that converted the document. The procedure below outlines how to install the font on a Windows server. You will need to ensure that you are logged in as the same UserId that the Prizm Service is using.

  1. Identify the name of the font that needs to be installed and download the font file associated with that font. The font file name will typically be in the format of fontname.ttf.
  2. Copy the .ttf file to the server running PrizmDoc.
  3. On the server, right-click the .ttf file and select Install from the menu.
  4. Stop all of the Prizm services.
  5. Clear all folders under \Prizm\Cache – this will clear the previously rendered files that had the wrong font rendered.
  6. Reboot the server and attempt to open the document again.
Question

We are using PrizmDoc and may be adding more end users, so we wanted to verify whether there is a limit to the number of viewing sessions that can be active at one time.

Answer

PrizmDoc does not specifically limit the number of viewing sessions that can be active at any given time. However, when opening a viewing session with a document, a conversion does take place. The number of conversions that can be handled simultaneously is based on the hardware constraints of your server.

Various factors, such as the size of documents, the number of conversions, and the hardware being utilized may impact the performance of your PrizmDoc server.

We provide server sizing and performance documentation that is designed to provide guidance and approximate server size based on the number of conversions you plan to do per minute.

Please refer to our documentation page:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#prizmdoc-server-sizing-servers.html

Question

How can I change the PrizmDoc Viewer so that the TextSelection tool is selected by default instead of the Pan tool?

Answer

In order to select the TextSelection tool by default in PrizmDoc Viewer there are a few things you need to take into account. First, you have to click the button inside the embedViewer() function found in the index page of the sample. Second, the button for the text selection tool is actually disabled initially, so in order to be able to click it, the button has to be enabled first by removing the pcc-disabled class.

Use the following code to do this:

function embedViewer(options) {
    var viewer = $('#viewer1').pccViewer(options);
    viewer.viewerControl.on(PCCViewer.EventType.ViewerReady, function(viewer) {
        $("[data-pcc-mouse-tool=\"AccusoftSelectText\"]").removeClass('pcc-disabled');
        $("[data-pcc-mouse-tool=\"AccusoftSelectText\"]").click();            
    });
}
Question

When doing a text search in a document in PrizmDoc, the highlight color for the search results is a light blue background. Is there a way to change the highlight color for search results in the PrizmDoc Viewer?

Answer

You can change the highlight color specifically in the PrizmDoc Viewer file viewer.js file located in the viewer-assets\js folder of your project/application.

You will need to locate 2 instances of the search term “highlightColor: undefined” in the code block below located close to line 4400. The actual line number will vary depending on the version of viewer.js you are using. You can replace “undefined” with a hexadecimal color value which you can look up from the following site: https://htmlcolorcodes.com/

// This is a request for a new searchQuery triggered by the search input field.
// Generate new search terms, and save them globally.
prevMatchingOptions = _.clone(matchingOptions);

if (matchingOptions.exactPhrase) {
    // We need to match the exact string, as is
    if (queryString.length) {
        searchTerms.push({
            searchTerm: queryString,
            highlightColor: undefined,
            searchTermIsRegex: false,
            contextPadding: 25,
            matchingOptions: matchingOptions
        });
    }
} else {
    // Split up multiple words in the string into separate search term objects
    var queryArr = queryString.split(' ');
    queryArr = _.unique(queryArr);
    _.forEach(queryArr, function(query){
        if (query.length) {
            searchTerms.push({
                searchTerm: query,
                highlightColor: undefined,
                searchTermIsRegex: false,
                contextPadding: 25,
                matchingOptions: matchingOptions
            });
        }
    });
}         
Question

Users want the ability to have all the documents that they view initially open with the same Zoom Percentage. How can I accomplish this?

Answer

Setting the zoom percentage is possible in PrizmDoc. You can listen in on the ScaleChanged event, which is triggered whenever your user changes the zoom level of the Viewer. For more information, refer to the EventType section of the PCCViewer help topic.

Then you could take that value, store it however you want, and use it to set the initial zoom factor of the page upon loading the Viewer using setScaleFactor. For more information and a code sample, refer to the Setting the Initial Zoom Factor help topic.