Technical FAQs

Question

My service is crashing in IIS, and I see an error saying w3wp.exe has crashed in my Event Viewer. Why is my service crashing?

Answer

Normally, when there is an error in the Event Viewer saying that w3wp.exe has crashed, this means that your application pool has crashed. So, by extension, anything running on IIS will stop working. There are many reasons why this could happen, so to find out the root cause, there are a few things that you can do:

  1. Look at the dump file generated by the Event Viewer
    that is tied to this specific error.
  2. Run this file through WinDbg to get a stack trace of the
    error.

These two things should give you the information you need to determine the root cause of the problem. Below is an online article explaining in more detail how to get these two things and possible causes of the crash.

http://blog.whitesites.com/Debugging-Faulting-Application-w3wp-exe-Crashes__634424707278896484_blog.htm

Question

Can I run PrizmDoc Viewer in a Windows Docker container?

Answer

No, you cannot run PrizmDoc Viewer in a Windows Docker container. This is because Windows Docker containers do not provide the full environment that a Virtual Machine or regular Windows system install provides.

However, this is not the same thing as using a Windows system as a Docker Host, which actually can run PrizmDoc Viewer in a Linux Docker container.

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

When running setup.sh and entering the information for a node-locked license, such as configuration file, solution name, and solution key, the following error occurs:

The licensing configuration file you provided is invalid. Please retry
your request or break the licensing process:

What would cause this issue?

Answer

This issue may be caused by a trailing space on the configuration file copied to the Linux server.

To remove the space, run the following command, making sure to replace
configurationfilename with the name of your configuration file.

truncate -s -1 **configurationfilename**

For example:

truncate -s -1 /usr/share/prizm/licenseconfiguration.txt
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

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

Answer

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:

https://github.com/Accusoft/prizmdoc-viewer

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

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?

Answer

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.

Question

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

Answer

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:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#pas-markup-burners.html

Question

I am trying to deploy my ImageGear Pro ActiveX project and am receiving an error stating

The module igPDF18a.ocx failed to load

when registering the igPDF18a.ocx component. Why is this occurring, and how can I register the component correctly?

Answer

To Register your igPDF18a.ocx component you will need to run the following command:

regsvr32 igPDF18a.ocx

If you receive an error stating that the component failed to load, then that likely means that regsvr32 is not finding the necessary dependencies for the PDF component.

The first thing you will want to check is that you have the Microsoft Visual C++ 10.0 CRT (x86) installed on the machine. You can download this from Microsoft’s site here:

https://www.microsoft.com/en-us/download/details.aspx?id=5555

The next thing you will want to check for is the DL100*.dll files. These files should be included in the deployment package generated by the deployment packaging wizard if you included the PDF component when generating the dependencies. These files must be in the same folder as the igPDF18a.ocx component in order to register it.

With those dependencies, you should be able to register the PDF component with regsvr32 without issue.

Question

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?

Answer

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\pcc.win.yml (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.