Technical FAQs for "PrizmDoc Viewer"

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

When selecting download and including annotations, the resulting PDF does not include the comments. How can we obtain the file as a PDF with the annotation comments included?

Answer

By design, when using the download button, the comments to the annotations are not included in the download.

Workaround

  1. Under the View tab, select Print.
  2. From the Print dialog, select the More options drop-down.
  3. Under the Comments section, select either After Each Page or At End of Document.
  4. When selecting a printer, use the Print to PDF option and it will create a PDF with the comments included.
Question

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

Answer

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.

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.

Question

I am seeing a ‘TimeoutWaitingForPage’ error in my PccErr log. How can I extend the timeout window so larger files will not cause PrizmDoc to time out?

Answer

You can increase the timeout values for document loading by going to “C:\Prizm\PCCIS\ServiceHost\pcc.config” and increasing the values for the last four timeouts.

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

We are currently using the latest version of PrizmDoc and noticed it is using JDK 8. Do we need to license the Java version that comes with PrizmDoc with Oracle? Also are you switching to Open JDK in the future?

Answer

We are in the process of planning the update to Open JDK.

Regarding the current version we are using, the main restriction from Oracle regarding JRE is that we cannot use new versions of Java SE8 without commercial license starting from January 2019. Our build process for Java service still uses Oracle JDK8  from versions older than January 2019.

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

We are using the Webforms Samples and want to know how to enable the “Always User Raster” feature. Which file needs to be modified and how should it be modified?

Answer

In order to enable the “Always Use Raster” option for our Webforms sample, you will need to do the following:

  • Modify the Default.aspx file
  • Update the Central Configuration file

How To:

  1. In the Sample, before modifying, make a backup of the following file for safekeeping:

\Prizm\Samples\dotnet\webforms\full-viewer-sample\Default.aspx

  1. In the original file, modify the code that is located close to line 115:

\Prizm\Samples\dotnet\webforms\full-viewer-sample\Default.aspx

Line to Replace:

} else {
        sessionData.source = getDocumentSource(query.document || '');
        }

Replace with:

} else {
        sessionData.source = getDocumentSource(query.document || '');
        sessionData.render = {
          html5: {
             alwaysUseRaster: true
          }
       };
}
  1. Next, to update the Central Configuration file you will need to stop the Prizm Services.

  2. Make a backup of the prizm\prizm-services-config.yml file.

  3. Edit the .yml file and remove the leading # for the following line and add true to the array so that it looks like the following:

viewing.sessionConstraints.render.alwaysUseRaster.allowedValues:
[true, false]

  1. Restart the Prizm Services.
Question

I have EML and MSG files that contain attachments. I want to combine the original EML/MSG document with each of its attachments into a single PDF. How can I do this?

Answer

To do this you are going to need to create a viewing session for the EML or MSG file. Once you’ve created the viewing session you can get the viewingSessionIds of the attachments. Once you have the viewingSessionIds you can get the workFile ID associated with each viewing session. With the workfile IDs you can use the Content Conversion Service (CCS) to combine the email with its attachments into a single PDF.

Use the following API requests to do this:

Create a new viewing session with:

POST {server_base_url}/PCCIS/V1/ViewingSession 

This will give you a viewingSessionId which will be used in future requests.

The body for this request will be JSON:

    {
        "render": {
            "html5": {
                "alwaysUseRaster": false
            }
        }
    }

Upload the document with:

PUT {server_base_url}/PCCIS/V1/ViewingSession/u{viewingSessionId}/SourceFile?FileExtension={extension} 

The request body must be bytes of the source document. Make sure to include the FileExtension or PrizmDoc won’t be able to detect the file as an EML or MSG file.

Poll for and get the viewingSessionIds of the attachments with:

GET {server_base_url}/PCCIS/V1/ViewingSession/u{viewingSessionId}/Attachments

This will return the viewingSessionIds for each of the attachments.

Get the workfile ID for each of the viewing sessions with:

GET {server_base_url}/PCCIS/V1/ViewingSession/u{viewingSessionId}/FileId 

You’ll need to get a fileId for each attachment’s viewingSession and the email’s viewingSession.

With those workfile IDs, you can use the Content Conversion Service (CCS) to combine each of the workfiles with:

POST {server_base_url}v2/contentConverters

The body for this request will be JSON and need to include the workfileId for each of the attachments and the email itself. The body would look like this:

    {
        "input": {
            "sources": [
                { 
                    "fileId": "{EmailWorkFileId}"
                },
                { 
                    "fileId": "{Attachment1WorkFileId}"
                },
                { 
                    "fileId": "{Attachment2WorkFileId}"
                }
                
            ],
            "dest": {
                "format": "pdf"
            }
        }
    }

This will return a processId that you can poll using:

GET /v2/contentConverters/{processId}

Once the process is complete, the request will return a results array that will contain the fileId of the final document.

You can get the final document that contains all the attachments and original EML/MSG file combined into a single PDF with:

GET /PCCIS/V1/WorkFile/{fileId}
Question

Can European/CJK character sets be auto-redacted in PrizmDoc?

Answer

In general, if PrizmDoc is able to extract text from the document, it is able to do a redaction. There are no known issues with auto/manual redaction except OCR’d “text over image” documents. For these documents, image text may have a different location or height/width in comparison to the text recognition result included in that document as well. A redaction will be applied to the text, but the underlying text on the image can still be visible.

Question

How can I tell which server has the cache for a specific document in a clustered PrizmDoc environment?

Answer

When a document is viewed, it creates a Viewing Session ID. That Viewing Session ID has information regarding which server in the cluster is doing the work, however, it is encoded and cannot be read directly.

In order to determine which PrizmDoc cluster server is doing the work for a specific document in a specific viewing session, you can do a text search for the Viewing Session ID in the plb.sep_multi.log on all servers. Only one server in the cluster will be a match for that Viewing Session ID.