Technical FAQs

Question

How do I get Viewing Packages working in PrizmDoc?

Answer

Viewing Package Full Setup Instructions

We recommend pre-converting documents through a feature called viewing packages and it can be turned on in PAS Configuration.

viewingPackagesdefault: disabled – Enable Pre-Conversion Services and APIs, which allow you to pre-convert documents and cache on-demand document views in PAS, to improve the speed at which documents can be viewed, as well as reduce the processing time in PrizmDoc Server for repeat document views.

Enable Viewing Packages Feature

feature.viewingPackages: enabled

Since viewing packages also use a database you will need to create a database for PAS, configure a database, and run the scripts that are included to create the tables necessary for viewing packages to work.

Configuring Database


Install Microsoft SQL Express

Note 1: If you have Visual Studio installed, you might have to uninstall the recent versions of C++ that are installed before MSSQL Express will successfully install.

Remove Visual Studio C++ Redistributables

Note 2: When installing, use all default install settings except for setting a custom database instance id and set mixed mode authentication so a custom password can be set.

Turn On TCP/IP For Database Instance

Step 1:

step 1 enable tcp/ip

Step 2:

enable tcp/ip

Set Port 1433 for TCP/IP Connection

set port 1433 for tcp/ip connection

Restart SQL Express Instance

Right-click and select "Restart" or double-click and select "Restart".

restart sql express instance

Install Microsoft SQL Management Studio

Install from this downloads page

Connect To Database Instance In Microsoft SQL Management Studio

Connect To Database Instance In Microsoft SQL Management Studio

Create A Database In Microsoft SQL Management Studio

Create A Database In Microsoft SQL Management Studio

PAS Config Database Settings

feature.viewingPackages: "enabled"

database.adapter: "sqlserver"
database.host: "localhost"
database.port: 1433
database.user: "sa"
database.password: "Password1"
database.database: "prizmdb"


# Default timeout for the duration of a viewing session

defaults.viewingSessionTimeout: "20m"

viewingPackagesData.storage: "database"
viewingPackagesProcesses.storage: "database"
viewingSessionsData.storage: "database"
viewingSessionsProcessesMetadata.storage: "database"

viewingPackagesArtifactsMetadata.storage: "database"
viewingPackagesArtifacts.storage: "filesystem"
viewingPackagesArtifacts.path: "%ALLUSERSPROFILE%\\Accusoft\\Prizm\\ViewingPackages"

Create the database tables

Create the database tables

Restart PAS

Restart PAS


Create Viewing Package

viewing-package-creator

Get State of Viewing Package Creator Processing

viewing package creator process

Get Viewing Package Info With Document Id

viewing package info with document id

Create Viewing Session From Viewing Package With Document Id

Create Viewing Session From Viewing Package

View Document In Viewing Package With The Created Viewing Session Id

View Document In Viewing Package With The Created Viewing Session Id

For examples of creating viewing packages, click on the link below to see the various ways of using them:

Viewing Package Creators

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

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

 

Curious about how to use PrizmDoc with Node.JS and React? You’ve found the right video! Watch as a Technical Support Rep takes you through the PrizmDoc Node.JS and React GitHub sample.

For additional information, please visit PrizmDoc!  To learn more about Accusoft, please visit www.Accusoft.com.

 

Curious as to how to use PrizmDoc with Node.JS and HTML? You’ve found the right video! Watch as a Technical Support Rep takes you through the PrizmDoc Node.JS and HTML GitHub sample.

For additional information, please visit PrizmDoc!  To learn more about Accusoft, please visit www.Accusoft.com.

native excel support

Despite the explosive growth of big data and sophisticated analytics platforms, a 2019 study by Deloitte found that 67 percent of business leaders are not quite comfortable using them to inform decision making. For many organizations, spreadsheets remain the preferred tool for managing data and evaluating trends. Developers looking to build the next generation of business applications can accommodate those tendencies by integrating native spreadsheet support for Microsoft Excel workbooks.

Excel Worksheets vs Excel Workbooks

Although sometimes referred to interchangeably or described broadly as spreadsheets, there is a key distinction between an Excel worksheet and an Excel workbook. A worksheet consists of only one spreadsheet while a workbook contains multiple different spreadsheets separated by tabs.

The difference may not be very important when viewing or sharing XLSX files natively in Microsoft Excel, but it can create serious challenges when rendering those files in another application. Without some way of accurately rendering dynamic spreadsheet data, viewers are often forced to resort to a static print preview image. This process makes the file viewable, but also leaves it “flattened” because all interactive elements are removed from the spreadsheet cells.

If the workbook contains worksheets with linked data (that is, cell data from one sheet is affected by cell data from another sheet), it’s critical that a viewing solution preserves the dynamic aspects of the file. The advantage of a spreadsheet is that it can serve as a working document. Without the ability to interact with it, users might as well simply copy and paste the data into a text document.

Managing Excel Workbooks with PrizmDoc Cells

PrizmDoc Cells provides several options for managing Excel workbooks, making it easy to transition back and forth between XLSX format and web browser viewing. Once a proxy route is set up within the application to send API calls to the PrizmDoc Cells server, three different commands can be used to manage Excel workbooks.

Upload Workbook

This API call adds a new XLSX file for viewing and editing. When a document is uploaded to the system, the server assigns a unique workbook ID to it so it can be found and rendered in the application’s viewer in the future. After uploading a workbook, a new session can be created using the workbook ID for viewing and editing purposes. 

Download Workbook

When PrizmDoc Cells displays a spreadsheet, it renders the XLSX file itself, but it doesn’t make any alterations to that file. As each session makes edits to the workbook, those changes are associated with the document ID rather than the original XLSX file, which preserves the integrity of the original spreadsheet. At some point, however, those edits may need to be saved into a new Excel workbook. 

The download API call converts the current session document so it can be downloaded as an XLSX file. File availability can be set during the download process to control who will have access to the new workbook.

Delete Workbook

Old versions of workbooks often need to be deleted for security reasons, usually because they contain confidential data. Since the original XLSX file remains safely within application storage, there often isn’t much sense in retaining workbooks IDs that aren’t being used. The delete API call removes a workbook ID from the server. Once removed in this way, the workbook cannot be viewed, edited, or downloaded by PrizmDoc Cells.

Preserving Workbook Functionality

Since PrizmDoc Cells natively renders information contained in an XLSX file, it retains the dynamic elements that make spreadsheet workbooks so useful to organizations. Not only does it preserve proprietary business logic and formulas, but it also maintains the integrity of this information across multiple worksheets. Cell content can still be searched to quickly locate important text or data throughout the workbook.

For situations where proprietary formulas need to be protected, PrizmDoc Cells allows users to upload XLSX workbooks as values-only files, with all spreadsheet formulas removed. Also, any cells locked in an uploaded XLSX file will remain locked in PrizmDoc Cells to preserve workbook security.

True Spreadsheet Workbook Support for Your Applications

Many organizations continue to depend upon spreadsheet workbooks to manage their business. By providing feature-rich workbook support within their applications, developers can help them retain control over their proprietary spreadsheet formulas without sacrificing the functionality they expect from Excel. 

PrizmDoc Cells makes it easier than ever to share spreadsheet workbooks without having to rely upon Microsoft Excel dependencies. Shared XLSX files can remain safely within a secure application environment to prevent unauthorized downloads or troublesome version confusion. Get a first-hand look at how PrizmDoc Cells can enhance your application in our extensive online demo.

Question

When I view a document on PrizmDoc Cloud and it hits a cached document, is a transaction still consumed?

What defines a transaction on PrizmDoc Cloud?

Answer

A transaction is defined as: a document viewed, a document converted, a document OCR function performed, a form detected, or an image compressed.

PrizmDoc Cloud considers it a transaction anytime any of these actions are performed, regardless of how they are carried out.

The simultaneous development of Pfizer and Moderna’s safe and effective COVID-19 vaccines in less than a year stands as one of the great feats of recent medical science. Now that the vaccines are available, however, the healthcare industry and government authorities must take on the new challenge of distributing doses to the population quickly and effectively. In some respects, this logistical feat will be every bit as daunting as developing the vaccines themselves.

Fortunately, the use of barcoding in healthcare supply chains and patient records will prove incredibly helpful in overcoming some of the key difficulties in vaccine distribution. Medical barcodes are already being used in many essential applications. For organizations that have yet to fully embrace the potential of digital transformation, barcode processing integrations can help them quickly expand their capabilities to meet the growing demands of vaccine delivery.

4 Ways Medical Barcodes Solve Vaccine Delivery Challenges

1. Better Supply Chain Accuracy Means Less Waste

Given the high costs of manufacturing and distributing the vaccines, there is justifiable concern over the potential for waste. Both versions of the vaccine need to be kept at low temperatures for shipping after manufacture (approximately -90 degrees Fahrenheit for Pfizer and about -10 degrees for Moderna). Once they’re moved to a refrigerator for administration, they cannot be refrozen. While the Moderna vaccine can last for up to 30 days refrigerated (provided the vial is not punctured), the Pfizer vaccine must be discarded after a mere six hours. Further complicating matters, each Pfizer thermal shipping container can potentially hold up to 975 multidose vials (4875 individual doses), whereas each box of Moderna vaccine contains 10 vials (100 doses).

Without accurate inventory and shipment tracking, healthcare providers could easily end up with too much supply in one location and not enough elsewhere. In a worst case scenario, unused doses might even go to waste because they can’t be redirected to another site quickly enough. By incorporating medical barcode scanning throughout the supply chain, healthcare organizations can ensure more efficient distribution during the shipping process. They can also verify that delivery sites have the appropriate storage capacity ahead of time to avoid the possibility of doses going to waste due to lack of freezer space.

2. Improved Dosage Records

One of the key challenges with distributing the currently approved vaccines is that they require multiple doses. Although the doses are identical from a chemical composition and dosage standpoint, the problem is that they must be administered after a specified interval. According to the FDA, that interval is approximately 21 days for the Pfizer vaccine and 28 days for the Moderna vaccine. As healthcare providers work to deliver the vaccine effectively, they must keep accurate records to show who has received the first dose and how much supply of each vaccine shipment should be designated for second doses.

The ability to read and print barcodes providers quickly track where patients are in the vaccination process and ensure that second doses will be available at the appropriate time. This is especially important considering that the vaccines are not interchangeable. Once someone has received the first Pfizer dose, for instance, they should not receive the Moderna vaccine for their second dose (except in exceptional circumstances). By generating a specific barcode after the initial dose and including it with a patient’s health records, providers can quickly and easily match people with the correct vaccine and make sure they have available doses on hand.

3. Keeps Essential Medical Equipment On-Hand

Vaccine distribution involves more than just shipping the doses themselves. Many different accessories are required to administer the vaccine, including protective equipment, vials, rubber stoppers, syringes and needles, and alcohol swabs. Healthcare supply chains were already under significant strain throughout the pandemic, so it should not be taken for granted that providers will have everything they need when the vaccine arrives. Furthermore, as the overall pace of vaccinations increases, it will be important to keep an accurate count of available equipment, especially if a provider does a lot of off-site vaccinations.

Barcoding in healthcare is critical to establishing connections between different elements of the supply chain. By using medical barcode integrations, providers can track and coordinate every piece of equipment needed for vaccine delivery in near-real time. Incorporating the same barcodes into patient records also gives a more up-to-date inventory count as doses are administered, ensuring that hospitals and healthcare facilities don’t run out of essential equipment when they need it most.

4. Expands Distribution Beyond Traditional Supply Chain

Distributing the vaccine in major population centers is difficult enough, but extending delivery into underserved rural areas presents a different set of challenges. These areas often lack the supply chain infrastructure to accommodate the rapid and widespread transfer of medical products. Healthcare providers will need technology tools that allow them to set up remote distribution and treatment centers capable of coordinating with local communities in order to extend their reach into these areas.

While barcoding in healthcare may provide the visibility organizations need into vaccine logistics and patient records, certain regions will also require mobile medical barcode integrations that can put more power and control into the hands of field workers. Rugged, reliable barcode integrations capable of reading broken or damaged barcodes using any mobile device will be essential for overcoming the limitations of rural digital infrastructure.

Unlock the Potential of Barcoding in Healthcare with Barcode Xpress

Accusoft’s Barcode Xpress SDK integration helps healthcare applications read, write, and detect more than thirty different barcode types, even if those images are damaged, broken, or incomplete. With the ability to read multiple barcodes at speeds of up to 1,000 pages per minute, Barcode Xpress can help medical providers take control of their supply chains and manage patient records more efficiently. That same functionality can be extended even further thanks to Barcode Xpress Mobile, which can turn any iOS or Android device into a powerful barcode scanner.

Distributing COVID-19 vaccine doses is one of the great logistical undertakings of the 21st century. By expanding the usage of barcoding in healthcare, providers can create greater transparency into their supply chains to reduce waste and deliver the vaccine more efficiently to the patients who need it most. Find out how Accusoft’s Barcode Xpress can help the medical industry upgrade its infrastructure to meet the challenge of restoring a sense of normalcy to people’s lives and overcoming the pandemic. Try a hands-on demo of our barcode SDK today.

Question

How do I use a Network Drive path for Image and ART storage in my ImageGear .NET web application?

Answer

In an ImageGear .NET web application, you have to define the location of the images and annotations directory in the storageRootPath and artStorageRootPath configuration property.
In the current version of ImageGear .NET, the storageRootPath and artStorageRootPath do not work with a network drive path \\SERVER-NAME\sharefilename.

The workaround for this would be to create a Symbolic link from a local directory to the network drive directory.

  • To create a symbolic link: Open “Command Prompt” as Administrator and type in > mklink /d "local path" \\SERVER-NAME\sharefilename
  • Pass in the path of the symbolic link as image or art storage root path in your web.config: storageRootPath="local path" artStorageRootPath="local path"
Question

What are the best quality images to use when processing form data and recognition?

Answer

In order to add a new FormTableColumnHeaderDefinition to a FormTableDefinition object, first create a list of type FormTableColumnHeaderDefinition. Next, each FormTableColumnHeaderDefinition object is created and defined and added to this list using the Add method. Finally, this list is assigned to the FormTableDefinition’s ColumnHeaderDefinitions property.

 

// Create a table definition
FormTableDefinition tableDefinition = new FormTableDefinition();
tableDefinition.Name = "Line Item Table";

// Setup the columns of the table
List<FormTableColumHeaderDefinition> columnHeaderDefinitions = new List<FormTableColumnHeaderDefinition>();

FormTableColumnHeaderDefinition descriptionColumn = new FormTableColumnHeaderDefinition();
descriptionColumn.DataType = FormFieldDataType.GeneralText;
descriptionColumn.Name = "Description";
columnHeaderDefinitions.Add(descriptionColumn);

FormTableColumnHeaderDefinition amountColumn = new FormTableColumnHeaderDefinition();
amountColumn.DataType = FormFieldDataType.Currency;
amountColumn.Name = "Amount";
columnHeaderDefinitions.Add(amountColumn);

tableDefinition.ColumnHeaderDefinitions = columnHeaderDefinitions;

// Add the table definition to the form definition
formDefinition.TableDefinitions.Add(tableDefinition.Name, tableDefinition);