Technical FAQs

Question

Why is the viewer not rendering my PDF?

Answer

Please check the developer console of your web browser to troubleshoot issues with documents not rendering, our product will report all errors and debugging information there.

Question

What browsers are supported by Accusoft PDF Viewer?

Answer
  • Windows: All chromium based browsers such as Microsoft Edge and Google Chrome.
  • Mac: Safari
  • iOS: Native Safari Browser
  • Android: Native Chrome Browser

In part one of our series on how APIs are empowering a new generation of LegalTech solutions, we looked at some of the technology obstacles facing today’s legal organizations. We also covered the basic principles of how API integration works and how it can bridge the gap between legacy systems and new applications. In part two, we’ll be taking a closer look at some specific API integration use cases and explain why they’re an essential part of a successful firm’s LegalTech toolkit.

4 Benefits of APIs for Legal Teams

Before going into more detail about how LegalTech API integration works, it’s worth highlighting the broad benefits APIs can deliver to a law firm. 

1. Streamlined Workflows

The average legal department relies on more than one software solution to meet their business needs. While larger firms that provide a broad range of legal services typically require more specialized platforms, even smaller legal teams deploy different software applications to address different business needs.

Thanks to API functionality, these diverse LegalTech solutions can be integrated into a single, platform-agnostic portal that eliminates the workflow disruption caused by constantly switching back and forth between programs. 

2. Remote Functionality

API integrations also make it possible for lawyers to access an assortment of LegalTech tools from any location, even if they can’t physically be at their offices. This capability is more important than ever as the legal profession continues to grapple with the impact of the COVID 19 pandemic. 

Many lawyers are still working from home and communicating with their clients and colleagues remotely. In some states, virtual court proceedings might remain in use even after the pandemic. If law practices aren’t able to function effectively in a remote context, they will struggle to deliver quality legal services to their clients.

3. Competitive Advantage

Managing multiple technology resources and facilitating remote collaboration isn’t just about making work easier for legal teams. Streamlining workflows results in greater efficiency, which means lawyers can spend more time doing high-value work for their clients rather than sorting out technical issues or tracking down hard-to-find documents and files. 

It also translates into reduced costs, since key administrative functions can be automated and carried out both faster and more accurately. Law firms that invest in technology integration can deliver better services to their clients at lower costs than their competition while still retaining the flexibility to adapt to future disruptions.

4. Enhanced Security

By its very nature, the legal industry ends up handling a great deal of sensitive information. Financial records, contracts, protected health data, and private correspondence are frequently relevant to legal proceedings of all kinds. There’s also the matter of attorney-client privilege, which greatly restricts what information can be shared outside the firm. 

Without a way to securely manage files and documents, law firms leave themselves exposed to significant liability. Thanks to API integrations, attorneys can use their existing LegalTech solutions to access, share, and edit essential files safely and securely. 

PrizmDoc Viewer: LegalTech API Integration in Practice

For a better understanding of how API integration can enhance the performance of LegalTech applications, it’s instructive to look at some specific examples. Accusoft’s PrizmDoc Viewer uses a powerful collection of REST APIs to provide HTML5 document viewing functionality through a single interface. It not only allows LegalTech developers to quickly and easily integrate document viewing capabilities into their applications, but it also delivers several additional features that are particularly relevant to the legal industry’s eDiscovery process

Document Conversion

The digitization of the discovery process has made it easier for legal organizations to share documents and back up important data. Unfortunately, it’s also created a huge glut of electronically stored information (ESI) in a variety of formats. In addition to the large number of commonly used file formats (such as DOCX, PDF, and JPEG), firms must also deal with a variety of proprietary file formats and case-specific formats (like DICOM for healthcare clients). PrizmDoc Viewer uses an array of APIs to convert more than 100 file formats for easy presentation within a browser-based HTML5 viewer. It can also convert image-based documents into searchable PDFs or editable text files with a built-in OCR engine. Thanks to this integration, attorneys can quickly share and view documents internally or with clients and the court without having to download and install specialized applications.

Annotation

The ability to annotate and markup documents is essential for any collaborative legal process. Although many platforms make it easy to insert comments and edits into documents, these programs often don’t support more than a handful of file types and alter the original file when making annotations. PrizmDoc Viewer’s annotation functionality supports over 100 file types and allows multiple users to make layered edits that can be easily shown or hidden. More importantly, all markups exist on top of the original document, preserving the integrity of the original file to comply with state and federal preservation of data requirements. When the time comes to present documents, annotations can be burned into the file if necessary. 

Redaction

Sharing documents is always a sensitive process in the legal profession. Information may be protected by attorney-client privilege, disclosure agreements, contractual obligations, or government regulations. LegalTech applications need to be able to redact sensitive data when sharing documents with outside parties. PrizmDoc Viewer’s REST API allows users to manually redact individual sections, use search features to redact specific terms, or even programmatically redact data for pre-determined reasons (such as account numbers or Social Security numbers). Redacted content is not only hidden from view, but no longer shows up in search results and cannot be copied or highlighted.

Security

As mentioned previously, security should be a key consideration for any LegalTech solution. Firms need to strictly control who has access to data and confidential documents, whether that consists of sensitive client information or internal litigation strategies. PrizmDoc Viewer provides a few key features to help LegalTech applications maintain high levels of security.

  • DRM: Digital rights management (DRM) controls can manage who has access to documents and what functions they can use (such as printing, downloading, or viewing). This makes it easy to restrict how files are shared and track any document leaks back to their source to hold the responsible parties accountable.
  • Watermarking: PrizmDoc Viewer can hard code identifying information into documents to prove ownership and prevent the unauthorized reproduction of documentation.
  • Encryption: With so many people working remotely from potentially unsecured Internet connections, file encryption is absolutely essential for any LegalTech application. PrizmDoc Viewer uses 256-bit AES content encryption to ensure that documents remain secure throughout the collaboration process.

Transform Your LegalTech Strategy with API Integration

As we covered in part one, many legal organizations cling to outdated processes and technology due to familiarity and deeply-ingrained status quo bias. But familiar doesn’t always mean functional. Over reliance on manual processes exposes firms to increased human error and a range of potential data security risks, to say nothing of undercutting productivity. Advanced APIs offer a new tactical toolkit, a way to select best-fit code that solves specific issues and helps legal firms improve operational outcomes. Learn more about how Accusoft’s PrizmDoc Viewer can unlock the full potential of your LegalTech applications today.

 

FinTech adoption continues to accelerate. According to Wealth Professional, almost 40 percent of finance firms now prioritize the adoption of FinTech frameworks, even as new-to-market startups disrupt the status quo. 

However, spending alone isn’t enough to deliver streamlined and scalable FinTech processes. As noted by David Linthicum, Chief Cloud Strategy Officer at Deloitte in a recent protocol piece, firms now face the challenge of creating “high-quality, repeatable data processes with the profusion of systems involved in generating data” while simultaneously integrating unstructured and semi-structured data sources into existing processes.

At the front lines of this fundamental framework change is digital documents and business process workflows. Let’s dive in, and look at some of the biggest frustrations facing the finance industry, the solutions they need to streamline digital processes, and how Accusoft’s ImageGear can help redefine digital document delivery.


FinTech Framework Challenges

By leveraging data-driven techniques and digital-first processes, Forbes notes that it’s possible for even startup firms to differentiate their service delivery and compete with huge financial brands — but only when digital document processes align with on-demand performance expectations. 

Consider common use cases such as loan origination, credit applications, or mortgage approvals. Many FinTech firms now target client pre-approval within 24 hours rather than the days or weeks required by traditional finance corporations. The problem? As digital document processes naturally scale, so does complexity, creating a practical paradox around three key challenges:

  • Speed As noted above, many FinTech firms are looking to disrupt incumbent efforts by reducing approval times and increasing customer satisfaction. As the number and type of digital documents required for timely approval expands, disparate processes conspire to stifle speed. Consider a loan origination requiring identity verification, income confirmation, and current debt load documents for pre-approval, all of which are in different file formats, forcing firms to use multiple software solutions and slowing their progress.
  • SecurityCybersecurity and compliance are critical for FinTech firms to succeed, but both requirements come with rapid scaling complexity. For example, a recent FDIC document lists more than 200 types of Compliance Information and Document Request (CIDR) forms which must be customized for each financial use case. The result? Increased document processing volumes drives increased complexity and opens potential security gaps.
  • ConsistencyDigital data consistency is critical to ensure accurate approvals and assess potential risks, but contrasting document processes create the ideal environment for human error. Despite best efforts on the part of employees, the more manual processes introduced into FinTech functions, the greater the chance of misplaced assets or data conversion mistakes.

Streamlined Structure Solutions

To bridge the gap between FinTech potential and fast-track document processes, companies need solutions that deliver four broad benefits:

  • Document ConversionFinTech firms now face a diverse range of documents that often frustrate efforts to unify key data. Here, integrated conversion functionality is critical to ensure employees have the tools they need to quickly convert key documents without having to open multiple applications and manually move or manipulate data.
  • On-Demand AnnotationSpeaking of data, it’s also essential for staff to collaborate on key documents, especially as many FinTech firms embrace the remote work revolution. Advanced annotation tools that allow asynchronous collaboration are essential to ensure employees always have access to the most current document version and administrators can easily determine who edited documents, when, and why.
  • Digital CompressionAs digital documents become the de facto financial standard, storage space is at a premium. This is especially problematic for larger document types such as PDFs, which are often preferred by FinTech firms for the ability to easily control access, editing rights, and collaboration. Uncompressed, these PDFs can quickly overwhelm even enterprise storage systems, forcing companies to either spend more on cloud services or invest in bigger datacenters. Reducing PDF size both saves space and helps companies streamline document sharing.
  • PDF ManipulationWhile read-only access makes PDFs ideal for FinTech firms that need to share specific information without introducing security risk, adjusting and editing these documents in-house often requires multiple applications and increased employee effort. Even more worrisome? Staff encountering functional limits may opt for free, online applications that could compromise document confidentiality.

Practical Process Performance

ImageGear is designed to help FinTech firms both overcome current frustrations and help future-proof financial frameworks by combining disparate document functions into a single-source application and improve overall performance. Standout features include:

  • Complete PDF ControlImageGear provides a single-platform solution for PDF manipulation and control. Developers can easily integrate an SDK that enables application users to create, edit, view, and print PDFs from within the confines of existing applications, create searchable PDF documents, or flatten acroforms to remove file interactivity, all while automatically conforming to the PDF language standard.
  • Secure Signature VerificationSecure digital signatures now form a critical component of on-demand FinTech forms processing. If companies can’t accept and verify client signatures, they’re not able to deliver speedy approvals and meet evolving consumer expectations. ImageGear allows companies to ensure that electronic documents are authentic. It uses encryption to verify that the information  has not been altered and is coming from a trusted source.
  • Agile AnnotationsMaking changes to PDF files is easy with ImageGear. Staff can quickly add text, lines, hot spots, encryption, rich text, images, or even audio as needed to ensure documents are complete, accurate, and ready for approval.
  • Comprehensive Conversion OptionsTo deliver on the promise of FinTech performance, firms must be able to quickly and easily convert and combine multiple file types into a single PDF and convert PDFs as necessary into other file formats. ImageGear empowers developers to integrate a way for application users to quickly convert documents to PDF, create PDF/A files from raster images, and convert scanned pages into PDF searchable text using advanced optical character recognition (OCR). Annotations marks can also be converted as needed into XML files for enhanced auditability.
  • Substantial File Size ReductionImageGear enables file compression of up to 45 percent to save valuable storage space and utilizes automatic analysis to determine optimal compression operations for best-fit results.

Ready to embrace the future of FinTech and redefine digital document delivery at scale? Start your free trial of ImageGear today!

Question

Why do I get a “File Format Unrecognized” exception when trying to load a PDF document in ImageGear .NET?

Answer

You will need to set up your project to include PDF support if you want to work with PDF documents. Add a reference to ImageGear24.Formats.Pdf (if you’re using another version of ImageGear, make sure you’re adding the correct reference). Add the following line of code where you specify other resources:

using ImageGear.Formats.PDF;

Add the following lines of code before you begin working with PDFs:

ImGearFileFormats.Filters.Insert(0, ImGearPDF.CreatePDFFormat());
ImGearPDF.Initialize();

The documentation page linked here shows how to add PDF support to a project.

Question

ImageGear .NET v24.6 added support for viewing PDF documents with XFA content. I’m using v24.8, and upon trying to open an XFA PDF, I get a SEHException for some reason…

SEHException

Why might this be happening?

Answer

One reason could be because you need to execute the following lines after initializing the PDF component, and prior to loading an XFA PDF:

// Allow opening of PDF documents that contain XFA form data.
IImGearFormat pdfFormat = ImGearFileFormats.Filters.Get(ImGearFormats.PDF);
pdfFormat.Parameters.GetByName("XFAAllowed").Value = true;

This will enable XFA PDFs to be opened by the ImageGear .NET toolkit.

Question

I am combining multiple PDF documents together, and I need to create a new bookmark collection, placed at the beginning of the new document. Each bookmark should go to a specific page or section of the new document.
Example structure:

  • Section 1
    • Document 1
  • Section 2
    • Document 2

How might I do this using ImageGear .NET?

Answer

You are adding section dividers to the result document. So, for example, if you are to merge two documents, you might have, say, two sections, each with a single document, like so…

  • Section 1
    • Document 1
  • Section 2
    • Document 2

…The first page will be the first header page, and then the pages of Document 1, then another header page, then the pages of Document 2. So, the first header page is at index 0, the first page of Document 1 is at index 1, the second header is at 1 + firstDocumentPageCount, etc.

The following code demonstrates adding some blank pages to igResultDocument, inserting pages from other ImGearPDFDocuments, and modifying the bookmark tree such that it matches the outline above, with "Section X" pointing to the corresponding divider page and "Document X" pointing to the appropriate starting page number…

// Create new document, add pages
ImGearPDFDocument igResultDocument = new ImGearPDFDocument();
igResultDocument.CreateNewPage((int)ImGearPDFPageNumber.BEFORE_FIRST_PAGE, new ImGearPDFFixedRect(0, 0, 300, 300));
igResultDocument.InsertPages((int)ImGearPDFPageNumber.LAST_PAGE, igFirstDocument, 0, (int)ImGearPDFPageRange.ALL_PAGES, ImGearPDFInsertFlags.DEFAULT);
igResultDocument.CreateNewPage(igFirstDocument.Pages.Count, new ImGearPDFFixedRect(0, 0, 300, 300));
igResultDocument.InsertPages((int)ImGearPDFPageNumber.LAST_PAGE, igSecondDocument, 0, (int)ImGearPDFPageRange.ALL_PAGES, ImGearPDFInsertFlags.DEFAULT);

// Add first Section
ImGearPDFBookmark resultBookmarkTree = igResultDocument.GetBookmark();
resultBookmarkTree.AddNewChild("Section 1");
var child = resultBookmarkTree.GetLastChild();
int targetPageNumber = 0;
setNewDestination(igResultDocument, targetPageNumber, child);

// Add first Document
child.AddNewChild("Document 1");
child = child.GetLastChild();
targetPageNumber = 1;
setNewDestination(igResultDocument, targetPageNumber, child);

// Add second Section
resultBookmarkTree.AddNewChild("Section 2");
child = resultBookmarkTree.GetLastChild();
targetPageNumber = 1 + igFirstDocument.Pages.Count;
setNewDestination(igResultDocument, targetPageNumber, child);

// Add second Document
child.AddNewChild("Document 2");
child = child.GetLastChild();
targetPageNumber = 2 + igFirstDocument.Pages.Count;
setNewDestination(igResultDocument, targetPageNumber, child);

// Save
using (FileStream stream = File.OpenWrite(@"C:\path\here\test.pdf"))
{
    igResultDocument.Save(stream, ImGearSavingFormats.PDF, 0, 0, igResultDocument.Pages.Count, ImGearSavingModes.OVERWRITE);
}

...

private ImGearPDFDestination setNewDestination(ImGearPDFDocument igPdfDocument, int targetPageNumber, ImGearPDFBookmark targetNode)
{
    ImGearPDFAction action = targetNode.GetAction();
    if (action == null)
    {
        action = new ImGearPDFAction(
            igPdfDocument,
            new ImGearPDFDestination(
                igPdfDocument,
                igPdfDocument.Pages[targetPageNumber] as ImGearPDFPage,
                new ImGearPDFAtom("XYZ"),
                new ImGearPDFFixedRect(), 0, targetPageNumber));
        targetNode.SetAction(action);
    }
    return action.GetDestination();
}

(The setNewDestination method is a custom method that abstracts the details of adding the new destination.)

Essentially, the GetBookmark() method will allow you to get an instance representing the root of the bookmark tree, with its children being subtrees themselves. Thus, we can add a new child to an empty tree, then get the last child with GetLastChild(). Then, we can set the action for that node to be a new "GoTo" action that will navigate to the specified destination. Upon save to the file system, this should produce a PDF with the below bookmark structure…

Bookmarks example

Note that you may need to use the native Save method (NOT SaveDocument) described in the product documentation here in order to save a PDF file with the bookmark tree included. Also, you can read more about Actions in the PDF Specification.

Question

Why do I get a “File Format Unrecognized” exception when trying to load a PDF document in ImageGear .NET?

Answer

You will need to set up your project to include PDF support if you want to work with PDF documents. Add a reference to ImageGear24.Formats.Pdf (if you’re using another version of ImageGear, make sure you’re adding the correct reference). Add the following line of code where you specify other resources:

using ImageGear.Formats.PDF;

Add the following lines of code before you begin working with PDFs:

ImGearFileFormats.Filters.Insert(0, ImGearPDF.CreatePDFFormat());
ImGearPDF.Initialize();

The documentation page linked here shows how to add PDF support to a project.

Question

I’m receiving the error “Uncaught TypeError: Cannot read property ‘viewer’ of undefined” when trying to embed the PrizmDoc Viewer in my web application. What could be the issue?

Answer

This indicates that the template property in the viewer initialization has not been specified or is undefined.

To fix this, ensure you are loading viewerCustomizations.js.

If the version you are working with predates viewerCustomizations.js, you can get a copy of viewerCustomizations.js from the viewer assets, hosted here, and update your viewer initialization code.

Question

How can I enable content encryption in PrizmDoc Viewer?

Answer

First, you need to enable content encryption on the PrizmDoc Server in the central configuration file. To do this, find the viewing.contentEncryption.enabled section and change the value to true. Save the changes to the file and restart the PrizmDoc services for the change to take effect.

The file paths for the central configuration file are:

Linux: /usr/share/prizm/prizm-services-config.yml
Windows: C:\Prizm\prizm-services-config.yml

Next, you need to enable content encryption in the Viewer. To do this, in the index page of your viewer (Default.aspx in C#, index.php in the PHP sample, index.html, etc.), provide the encryption option in the viewer options parameter as follows so that the Viewer can handle encrypted data:

function buildViewerOptions() {
    ...
    var optionsOverride = args.pop(); // always last arg
    var options = {
        ...
        encryption: true
    };
    var combinedOptions = _.extend(optionsOverride, options);
    embedViewer(combinedOptions);
}

For more in-depth information on enabling content encryption in PrizmDoc, please refer to our documentation here.

Question

When doing a text search in a document in PrizmDoc, the highlight color for the search results is a light blue background. Is there a way to change the highlight color for search results in the PrizmDoc Viewer?

Answer

You can change the highlight color specifically in the PrizmDoc Viewer file viewer.js file located in the viewer-assets\js folder of your project/application.

You will need to locate 2 instances of the search term “highlightColor: undefined” in the code block below located close to line 4400. The actual line number will vary depending on the version of viewer.js you are using. You can replace “undefined” with a hexadecimal color value which you can look up from the following site: https://htmlcolorcodes.com/

// This is a request for a new searchQuery triggered by the search input field.
// Generate new search terms, and save them globally.
prevMatchingOptions = _.clone(matchingOptions);

if (matchingOptions.exactPhrase) {
    // We need to match the exact string, as is
    if (queryString.length) {
        searchTerms.push({
            searchTerm: queryString,
            highlightColor: undefined,
            searchTermIsRegex: false,
            contextPadding: 25,
            matchingOptions: matchingOptions
        });
    }
} else {
    // Split up multiple words in the string into separate search term objects
    var queryArr = queryString.split(' ');
    queryArr = _.unique(queryArr);
    _.forEach(queryArr, function(query){
        if (query.length) {
            searchTerms.push({
                searchTerm: query,
                highlightColor: undefined,
                searchTermIsRegex: false,
                contextPadding: 25,
                matchingOptions: matchingOptions
            });
        }
    });
}