Technical FAQs

Question

Is it possible to make a call to an external API when annotation saving is complete?

Answer

In the Viewer, you can bind functions to the MarkupSaved event mentioned on the following documentation page in order to execute code when annotations are saved to the server:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#Subscribing_to_Events.html

A full list of events exposed by the Viewer can be found here:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#PCCViewer.html#.EventType

Question

Can PrizmDoc handle password-protected files, such as PDFs or Excel files?
How would a user specify a password for a particular document?

Answer

It is possible to specify the password for a password-protected document when creating a viewing session in PrizmDoc. When sending a request to create a viewing session, you’ll use the password field in the request body to specify the password. For example…

POST http://localhost:3000/ViewingSession
Content-Type: application/json
{
    "source": {
        "type": "url",
        "url": "https://www.usability.gov/sites/default/files/creating-wireframes.pdf"
    },
    "password": "hunter2"
}

(Replace "hunter2" with the actual password)

Please note that even if a file needs a password and is not provided one (or is provided one that’s incorrect), the viewing session should still be created successfully. The easiest method to determine whether the password is needed/correct is to make a call to get the page. You can do this by making a GET request to the GetPage route using the viewingSessionId created earlier, like so…

GET pas_base_url/Page/q/0?DocumentID=u{viewingSessionId}

…be sure to replace pas_base_url with the root of your Prizm Application Services (PAS) instance (usually this is http://localhost:3000) and replace {viewingSessionId} with the actual value for viewingSessionId created in the previous step.

The above call will return 200 OK if the page load is successful. If a password is required/incorrect, you should see a return status code 480. There will be additional response headers called accusoft-status-number and accusoft-status-message, which should be 4001 and "Document requires a password", respectively.

You can see the above in greater detail in the product documentation here.

You can use this information to re-create a viewing session with the correct password.

Currently, there is a feature request planned for a potential future release of PrizmDoc to prompt the user for a password if one is required.

Question

Which databases types are supported by PrizmDoc for storing annotation/redaction layers as well as viewing package information?

Answer

PrizmDoc provides the option to store viewing package process and creation information, as well as annotation layer JSON information, into a database.

Currently, Microsoft SQL Sever and MySQL is supported for this type of storage. For more information on setting up a database for use with PrizmDoc, please refer to the following documentation:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#run-database-scripts.html.

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#developer-guide.html.

Question

What is the absolute bare minimum I need to use PrizmDoc Cloud?

Answer

This will allow you to load a document via a URL using PrizmDoc Cloud. Just include your PrizmDoc Cloud API key in the POST request headers.

Please note: This is purely intended as a proof-of-concept. You should never include your API key in your client-side Javascript.

<!DOCTYPE html>

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

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

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

    <!-- PrizmDoc CSS -->
    <link rel="stylesheet" href="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/css/viewercontrol.css">
    <link rel="stylesheet" href="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/css/viewer.css">

    <!-- Inline Stylesheet -->
    <style></style>

</head>
<body>

    <!-- #viewer -->
    <div id="viewer" class="pccv pcc-full-screen"></div>

    <!-- Libraries -->
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/jquery-3.4.1.min.js"></script>
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/jquery.hotkeys.min.js"></script>
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/underscore.min.js"></script>

    <!-- PrizmDoc JS -->
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/viewercontrol.js"></script>
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/viewer.js"></script>
    <script src="https://raw.githack.com/Accusoft/hello-prizmdoc-viewer-with-nodejs-and-html/master/public/viewer-assets/js/viewerCustomizations.js"></script>

    <!-- Inline Script -->
    <script>

        let viewingSessionId;
        let viewerControl;

        $(document).ready(function() {
            $.ajax({
                "type": "POST",
                "url": "https://api.accusoft.com/prizmdoc/ViewingSession",
                "headers": {
                    "acs-api-key": "4lTamQVZmrkqZhH8cZhdu7L0xyhUa3gorcaCFQpA_zmuowZs4zoF39V4IckpnVW_"
                },
                "data": JSON.stringify({
                    "source": {
                        "type": "url",
                        "url": "https://www.usability.gov/sites/default/files/creating-wireframes.pdf"
                    }
                })
            }).done(function(response) {
                PCCViewer.Ajax.setHeaders({
                    "acs-api-key": "4lTamQVZmrkqZhH8cZhdu7L0xyhUa3gorcaCFQpA_zmuowZs4zoF39V4IckpnVW_"
                });

                viewingSessionId = response["viewingSessionId"];

                // Initialize viewer
                viewerControl = $("#viewer").pccViewer({ 
                    "documentID": viewingSessionId,
                    "imageHandlerUrl": "https://api.accusoft.com/prizmdoc",
                    "language": viewerCustomizations.languages["en-US"],
                    "template": viewerCustomizations.template,
                    "icons": viewerCustomizations.icons,
                    "annotationsMode": "LayeredAnnotations"
                }).viewerControl;

                viewerControl.on("ViewerReady", function() {
                    console.log("Ready!");
                });
            });
        });

    </script>

</body>
</html>
Question

In PrizmDoc, why can’t I delete a full page redaction? The menu pops up for a rectangle redaction, so why not for a full page?

Answer

First, some terminology for PrizmDoc Viewer menus:

Traditionally, when you right click on a page, application, etc. the menu that pops up is called the “context menu”. However, in PrizmDoc, we refer to that menu as the Immediate Actions Menu, and there is a larger box that appears off to the side that we call the Context Menu

This functionality is viewable in the demo linked below. When you create a full page redaction and right-click on it, you get the Immediate Actions Menu. When you create a rectangle redaction and left- or right-click on it, off to the side you’ll see the Context Menu, and can delete it using either that menu or the “delete” key.

https://www.accusoft.com/demos/redaction-demo/

When you make a full page redaction, the only way to delete it is by using the delete button in the Immediate Actions Menu. You cannot click on it and press “delete”, and you cannot delete it via our Context Menu. This is currently a design feature being discussed below at the time of writing:

https://ideas.accusoft.com/ideas/PDEN-I-512

By default, the parameter immediateActionMenuMode is set to off, which disables the menu. If you are having trouble getting this menu to open in your application, you may need to set it to be on when you have a redaction on the page. You can read more about enabling and disabling this feature here.

Question

What does it mean when I see “Email Address is not Registered” when entering in an email in the Evaluation Dialog?

Answer

You will see this error if you have not registered on the Accusoft website.

To register your email address, please visit the following link below:

https://my.accusoft.com/Account/FirstTimeUser?Length=7

Few industries have been impacted by the proliferation of digital technology than the financial services sector. In fact, it’s one of the few markets where the average consumer can easily observe how much has changed in a short amount of time. Many people haven’t even set foot inside a bank for years, and millions pay all of their bills exclusively online. According to the US Federal Reserve, personal checks declined from 58.8 percent of non-cash payments in 2000 to just 8.3 percent in 2018. Both of these trends are driven by the increased convenience of FinTech applications, and the same changes have impacted the lending industry, as well.

What Is FinTech Lending?

Since the 2008 financial crisis, a new breed of lenders has become a disruptive force in the banking sector. Unburdened by the cumbersome infrastructure that makes large financial institutions slow to adapt to change, FinTech lenders utilize the latest technology to deliver a more responsive, personalized, and transparent lending experience to consumers. These innovative startups have combined easy-to-access digital platforms with sophisticated data analytics to streamline the lending process and deliver funds to borrowers much faster than could be accomplished with traditional loans.

Borrowers, it seems, have been quick to embrace this alternative source of lending. From 2013 to 2018, FinTech companies increased their share of the personal loan market from a mere five percent to thirty-eight percent. That rapid growth is a result of increased penetration into the digital marketplace and more flexible credit scoring that allows FinTech lenders to assess risk and approve loans more effectively. 

In the early days of the industry, most FinTech lenders still relied upon traditional FICO credit scores when evaluating a borrower’s potential to repay loans. Over time, however, they have used a variety of alternative scoring mechanisms driven by data collection algorithms to create a more dynamic picture of a borrower’s credit status. Between 2007 and 2015, for instance, the correlation between FICO scores and the rating system used by one prominent peer-to-peer FinTech lender declined from 80 percent to just 35 percent.

The “Tech” Behind FinTech Lending

The loan adjustment algorithms working under the hood of FinTech lending applications are incredibly sophisticated, but they need good data for fast, accurate underwriting. While traditional lenders focus on predictable data points like income, debt payments, and assets, the digital nature of FinTech applications allows them to go much more granular. By gathering insights from other customer applications, internet searches, and even geolocation data, they can create a more complex profile of each customer, which then allows them to structure loans and other financial products that meet their specific needs while also protecting the lender to unnecessary risk.

This new approach to lending has helped FinTech applications to cut down the “time to yes” on credit decisions from the three to five weeks commonly seen from traditional banks to as little as five minutes. Even more critically, they can use digital funding to deliver cash to borrowers in less than 24 hours compared to the typical lender’s three month response time.

Improving “Time to Yes” on Credit Decisions

In addition to deploying more sophisticated risk adjustment algorithms to assess credit worthiness, there are some additional ways that FinTech lenders can continue to improve performance and efficiency.

Embrace Paperless Automation

The first and most obvious step they can take is by eliminating paper forms from the application process whenever possible. One of the reasons why banks and other financial services organizations move so slowly is due to the time it takes to fill out, fax, scan, and review physical documents. Not only are these forms inefficient, but they’re also prone to clerical errors when an applicant’s data needs to be transferred from the form into a database or application. By digitizing the application process wherever possible and automating data capture, FinTech lenders can significantly cut down on processing times and eliminate the human errors that so often create additional delays.

Increase Document Management Versatility

Shifting to an emphasis on digital documentation brings another complication along with it because there are a variety of file formats used throughout the financial industry. Some documents need to be in a specific format for compliance purposes, and if customers are submitting files through a FinTech lending platform, they could be using multiple different file types. 

In order to streamline processing, FinTech applications need to be able to easily convert a wide range of file types into a few key formats that work best with their processing workflows. That means FinTech developers will need to integrate powerful document conversion tools into their software to ensure that they can avoid any troublesome incompatibility issues during loan processing.

Enhance Data Capture Capabilities

Although FinTech lenders are developing incredible algorithms capable of analyzing massive amounts of data to shorten credit application times, they are still dependent upon the information made available to them. That means developers need to implement data capture tools that can pull key data from a variety of sources and compile it into an easily searchable format. 

Optical character recognition (OCR) engines can quickly extract information for any number of documents and images to create searchable files that FinTech software can quickly process as needed. For hand-printed documents scanned into digital format, intelligent character recognition (ICR) tools can be deployed just as effectively, allowing FinTech lenders to gather data from a wide variety of sources.

Expand FinTech Lending Capabilities with APIs and SDKs

One of the easiest ways for FinTech developers to quickly build lending-friendly features into their applications is to leverage API and SDK integrations. Rather than building new functionality from scratch, they can instead take advantage of existing, proven solutions to enhance their applications. This allows them to keep the focus on the core differentiators of their FinTech lending platform, allowing them to process and approve loans faster while minimizing potential risk.

Accusoft’s collection of API and SDK integrations provide powerful viewing and processing capabilities when it comes to FinTech workflows. Whether you need to convert multiple file types quickly, clean up document images, or perform OCR data capture, Accusoft has the solution to unlocking your FinTech lending application’s potential.

PDF viewers

Few file formats are as widely recognized and used as PDF. In fact, PDFs have become so commonplace that it’s hard to imagine a time when they didn’t exist. Most users don’t even give them much thought, knowing that all they need to do is click on the file and trust that their PDF file viewer will be able to open and render it accurately. But things weren’t always quite so simple before PDF viewers.

Origins of PDF

It’s easy to take document viewing and printing for granted today, but to understand the development of the PDF format, it’s important to look back at the document challenges facing organizations in the early 1990s. Businesses, government agencies, and universities were already using local area networks to share digital documents, but there was no guarantee that a document would display the same way on every machine. In addition to multiple competing word processor formats (such as Microsoft Word and Corel WordPerfect), there was no reliable way of viewing files containing images or other layout elements across different software and operating systems.

Around that time, Adobe co-founder John Warnock became focused on the idea of creating a standardized document format that would work across all operating systems and effectively function like digital paper. The primary goal was to ensure that the document contents would look the same no matter where they were viewed. That meant solving complex challenges like replacing unsupported fonts without distorting the document’s layout and distilling graphic parameters to flatten the file so it would load within seconds instead of minutes.

Adobe released the first version of the Portable Document Format (PDF) in 1993, but it would take some time for the format to catch on. “The world didn’t get it,” Warnock recalled in a 2010 interview. “They didn’t understand how important sending documents around electronically was going to be.”

The early years were rocky, largely because PDF was just slightly ahead of its time. Early PDFs had limited functionality and were slightly too large to be sent quickly over the early internet connections. That began to change in 1996, however, when the Internal Revenue Service (IRS) used PDFs to provide downloadable tax return forms and instructions online. The IRS also started using PDF files to digitize their internal document processes, largely phasing out their reliance upon paper documents for auditing. This adoption convinced many hesitant organizations that if the format was good enough for the IRS, then it was good enough for them as well.

The Growth of PDF File Viewers

In the years following the introduction of PDF as an open format, a unique “freemium” model emerged that helped to promote its use across a variety of industries. While developers sold software that could be used to create, convert, edit, and secure PDFs, they also offered more streamlined PDF file viewers for free. This ensured that anyone could easily open and view PDF files no matter what kind of computer or operating system they were using. 

Although early readers were offered as separate software applications, they quickly became available as libraries that could be integrated into an existing application. By integrating a PDF file viewer directly into an application, developers could provide secure PDF support without having to rely upon any external software.

Today, there are multiple PDF file viewers available, which often makes it difficult to identify the one that provides the right combination of rendering performance and security for a particular industry’s needs.

The Rendering Challenge

Rendering a PDF file accurately is a deceptively complex task because not every file is constructed in the same way. In fact, prior to the PDF standard being taken over by the International Standards Organization (ISO) in 2007, Adobe’s documentation surrounding the format was rather infamously vague, resulting in the creation of poorly optimized PDFs that third party readers had difficulty viewing properly. Some PDF file viewers address this challenge by adding new code to accommodate known issues, but this has the unpleasant side effect of giving the reader a larger footprint and potentially impacting performance.

This challenge has become even more complex in recent years given the popularity of mobile devices. Effective PDF file viewers must be able to deliver a responsive viewing experience that can adjust their user interface (UI) to different sizes and types of screens.

The Security Challenge

Security has always been an important consideration for PDF file viewers, but it has become a much more prominent concern since the first virus capable of embedding itself in PDF files was uncovered in 2001. Unfortunately, security vulnerabilities continue to be a problem with third party PDF readers, as evidenced by the multiple vulnerabilities discovered in Adobe’s PDF products in 2020. While developers have more PDF file viewers to choose from than ever before, finding a solution that doesn’t introduce security risks has become a high priority when building a new application.

One of the best solutions for resolving security challenges is to build PDF capabilities directly into their already secure applications. Viewing or creating a PDF file in an external program, such as third party software or even within a web browser, introduces a potential functionality and control gap. It’s difficult to control what can be done with a PDF once it travels outside the confines of a secure application environment, allowing it to be downloaded, viewed, and potentially altered. With PDFs set to continue as the de facto standard for digital documents, it makes more sense than ever for developers to give their applications the ability to manage those files natively, without having to interface with external software dependencies.

Find the PDF File Viewer That’s Best for You

Developers have many choices when it comes to integrating PDF viewing capabilities, which is why Accusoft has developed a broad range of PDF integrations to address every potential use case. Our Accusoft PDF Viewer delivers a high-speed, lightweight JavaScript library that offers out-of-the-box mobile support and requires only a few lines of code to install. Available as a free-to-use integration, it’s the fastest way to add dynamic PDF viewing capabilities to your application without any configuration headaches. 

If your application needs more than just support for PDF viewing, PrizmDoc Viewer provides production-scale annotation, redaction, and conversion for multiple file types. As an HTML5 viewer, PrizmDoc Viewer easily integrates into applications to create a secure environment for documents and images. Try it today using an online demo or download a free trial to see how PrizmDoc Viewer can transform the way your application handles and views documents.