Technical FAQs for "PrizmDoc"


In PrizmDoc Viewer, when viewing Excel documents that have pictures on certain spreadsheets within that document, the pictures are not displayed.

This appears to happen only if PrizmDoc has the Microsoft Office Conversion (MSO) feature enabled. This issue does not occur if PrizmDoc is using LibreOffice.

Why is this happening?


The issue is related to an Excel “Page Setup” option called “Black and white”. The option is located in Excel under File, Print, Page Setup and is only respected when PrizmDoc has the MSO feature enabled.

When using LibreOffice, this setting does not exist and is ignored, which is why you can see the pictures.

By default, this option is disabled in Excel, so that specific option would have to be manually set by the creator of the document.

As a workaround, ensure that the “Page Setup” option for “Black and white” is not checked on any spreadsheets in an Excel document that has pictures.


Is it possible to make a call to an external API when annotation saving is complete?


In the Viewer, you can bind functions to the MarkupSaved event mentioned on the following documentation page in order to execute code when annotations are saved to the server:

A full list of events exposed by the Viewer can be found here:


How can I make significant changes to the UI of a PrizmDoc sample?


While jQuery can be used to make some small changes to the samples UI, it does not always make sense to make your changes programmatically on the front-end.

In this case, you will want to make your UI changes to the HTML templates used to compile the template that is passed in during viewer initialization.

To make changes and recompile the templates, you can utilize the following GitHub repository:


Does PrizmDoc have a limit to the size of file that can be viewed and edited?


PrizmDoc does not have a limit to the sizes of files that can be displayed and edited. However, do keep in mind that the web server on which PrizmDoc is being hosted may have a limit to the maximum size of files that can be uploaded to it.

The webserver max upload file size would therefore serve as PrizmDoc’s max supported file size when it is hosted on that server.


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


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.


How does the PrizmDoc print function work exactly?


Every page of the specified print range is being loaded and sent to the printer. This occurs in an iframe separate from what is shown in the Viewer so the user does not actually see this happening.

The actual method being used is one of the following, depending on the browser:

  • _iframe.contentWindow.document.execCommand('print', false, null);
  • _iframe.contentWindow.print();

When converting & merging documents, if you come across timeouts as you try to convert or merge a file, what might be some possible causes?


Here are some possible causes that could hinder Content Conversion Services (CCS):

  • One of the documents may be password protected.
  • The content may be very complex. So, you may want to increase some of PrizmDoc’s timeout parameters in the ServiceHosts’ pcc.config (Windows: C:\Prizm\PCCIS\ServiceHost\pcc.config – Linux: /usr/share/prizm/pccis/ServiceHost/pcc.config):

    • PageInteractiveTimeout
    • DocumentInteractiveTimeout
    • DocumentAcquisitionTimeout
    • InternalOperationTimeout
  • One of the documents may be corrupt.


In the past I have had some issues installing PrizmDoc Server and Client and I was curious if PrizmDoc create logs during the install? If so, where would they be located?


Yes, PrizmDoc does keep install logs to help troubleshoot failed installations. These logs can by found in the following folder:


All of the install logs names will start with PrizmDoc_Server or PrizmDoc_Client.

If you do not see any logs in that directory, it could mean your Windows Temp directory maybe mapped to another location. You can find that location by doing the following:

  1. Right-click on the Windows Icon in the lower left hand corner of the desktop.

  2. Select Run.

  3. In the Open: box, type %temp% and click OK.


Why does my markupBurner call with XML data get an InvalidJson error?


The MarkupBurner accepts two types of payloads, XML and JSON.

When making a call to the markup burner with either type, you have to specify what kind of payload you are sending by specifying a Content-Type header.

For more information on MarkupBurners, see here:


Why is touch input for PrizmDoc not working in Chrome version 70+?


PrizmDoc uses the Chrome Touch API to process touch input. This API was deprecated after Chrome version 70 and must be manually re-enabled in order for touch input to work in PrizmDoc.

Paste the following link into Chrome and enable the Touch API:


This issue will also occur in the Chromium version of Microsoft Edge.

Paste the following link into Edge and enable the Touch API:



We want to use one PAS instance for multiple customers while ensuring their calls and data are separated so that other customers cannot access them. Is there a way PrizmDoc can accomplish this?


How To:

Use the following steps to set up the multi-tenancy feature:

  1. Add a new line inside of /usr/share/prizm/pas/pcc.nix.yml (Linux) or C:\Prizm\pas\ (Windows) in the following format:

undocumentedFeature.multiTenancy: “enabled”

  1. After enabling this feature, all requests to PAS must include the header accusoft-tenant-id. The following shows an example request for creating a new viewing session:
POST /ViewingSession HTTP/1.1
Host: localhost:3000
Content-Type: application/json
accusoft-tenant-id: myUniqueTenantId
cache-control: no-cache
Postman-Token: 5edd698a-5e4f-46d2-b93a-42cc57371dce
  "source": {
  "type": "document",
  "fileName": "1040ez.pdf"

NOTE: All Tenant Ids are converted to lowercase and must be unique between tenants. This means that in terms of the application both “MyTenant” and “mytenant” are equivalent and would be able to see the same files. Tenant Ids are not generated for the application and must be generated and handled by the integration components. Tenant Ids are also strictly alphanumeric at this time.

File storage including Documents, markupXml, formDefinitions and markupLayerRecords will now be appended with the
{tenantId} as shown in the above example with a Documents configuration of /usr/share/prizm/Samples/Documents. The request would attempt to create a viewing session from the following file: /usr/share/prizm/Samples/Documents/myuniquetenantid/1040ez.pdf

Viewing Package data stored in the database will have the tenantId included in the composite index as well as include an accusoftTenantId column.


What are the different ways to iterate through and select redactions in PrizmDoc Viewer?


Method 1:
Use the mouse to manually select the redactions you want to work with.

Method 2:
With the advancedSearch feature enabled, perform a search of your document. The search will return a list of marks on the document that you can use to select redactions without having to manually locate where they are in the document.