Technical FAQs

Question

Can I host multiple PrizmDoc viewers on a single page?

Answer

It is possible to host multiple viewers on a single page. The following example leverages Bootstrap’s tab implementation:

<!DOCTYPE html>

<html lang="en">
<head>
    <!-- Metadata -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
    <meta name="description" content="" />

    <!-- Title -->
    <title>AccuSample</title>

    <!-- Libraries -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.min.css">

    <!-- PrizmCSS -->
    <link rel="stylesheet" href="https://pcc-demos.accusoft.com/static/viewer-latest/css/viewercontrol.css">
    <link rel="stylesheet" href="https://pcc-demos.accusoft.com/static/viewer-latest/css/viewer.css">

    <!-- Inline Stylesheet -->
    <style>
        body {
            overflow-y: hidden;
        }
        #viewer1, #viewer2 {
            height: calc(100vh - 3em);
            width: 100%;
        }
    </style>

</head>
<body>
    <!-- #main -->
    <main class="container">
        <ul class="nav nav-tabs" role="tablist">
            <li class="nav-item">
                <a class="nav-link active" id="viewer1-tab" data-toggle="tab" href="#viewer1">Viewer 1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" id="viewer2-tab" data-toggle="tab" href="#viewer2">Viewer 2</a>
            </li>
        </ul>

        <div class="tab-content">
            <div class="tab-pane fade show active" id="viewer1" role="tabpanel">
                <div id="viewer1">
                </div>
            </div>
            <div class="tab-pane fade" id="viewer2" role="tabpanel">
                <div id="viewer2">
                </div>
            </div>
        </div>
    </main>

    <!-- Libraries -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.1/umd/popper.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

    <!-- PrizmJS -->
    <script src="https://api.accusoft.com/v1/docstore/viewer/assets/classic/bundle.js"></script>
    <script src="https://pcc-demos.accusoft.com/static/viewer-latest/js/jquery.hotkeys.min.js"></script>
    <script src="https://pcc-demos.accusoft.com/static/viewer-latest/js/viewercontrol.js"></script>
    <script src="https://pcc-demos.accusoft.com/static/viewer-latest/js/viewer.js"></script>

    <!-- Inline Script -->
    <script>
        var viewingSessionId1;
        var viewerControl1;
        var viewingSessionId2;
        var viewerControl2;

        $(document).ready(function() {
            $.ajax({
                "type": "post",
                "url": "https://api.accusoft.com/PAS/V1/ViewingSession",
                "headers": {
                    "acs-api-key": ""
                },
                "data": JSON.stringify({
                    "source": {
                        "type": "url",
                        "url": ""
                    }
                })
            }).done(function(response) {
                viewingSessionId1 = response["viewingSessionId"];

                // Initialize viewer
                viewerControl1 = $("#viewer1").pccViewer({ 
                    documentID: viewingSessionId1,
                    imageHandlerUrl: "https://api.accusoft.com/v2/viewers/proxy",
                    language: languageItems,
                    template: htmlTemplates
                }).viewerControl;
            });

            $.ajax({
                "type": "post",
                "url": "https://api.accusoft.com/PAS/V1/ViewingSession",
                "headers": {
                    "acs-api-key": ""
                },
                "data": JSON.stringify({
                    "source": {
                        "type": "url",
                        "url": ""
                    }
                })
            }).done(function(response) {
                viewingSessionId2 = response["viewingSessionId"];

                // Initialize viewer
                viewerControl2 = $("#viewer2").pccViewer({ 
                    documentID: viewingSessionId2,
                    imageHandlerUrl: "https://api.accusoft.com/v2/viewers/proxy",
                    language: languageItems,
                    template: htmlTemplates
                }).viewerControl;
            });
        });
    </script>
</body>
</html>

Personally identifiable information PII

Personally identifiable information (PII) is everywhere. Health data, financial information, legal records, even names and birthdates all fall under the auspices of PII. This information now forms the basis for many digital processes — from identity verification to contract creation and application approval.

The challenge? PII has value — and not just to data owners and authorized companies. Malicious actors are now targeting this information across enterprise content management databases, personal devices, and even supposedly secure government systems

As a result, governments across the globe are stepping up their PII protection to help improve user privacy across disparate digital processes. For enterprises, this creates a paradox. How do they effectively collect critical PII without risking legislative repercussions?


The Legislative Landscape

Laws are changing to account for PII protection. The EU’s General Data Protection Regulation (GDPR) is one of the most well-known, and lays out specific rules for collecting and using citizens’ personal data. For example, companies must report PII breaches within 72 hours; failure to comply could mean fines up to four percent of yearly corporate revenue.

In the United States, meanwhile, new legislation such as the California Consumer Privacy Act (CCPA) gives state residents the right to request, review, and have companies erase any stored personal information. Consumers can also ask enterprises not to sell their PII. According to the act, “any person, business, or service provider that intentionally violates this title may be liable for a civil penalty of up to seven thousand five hundred dollars ($7,500) for each violation.”


The Storage Situation

As a result, there’s an emerging shift in storage security. Organizations are understandably worried that stolen or compromised PII could have negative impacts on both their revenue and reputation.

Effectively securing personal data is a multi-step process. Companies must first identify what constitutes PII in their system, which regulation(s) apply, and where this data is stored. Then, they need to ensure this data is strongly encrypted, can only be accessed for a specific purpose, and is effectively tracked across all enterprise content management systems. 

Protecting high-value data — such as information protected by HIPAA — gets even more complicated. Any company that collects health PII is responsible for its secure storage and use, even if they rely on third-party providers for storage or analysis. To meet the standard of due diligence under HIPAA regulations, organizations must ensure end-to-end transmission security, robust access controls, audit controls, and even physical safeguards that limit data center access.


The Redaction Remedy

With regulations constantly evolving and the volume of PII continuously increasing, even large enterprises are hard-pressed to develop comprehensive storage and protection processes. The simplest solution? Don’t collect or store PII you don’t need, in turn reducing total risk.

This naturally presents a challenge. To deliver on consumer expectations, many companies now offer digital forms and application processing. From bank loans to legal contracts or mortgage applications, the sophistication of digital form creation, completion, and e-signature tools makes uploading personal data the quickest route to approval. Sidestepping legislative challenge means minimizing the upload and storage of PII, but how do companies separate data needed for processing from extraneous information? Manual redaction. Here’s one way that two companies have solved the issue of document security. 


A Secure Partnership

Accusoft has worked with TEAM Informatics to make secure document collaboration possible within their application. TEAM Informatics is developing a new product called M-Connect, which leverages Accusoft’s PrizmDoc Viewer. M-Connect extends and enhances the capabilities of the M-Files Intelligent Information Management platform. 

Using Accusoft’s PrizmDoc Viewer, users can view and convert documents into the correct upload format. Once they select the information for redaction, TEAM Informatics’ redaction engine burns in this data obfuscation behind the scenes, allowing users to upload only the redacted critical information and companies to avoid storing PII they don’t need, such as social security or account numbers.

PII drives digital application processes — but evolving storage requirements introduce enterprise risk. Manual redaction helps bridge the gap between process and privacy by allowing users to upload function-specific data on demand. Learn more about PrizmDoc Viewer, M-Connect, and M-Files that provide this capability.

Tietoevry, a Nordic-based cloud, data, and software company relies on  Accusoft’s PrizmDoc solution to deliver efficient document viewing and redaction.

In this video, learn how:

  • Maintaining individual integrations for each file format was time-consuming and expensive for Tietoevry.
  • PrizmDoc provided a single integration for easy and secured access to all stored documents.
  • Accusoft’s redaction features make it easy to be compliant with data privacy requests while maintaining the format and original content of each document.

 

 

To learn more about how Accusoft’s PrizmDoc can provide the document management features you need to protect confidential information and privacy, visit our PrizmDoc page or talk to one of our integration specialists.

Veritas Technologies, a leader in multi-cloud data management, improved document backup and security while ensuring compliance of customer data using Accusoft’s PrizmDoc solution

In this video, learn how

  • Veritas Technologies was spending a lot of time and effort trying to develop an in-house document handling and compliance solution, diverting resources from their core product development. 
  • Using Accusoft’s PrizmDoc, the company reliably archives customer data from multiple sources. 
  • PrizmDoc helps them securely provide internal and external legal teams with compliant, redacted document access.
  • Veritas Technologies can now focus on improving its core compliance offerings.

 

To learn more about how Accusoft’s PrizmDoc can provide the document management features you need to protect confidential information and privacy, visit our PrizmDoc page or talk to one of our integration specialists.

Question

In PrizmDoc, why do I fail to load/convert Excel documents with the error “Exception from HRESULT: 0x800AC472”?

Answer

The error message Exception from HRESULT: 0x800AC472 is usually associated with a failure involving an Excel document, found in the MsOfficeConverter.log. Below are some known triggers of it:

If the user is logged in as “SYSTEM”, “LocalSystem”, or any other non-user-account variant, this will cause PrizmDoc to fail when using MSO services. This is expected behavior when working with Microsoft Office documents in PrizmDoc. Please see step 6 of the Windows Installation documentation regarding this:

http://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#windows-installation.html

“Specify the login account (account name and password) that PrizmDoc Server will run under. If you are using the Microsoft Office (MSO) Conversion add-on, please make sure that the “login account” is a real user account with Administrator rights. Running PrizmDoc under the LocalSystem user or another Microsoft Windows integrated service account is not supported for this option.”

It’s also crucial that the copy of Microsoft Office on the system has been activated. A not-licensed, not-activated, expired, or trial license will all cause Microsoft Office to not work with PrizmDoc.

More information: https://help.accusoft.com/PrizmDoc/latest/HTML/windows-requirements.html

“The installed copy of Microsoft Office must be activated in order for PrizmDoc’s Microsoft Office Conversion Service to work properly. Not licensed, not activated, an expired or trial version of Microsoft Office will not work with PrizmDoc.”

Your default printer must be the Microsoft XPS Document Writer when working with Excel documents in PrizmDoc. Specifying another printer could possibly lead to this exception.

More information: http://help.accusoft.com/PrizmDoc/latest/HTML/natively-render-mso-documents.html

“The Microsoft Office Conversion Service requires the Microsoft XPS Document Writer printer driver to be installed for the best conversion performance and rendering fidelity of MS Excel documents”

Ensure the Print Spooler service is started and the Microsoft XPS Document Writer is the default printer.

There is a known issue with version 13.3 of PrizmDoc where completely blank Excel files are not loadable in the Viewer. They will fail to load and throw the aforementioned HRESULT exception. This has been fixed in PrizmDoc version 13.6.

In short, please set up the PrizmDoc service correctly to run with a real user account, ensure the copy of Microsoft Office has been activated, and make sure the default printer is set to “Microsoft XPS Document Writer”, then restart the service. This should fix this particular issue in most cases.


For more reading on considerations that Microsoft recommends when running their client-side MSO applications on the server, see this article:

Considerations for server-side Automation of Office

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.