Technical FAQs

Question

How can I determine what version of PrizmDoc Viewer my server is running?

Answer

To check the server version, make a GET request to:

http://localhost:18681/PCCIS/V1/Service/Current/Info

You can make a get request by navigating to the URL in your browser. The JSON response will have a "pccisVersion" property, which is the version number you are looking for. A similar GET to the following URL will determine the PAS version:

http://localhost:3000/info

The JSON response’s "version" property is what you are looking for. Keep in mind that differing version numbers don’t necessarily indicate a mismatch, as long as the major and minor version numbers sync-up. For example, the PCCIS version 13.5.33.5696 and PAS version 13.5.0000.1816 are from the same release (13.5).

Question

When using the PrizmDoc samples, the sample documents included are taking close to 1 minute to load in the viewer. The same also happens when uploading files into the sample.

The server processes are showing minimal impact on CPU and memory. However, the hard drive was spiking to 100% utilization sporadically.

Answer

We have found that Windows Defender with enabled Real-Time scanning can significantly impact performance. Once Real-Time scanning was disabled, we found this issue to be immediately resolved.

To disable Windows Defender, you can do the following:

  1. Right-click on the Windows Logo in the lower left-hand corner and select Control Panel.
  2. Select Windows Defender and then select Settings.
  3. Under the Real-Time protection section, slide the switch to Off.
Question

My document has Asian characters (CJK, etc.), which are not displaying correctly in PrizmDoc Viewer; what steps can I take to view them?

Answer

In some cases, the reason is due to the fonts not being installed on the operating system. We have outlined some commands to install fonts for select operating systems below:

In CentOS 6 do:

yum groupinstall "Chinese Support"
yum groupinstall "Japanese Support"
yum groupinstall "Korean Support"
yum groupinstall "Kannada Support"
yum groupinstall "Hindi Support"

In CentOS 7 do:

yum groupinstall "fonts"

In Ubuntu do:

sudo apt-get install language-pack-ja
sudo apt-get install japan*
sudo apt-get install language-pack-zh*
sudo apt-get install chinese*
sudo apt-get install language-pack-ko
sudo apt-get install korean*
sudo apt-get install fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-mincho fonts-ipafont-gothic fonts-unfonts-core
Question

In the PrizmDoc Viewer, what are the two different ways to load annotation layers?

Answer

PrizmDoc has two options for loading annotations, the “My Annotations” pane and the “Annotations for Review” pane.

The “My Annotations” pane is used to load a single annotation layer for editing. You can add, delete, or make changes to annotations and then save those changes using the “My Annotations” pane.

The “Annotations for Review” pane is used for viewing annotations. You can load as many annotation layers for viewing as you would like. You cannot interact with annotations loaded in this way, but you are able to make comments on them. You can toggle between any of these layers to hide them. You can also merge these annotations to the currently loaded annotation layer from “My Annotations”.

For more information see our documentation here: https://help.accusoft.com/PrizmDoc/latest/HTML/Annotation_Layers.html

Question

We are planning to upgrade our PrizmDoc Server and PrizmDoc Client to the latest major version. What is the best practice for doing so?

Answer

For best results, you will want to follow the instructions below to ensure the cleanest upgrade of the newest version:

NOTE: Before starting, make a backup of the following configuration files for use as reference when re-configuring your new version installation. This should be done before the PrizmDoc installer is run, as all configuration files will be replaced with new ones (resetting them to their default configuration).

  • Prizm Server Configuration: prizm\prizm-services-config.yml

  • Prizm Client Configuration (Windows): prizm\pas\pcc.win.yml

  • Prizm Client Configuration (Linux): /usr/share/prizm/pas/pcc.nix.yml

  • ServiceHost Configuration: prizm\PCCIS\ServiceHost\pcc.config

How To:

  1. Uninstall the previous version of PrizmDoc Server and PrizmDoc Client. Be sure to delete all PrizmDoc folders that are still present. For Windows you can Find PrizmDoc Server and Prizm Client under Add/Remove Programs. For Linux, please follow instructions below for uninstall instructions.

Linux Prizm/PAS Service Uninstall:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#linux-uninstall-prizmdoc-serve.html

https://help.accusoft.com/PrizmDoc/v13.10/HTML/webframe.html#pas-linux-uninstallation.html

  1. Download the latest version of PrizmDoc for your operating system from https://www.accusoft.com/products/prizmdoc-suite/prizmdoc-viewer-builds/

  2. Install PrizmDoc Server first and then the PrizmDoc Client.

  3. At the end of the server installation, the install may request a reboot.

  4. Make a backup of your new configuration files as listed above.

  5. Modify each of the new configuration files and make the same changes as you did in the older configuration files.

NOTE: Do not just replace the new configuration files with the old version configuration files, as new configurations may have been introduced in the new version and they would be lost.

  1. Restart the Prizm Services and Prizm Application Services to ensure the newly configured file changes take affect.

NOTE: If either service fails to start with an error after modifying the configuration files, replace the configuration files with the original copy of the configuration files and try making the changes again.

NOTE: If you are using viewing packages and have an existing database, we provide additional scripts in the \prizm\pas\db folder to modify your existing database. For example, upgrading from PrizmDoc 12.x to PrizmDoc 13.x we provide an additional script addTenantId to add a new field to one of the existing tables.

You must be running PrizmDoc Viewer version 13.10 or above in order to use this integration.

Question

With PrizmDoc, how can I hide a predefined search if there are no results?

Answer

The predefined search option does not support that functionality, but you can instead perform a server-side search, and then activate the search panel if there are results to show:

var viewer;
var viewingSessionId = <%= viewingSessionId %>;

var fixedSearchTerm = "the";
var pasUrl = "/pas";

var viewerReady = false;
var searchReady = false;
var searchDisplayed = false;

function displaySearchIfNeeded() {
    // The search is only displayed once the viewer is ready, and once our preliminary server-side search comes back positive.
    if (viewerReady && searchReady && !searchDisplayed) {
        searchDisplayed = true;

        $("[data-pcc-search=\"input\"]").val(fixedSearchTerm);
        $("[data-pcc-search=\"submit\"]").click();
    }
}

function sendSearchPost() {
    $.ajax({
        "method": "POST",
        "url": pasUrl + "/v2/viewingSessions/" + viewingSessionId + "/searchTasks",
        "data": JSON.stringify({
            "input": {
                "searchTerms": [
                    {
                        "type": "simple",
                        "pattern": fixedSearchTerm,
                        "caseSensitive": false,
                        "termId": "0"
                    }
                ]
            }
        }),
        "contentType": "application/json",
        "success": function(response) {
            $.ajax({
                "url": pasUrl + "/v2/searchTasks/" + response["processId"] + "/results?limit=1",
                "success": function(response) {
                    if (response.results.length !== 0) {
                        searchReady = true;

                        displaySearchIfNeeded();
                    }
                },
            });
        },
        "error": function(jqXHR, textStatus, errorThrown) {
            if (jqXHR.status === 480) {
                setTimeout(sendSearchPost, 2000);
            }
        }
    });
};

setTimeout(sendSearchPost, 500);

$(document).ready(function() {
    // Since we are no longer restricted to a predefined search, we can load the viewer ASAP.
    viewer = $("#viewer").pccViewer({
        "documentID": viewingSessionId,
        "imageHandlerUrl": "/pas",
        "language": viewerCustomizations.languages["en-US"],
        "template": viewerCustomizations.template,
        "icons": viewerCustomizations.icons
    });

    viewer.viewerControl.on("ViewerReady", function(event) {
        viewerReady = true;

        displaySearchIfNeeded();
    });
});
Question

How can I improve the performance and memory usage of scanning/recognition in Barcode Xpress?

Answer

Barcode Xpress supports a number of optimization settings that can improve your recognition performance, sometimes up to 40%, along with memory usage. The best way to optimize Barcode Xpress is to fine-tune the properties of the Reader class to be specific to your application’s requirements.

BarcodeTypes

  • The best way to increase performance is to limit which barcodes Barcode Xpress should search for. By default, BarcodeTypes is set to UnknownBarcode which targets all 1D barcodes.

MaximumBarcodes

  • This property will instruct Barcode Xpress to halt searching after finding a specified number of barcodes. The default value is 100.

Area & Orientation

  • If you know the location or orientation of your barcodes in your image, specifying an orientation (such as Horizontal) and area can prevent Barcode Xpress from searching for vertical or diagonal barcodes, or in places where barcodes would not exist.

ScanDistance

  • Raising this value increases performance by applying looser recognition techniques by skipping rows of an image. However, this may fail to detect barcodes.

Finally, BarcodeXpress Professional edition does not impose a 40 page-per-minute limit on processing.

Question

How can I improve the performance and memory usage of scanning/recognition in Barcode Xpress?

Answer

Barcode Xpress supports a number of optimization settings that can improve your recognition performance, sometimes up to 40%, along with memory usage. The best way to optimize Barcode Xpress is to fine-tune the properties of the Reader class to be specific to your application’s requirements.

BarcodeTypes

  • The best way to increase performance is to limit which barcodes Barcode Xpress should search for. By default, BarcodeTypes is set to UnknownBarcode which targets all 1D barcodes.

MaximumBarcodes

  • This property will instruct Barcode Xpress to halt searching after finding a specified number of barcodes. The default value is 100.

Area & Orientation

  • If you know the location or orientation of your barcodes in your image, specifying an orientation (such as Horizontal) and area can prevent Barcode Xpress from searching for vertical or diagonal barcodes, or in places where barcodes would not exist.

ScanDistance

  • Raising this value increases performance by applying looser recognition techniques by skipping rows of an image. However, this may fail to detect barcodes.

Finally, BarcodeXpress Professional edition does not impose a 40 page-per-minute limit on processing.

barcode xpress pricing

 

When you’re looking to integrate a toolkit into your application, your first priority is assessing the capabilities. Once you’ve found the right fit, you need to make sure that the pricing matches your budget and makes sense for your needs.

Historically, Accusoft has offered a variety of different licensing options for our clients. Products were always licensed by core or number of installs, depending on which runtime fits best. 

These practices have been great for our clients so far, but we realized a missing piece that could help bridge the gap for new clients with smaller projects that dynamically scale based on workload.


Introducing a New Way to License

Barcode Xpress is the first product on the Accusoft line to offer metered licensing based on transaction. Metered licensing helps a variety of different clients scale up or down, when they need to. While our traditional licensing plan is great for projects with defined scope, smaller projects that have potential to grow need more flexible pricing options.

“The main reason we wanted to introduce metered licensing is to address SDKs used in scalable environments,” says Mark Hansen, Product Manager of SDKs. “Clients can use metered licensing to spin up their projects based on the traffic they’re getting, without the need to obtain additional licenses. While many companies opt for an ongoing usage, this new model allows for estimating a specific amount of use, so they only pay for what they need.”


The Benefit of Metered Licensing

Why would a company choose to specify the usage from the start? Metered licensing is great for short-term projects with a limited lifespan, as clients only pay for what they use. It’s also great for clients who don’t know the scale of their project and need to be cautious with how much they spend. 

Metered licensing is based on a pay-per-transaction model. A transaction is defined by the page. For example, if Barcode Xpress reads 30 pages with five barcodes on each page, the transaction total is 30 instead of 150.

This transaction-based model makes for a very low cost of entry, and a no-stress agreement. With this value in mind, clients don’t have to worry about how much they will use the integration after a specific project is complete. In addition, if the project grows, metered licensing allows the client to scale up.


Reliability of Metered Licensing

Accusoft understands that our customers are building mission-critical apps with our SDKs and has carefully architected the system to be extremely reliable. Our server-side authorization and reporting system runs in Amazon AWS and is split into online and offline parts. 

The online portion is built on AWS CloudFront and S3, two of the most reliable systems available on the Internet. All of Accusoft’s backend code is in the offline portion of the system and an outage in that portion of the system will have no effect whatsoever on our customers, even if it were down for several days. Nevertheless, we have 24/7 alerting in place so we will be notified soon after an outage occurs and will quickly get it back up.

barcode xpress pricing

Metered licensing is now available for Barcode Xpress 13.1 and following versions.