Technical FAQs for "PrizmDoc Viewer"

Question

When using Content Conversion Services, what are the supported input formats that it takes for conversion?

Answer

When using Content Conversion Services, you can input any image and document source type that PrizmDoc supports.

Here’s a link to the Content Conversion Services API for more information.

Question

What features does PAS provide that I don’t get from exclusively using the backend?

Answer

The following features are provided through PAS:

  • Viewing Packages
  • Annotation storage/retrieval
  • Form Definition storage/retrieval
  • Simplified API to communicate with the backend
  • Affinity token management (clustered mode)

It is also important to note that all new feature development will involve PAS.

Features not offered through PAS include:

  • Content Conversion output to anything other than PDF.
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 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

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.

Question

When trying to create a viewing session directory to the PrizmDoc back end over port 18681:

(POST http://prizmserver:18681/PCCIS/V1/ViewingSession)

why am I receiving a 500 internal server error?

Answer

There are some troubleshooting steps below you can take to verify the health of the server as well as ensure the API call you are making is properly formatted.

  1. Verify the Prizm service is healthy by opening a browser on the Prizm server and using the following service health check URL (http://localhost:18681/admin)
  2. Verify your POST command has all the required elements which can be verified in detail on the following documentation page:

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

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

I would like to remove the mark selection handles from the marks (annotations and redactions) in the viewer so that my users can’t resize marks, but so they can still move the marks around. How can I do this?

Answer

The easiest way to achieve the functionality you’re looking for would be to simply change the CSS for the mark handles to set their display to none !important. The CSS for the mark handles can be found in viewercontrol.css. See the following code for an example:

/* mark selection handles */
.pccMarkHandleTopLeft,
.pccMarkHandleTopCenter,
.pccMarkHandleTopRight,
.pccMarkHandleMidLeft,
.pccMarkHandleMidRight,
.pccMarkHandleBottomLeft,
.pccMarkHandleBottomCenter,
.pccMarkHandleBottomRight,
.pccMarkHandlePoint,
.pccMarkHandleTextSelectionStart,
.pccMarkHandleTextSelectionEnd {
    position: absolute;
    width: 40px;
    height: 40px;
    display: none !important;
    background-image: url(data:image/png;base64,iVBORw...);
}

@media screen and (-webkit-min-device-pixel-ratio: 2), 
       screen and (min-resolution: 2dppx),
       screen and (min-resolution: 192dpi) {
    .pccMarkHandleTopLeft, 
    .pccMarkHandleTopCenter, 
    .pccMarkHandleTopRight, 
    .pccMarkHandleMidLeft, 
    .pccMarkHandleMidRight, 
    .pccMarkHandleBottomLeft, 
    .pccMarkHandleBottomCenter, 
    .pccMarkHandleBottomRight, 
    .pccMarkHandlePoint, 
    .pccMarkHandleTextSelectionStart, 
    .pccMarkHandleTextSelectionEnd {
        -webkit-background-size: 40px 40px;
                background-size: 40px;
        display: none !important;
        background-image: url(data:image/png;base64,iVBORw...);
    }
}

You will want to set the !important flag so that the functions inside viewercontrol don’t set the display back to block.

One thing you may want to do is separate out pccMarkHandleTextSelectionStart and pccMarkHandleTextSelectionEnd to not include display: none. This way, the text selection annotations are able to be edited, since they are reliant on the handles for "movement" because they select a portion of the text signified by the handles. 

Question

PAS appears to be unable to retrieve my document. What could be the issue?

Answer

If PAS is trying to retrieve documents from a source with a bad SSL certificate or a self-signed certificate and it is not configured to allow bad SSL certificates, it will fail to retrieve the document and log a generic 580 error.

For more information about Viewing Session creation parameters, including acceptBadSslCertificate see here:

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

Question

What are the technical details/process of “Flattening” a PDF document?

Answer

It is possible to “Flatten” PDF documents in PrizmDoc Viewer. You can do this by converting the document to a raster format (TIFF is recommended for PDF conversion) using PrizmDoc’s Content Conversion Service, and then converting it back to PDF format. This will result in a PDF with a single layer and no hidden objects. However, this will usually lower the quality and increase the file size of PDFs that are largely text.

Here is an example workflow using the Workfile API and the Content Conversion Service API:

1. Create a WorkFile from PDF

POST {{pccisUrl}}/PCCIS/V1/WorkFile
Content-Type: application/octet-stream

{{file bytes}}

2. Initiate Conversion to TIFF

POST {{pccisUrl}}/v2/contentConverters
Content-Type: application/json

{
    "input": {
        "sources": [
            {
                "fileId": "{{fileId}}"
            }
        ],
        "dest": {
            "format": "tiff"
        }
    }
}

3. Poll until response[“state”] === “complete”

GET {{pccisUrl}}/v2/contentConverters/{{processId}}

4. Initiate Conversion from TIFF back to PDF

POST {{pccisUrl}}/v2/contentConverters
Content-Type: application/json

{
    "input": {
        "sources": [
            {
                "fileId": "{{fileId_from_Step3_output}}"
            }
        ],
        "dest": {
            "format": "pdf"
        }
    }
}

5. Poll again

GET {{pccisUrl}}/v2/contentConverters/{{processId}}

6. Download

GET {{pccisUrl}}/PCCIS/V1/WorkFile/{{fileId}}?ContentDispositionFileName={{desiredFileNameWithExtension}}
Question

We are trying to create new viewing packages, however, in the [prizmdoc_process] table we see the process is 100% complete. However, the error code field indicates an Internal Error.

The document does not display in the viewing session and gives a 480 error. The following error code is:

{errorCode: “ViewingPackageNotUsable”}

What might be the issue?

Answer

When creating viewing packages, the PrizmDoc Application Services (PAS) uses the PrizmDoc Server to do the conversion work. In order for the viewing package to be created successfully, the PrizmDoc Server needs to be licensed and healthy.

If you see an error “ViewingPackageNotUsable” this can be related to the PrizmDoc Server either not being healthy or specifically not being licensed.

To verify the PrizmDoc Server status and if it is licensed, you can run the following command on the PrizmDoc Server in a web browser:

http://localhost:18681/admin