Technical FAQs

Question

In ImageGear, why am I running into AccessViolationExceptions when I run my application in parallel?

Answer

This issue can sometimes occur if ImGearPDF is being initialized earlier in the application. In order to use ImGearPDF in a multi-threaded program, it needs to be initialized on a per-thread basis. For example, if you have something like this:

ImGearPDF.Initialize();
Parallel.For(...)
{ 
    // OCR code
}
ImGearPDF.Terminate();

Change it to this:

Parallel.For(...)
{
    ImGearPDF.Initialize();
    // OCR code
    ImGearPDF.Terminate();
}

The same logic applies to other ImageGear classes, such as ImGearPage instances or the ImGearRecognition class – you should create one instance of each class per thread, rather than creating a single instance and accessing it across threads. In the case of the ImGearRecognition class, you’ll have to use the createUnique parameter to make that possible e.g.:

ImGearRecognition recEngine = ImGearRecognition(true);

instead of

ImGearRecognition recEngine = ImGearRecognition();
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

How do I remove XMP Data from my image using ImageGear .NET?

Answer

When removing XMP data in ImageGear, the simplest way to do this is to set the XMP Metadata node to null, like so:

ImGearSimplifiedMetadata.Initialize(); 
doc.Metadata.XMP = new ImGearXMPMetadataRoot();

Or, you can traverse through the metadata tree and remove each node from the tree:

// Example code. Not thoroughly tested
private static void RemoveXmp(ImGearMetadataTree tree)
{
ArrayList toRemove = new ArrayList();
foreach (ImGearMetadataNode node in tree.Children)
{
    if (node is ImGearMetadataTree)
        RemoveXmp((ImGearMetadataTree)node);

    if (node.Format != ImGearMetadataFormats.XMP)
        continue;

    toRemove.Add(node);
}

foreach (ImGearMetadataNode node in toRemove)
    tree.Children.Remove(node);
}
Question

I want to re-arrange the page order of a PDF. I’ve tried the following…

var page = imGearDocument.Pages[indx].Clone();

imGearDocument.Pages.RemoveAt(indx); //// Exception: "One or more pages are in use and could not be deleted."

imGearDocument.Pages.Insert(newIndx, page);

But an exception is thrown. Somehow, even though the page was cloned, the exception states that the page can’t be removed because it’s still in use.

What am I doing wrong here?

Answer

If you’re using an older version of ImageGear .NET, you may run into this exception when you clone the page. Some of the resources between the original and the clone are still shared, which is why this happens.

Starting with ImageGear .NET v24.8, this no longer happens, and the above code should work fine.

If you still need to use the earlier version, you can use the InsertPages method instead.

InsurTech SDK

The insurance market is booming. As noted by research firm Deloitte, the property and casualty (P&C) sector saw a massive income uptick in 2018 and steady growth last year that’s predicted to carry forward through 2020. To help manage the influx of new clients and handle more claims, many firms are spending on insurance technology (insurtech) — digital services and solutions that make it possible to reduce error rates and enhance operational efficiency. InsurTech SDKs are important components of this transformation.

Both in-house insurtech solutions and third-party platforms often excel in specific areas but come up short in others, putting insurance firms at risk of writing off potential gains. While solution switching and ground-floor rebuilds offer one route to success, there’s another option that’s more custom to your business needs: software development kits (SDKs). Here’s a look at three top SDKs that offer customized functionality potential.


FormSuite for Structured Forms: Solving for Data Capture

Time is money. The faster insurance companies accurately complete and file documents, the greater their revenue potential. And as noted by KPMG, the need for speed is more pressing than ever. Many insurance sectors have seen substantial increases in both claims and new applications as the COVID-19 crisis evolves. 

As a result, accurate and agile forms processing is critical to keep up with demand. If current insurance software can’t quickly capture forms data, recognize standard form fields, and let users easily create standard form libraries, policy processing falls behind.

FormSuite for Structured Forms makes it easy for developers to build in form identification and data capture that includes comprehensive form field detection with OCR, ICR, and OMR functionality and the ability to automatically identify scanned forms and match them to existing templates.

ImageGear for .NET and C/C++: Simplifying Conversion

Conversion is critical for insurance firms. Depending on the type and complexity of insurance claims, companies are often dealing with everything from Word documents for initial client assessments and .GIF or .JPG images of existing damage to contractor-specific PDFs or spreadsheets that detail necessary materials, time, and labor costs. The result? A mash-up of multiple file types that forces adjusters to spend valuable time searching for specific data instead of helping clients get their claims process up and running. This makes it difficult to recognize value from emerging digital initiatives. 

Accusoft’s ImageGear for .NET and ImageGear for C/C++ empower developers to integrate enterprise-class file viewing, annotation, conversion, and image processing functions into existing applications, allowing staff to both quickly collaborate on key tasks and find essential data across a single, easy-to-search document.

 


ImageGear: Streamlining PDF Capabilities

While insurance technology offers substantive opportunities for end-users to capture, convert, and retain data, this technology can also come with the challenge of increased complexity. According to recent research from PWC, for example, firms looking to capitalize on insurtech potential must be prepared to rapidly develop new product offerings and embrace the expectations

As a result, companies need applications that streamline current functions and allow them to focus on creating cutting-edge solutions. For example, PDF is a file format that is still used by enterprises worldwide to maintain document format consistency and maximize security. When it comes to converting multiple files into a PDF, software can be expensive and introduce data security issues. 

This can all be solved with an SDK like ImageGear, which makes it possible to integrate the total PDF package into any document management application, both reducing overall complexity and freeing up time for staff to work on new insurance initiatives.

Insurtech forms the framework of functional futures in policy applications, claims processing, and compliance reporting, but existing software systems may not provide the complete capability set companies need to make the most of digital deployments. These top SDKs offer insurance IT teams the ability to integrate key services, improve speed, and boost security at scale. Learn more about Accusoft’s SDKs at www.accusoft.com/products

Emerging legal technology
 

Ongoing Legal Digital Transformation

There are many challenges facing the legal industry that legal tech and new emerging legal technology can help solve, but getting firms to adopt new technology to address these challenges can be a hurdle.  But the most recent challenge within the eDiscovery process is compounding them all. 

The Arrival of New eDiscovery Challenges

The change to a remote/hybrid work environment starting in 2020 during the worldwide COVID pandemic transformed the working world. Even while some companies have returned to the physical workspace, hybrid and fully remote working conditions continue to exist. This means that the collaborative working social platforms and mobile apps we all used to communicate and work with (Teams, Slack, Zoom, Webex, WhatsApp, Google Meet, etc.) are here to stay. 

Regardless of whether employees are in-office, hybrid, or working remotely, using these collaborative working social platforms has become the new norm. This has had profound effects on legal firms performing eDiscovery, most of whom still depend on tools and review processes designed for standard digital documents (such as .doc, .xlxs, .ppt, etc), paper documents, and email. The process of collecting, viewing, searching, redacting, and collaborating across traditional documents and emails has pivoted, and firms are responsible for including the digitized content from these collaborative working social platforms in their eDiscovery.

Compounding the Problem

Processing this new collaborative working social content is a big enough challenge on its own. Unfortunately, many in the legal industry weren’t fully optimized with their digital transformation by adopting previously available legal tech. While some traditional eDiscovery tools have reached maturity and are being utilized by firms, many slower-to-adopt firms are still fighting internally to have legal tech implemented.

How can firms (both early adopters and those still in the digital transformation process) prepare for eDiscovery across these new platforms filled with chat streams, emojis, and video recordings?

Enter Third-Party Software Integrations

Legal tech independent software vendors (ISVs) can be assured that there is technology available that can support their eDiscovery across these collaborative working social platforms. But better still, they don’t need to build a solution from scratch. 

Readily available and easy to adopt, third-party software integrations allow ISVs to add the capabilities they need without disrupting development timelines or building features from scratch. The ability to view, search, annotate, and redact content within documents securely inside an existing application without sacrificing everyday functionality is powerful.

Take on Your eDiscovery Challenges with Accusoft

Accusoft software integrations help legal tech ISVs build a more productive process for case review and eDiscovery. With unique technology that enables easy digital document processing, manual processes like search and redaction are no longer labor-intensive. Accusoft’s digital document lifecycle technologies streamline collaboration and information-sharing while keeping files secure and original metadata intact.

Looking specifically to address the new challenges of processing new collaborative working platform content within your eDiscovery process? Accusoft’s solutions can not only view these new collaborative platform transcript file types (including JSON, VTT, DOCX) but also search, redact, and offer secure collaboration directly inside your application.

To learn more about how Accusoft integrations can support your legal digital transformation and eDiscovery challenges, talk to one of our technology experts today.

_ _ _

For more information on Accusoft’s software integrations for eDiscovery, case, and practice management applications, visit our Legal industries page.

 

The legal profession may not be the first sector that comes to mind when thinking about how technology is transforming the way organizations conduct business, but LegalTech is quickly becoming an essential component of practicing law. Innovative digital platforms are helping legal firms to improve efficiency and solve problems, even though choosing and implementing these solutions isn’t always an easy process.

Despite the clear benefits of legal technology, status quo bias and concerns about onboarding difficulties have combined to make many organizations hesitant to invest in these tools. The concerns are understandable given that each new solution has the potential to disrupt established processes and ways of doing business. Today’s legal clients, however, expect firms to be more responsive to their needs and move quickly to advocate for their cases. Forward-thinking legal organizations  recognize that LegalTech isn’t so much a “necessary evil” as an outright necessity to business success.

Obstacles Facing LegalTech Adoption

As the legal industry becomes more competitive, firms are under intense pressure to do more with less while also improving their administrative agility. While there are many technology solutions available to facilitate this digital transformation, the implementation process often presents a series of obstacles. The sheer number of LegalTech solutions to choose from, whether in terms of software applications and platforms or devices and locations, can be overwhelming, especially when it comes time to integrate into a coherent IT strategy.

Lawyers routinely need to switch between different platforms and systems, some of which don’t communicate with each other. A key tool in one application may not exist in another, and in many cases data can’t be transferred between them easily. The constant juggling not only disrupts workflows and impacts efficiency, but also introduces abundant opportunities for human error to creep into processes. These risks combine to make many legal organizations resistant to adopting and learning new legal technologies, and instead drive them to rely upon outdated practices and systems.

Law firms have also been forced to adapt the way they operate due to the impact of the COVID-19 pandemic. Suddenly, essential tasks like meeting face-to-face with clients, conducting records research during discovery, and consulting with fellow attorneys are much more complicated. With many law offices shifting to a remote environment, legal professionals  find themselves switching between work laptops and personal devices frequently while also trying to access their firm’s intranet securely from off-site locations. All of these factors combine to reduce remote productivity since lawyers aren’t able to access the full range of their legal resources from their current location or device to create a single, cohesive workflow.

LegalTech and API Integrations

Despite the obstacles posed by adopting new tools and platforms, legal firms simply can’t afford to ignore digital transformation trends. By investing in innovative new legal technology, organizations can demonstrate their commitment to long-term growth and providing a better customer experience. Law clients understand that automation and other smart technologies can help them save money and receive better, more personalized service. In order to be successful in this environment, firms need to adopt a competitive growth strategy that is complemented by investments in technology.

Fortunately, many of the technology challenges facing legal organizations can be solved through API integrations. Short for application programming interface, APIs are an essential feature of today’s IT deployments that allow companies to get the most out of their disparate systems and applications.

How API Integration Works

At a very simple level, an API consists of code that allows two separate technology systems to communicate and interact with one another. It functions a bit like a translator and messenger, delivering user requests and data from one system to a completely separate system. This effectively allows an application to utilize the features and data of other applications without having to build out that functionality from scratch.

For example, the Uber ride-sharing app connects customers to available drivers within a specific area. It does this with a combination of smartphone geolocation and accurate maps, but the Uber app doesn’t actually have its own mapping capabilities. To get those features, it connects to Google Maps by way of an API that allows it to access the relevant navigational data and use it to connect customers to drivers.

Another key function of APIs is their ability to automate key processes and connect legacy infrastructure to newer technology systems. Data can be collected in one system, for instance, and “pushed” into another automatically. This not only eliminates the complicated (and error prone) task of manually transferring data between different systems, but also allows users to build a workflow in an application they’re already accustomed to without having to learn an entirely new system. 

More importantly, since APIs allow newer technologies, devices, and legacy applications to talk to each other, they provide firms with substantial flexibility when it comes to adding new platforms. Purchasing new software doesn’t mean throwing out existing tools, which substantially reduces the risks associated with technology investments and upgrades.

Stay Tuned for More

API integration and interoperability can deliver tremendous benefits to legal workflows and help firms better serve their clients. Stay tuned for part 2 of this series to learn how Accusoft’s API capabilities can unlock the full potential of your applications.

digital vault application

Security is everything for organizations when it comes to their sensitive data assets. Whether it’s vital documents, account passwords, or proprietary financial formulas, essential business information needs to be well-protected as companies continue to incorporate digital platforms into their operations. Developers can support this critical goal by providing secure digital vault applications that allow their customers to manage and use information assets without exposing them to unnecessary risks.

The heightened emphasis on security has made digital vault services quite popular in recent years. In order to maximize the potential of these security platforms, however, developers must integrate the right tools for managing multiple file types ranging from standard documents to complex financial spreadsheets.

What is a Digital Vault?

Much like its physical counterpart, a digital vault is a secure repository for storing vital assets in one easy-to-manage and fully-encrypted location. In some respects, these platforms are similar to information management services or cloud-based storage, but they set themselves apart by emphasizing security and access control. Digital vaults are frequently used for estate planning thanks to their ability to securely store account log-in information and vital documents, but they’re also popular with high-net worth individuals and organizations that need a safe place for sensitive financial data.

The core feature of a digital vault is its ability to prevent unauthorized access to materials stored inside them. They do this by strictly monitoring access rights at multiple levels. Just because someone has access to the vault itself, for instance, doesn’t mean they have access to everything it contains. The files and documents stored within the digital vault can all be set with their own access permissions. These controls mirror those used in a physical bank vault, such as:

  • Requiring manual authorization from an administrator to access data.
  • Implementing dual key control mechanisms.
  • Limiting access to certain times of day.
  • Segmenting access to relevant assets only.

Managing Digital Vault Information

Digital vaults also make the process of managing data much more secure. Since all of the assets stored within the vault are protected by encryption, they can be shared through a portal rather than downloaded, copied, or transmitted over poorly secured channels like email. The data itself never leaves the protective confines of the vault, and the security controls track who has been granted access when files are shared. This makes it easy to monitor activity and ensure that confidential files are not broadly distributed.

In order to facilitate this access, however, digital vault developers need to build viewing and editing tools into their applications. Without the ability to open and view a document within the web-based portal, for instance, users will be forced to rely on external software. This defeats the whole purpose of a digital vault, as it exposes the file to whatever security vulnerabilities that application might possess.

Integrating HTML5 viewing capabilities into their vault’s web portal allows developers to let their customers review documents and even make annotation markups without having to remove the file from a secure, encrypted environment. For most documents and images, this is a relatively straightforward process using a series of API calls to render the file within the browser.

The Challenge of Excel Spreadsheets

Microsoft Excel spreadsheets, however, frequently pose a major challenge to digital vault platforms. Unlike documents, spreadsheets are often designed to be interactive and can contain sensitive financial calculations within cell fields. Simply sharing a static, print preview image of a spreadsheet might be helpful for reviewing financial records, but it’s not very useful to someone who needs to enter fresh data into the formulas to calculate new results.

While the XLSX file could be made available for download to anyone who is authorized to use it, this defeats the purpose of having it stored in a digital vault. Not only would it be impossible to track the downloaded file, which creates serious data security risks, but allowing multiple copies of the file to proliferate will quickly lead to version confusion.

Enhancing Spreadsheet Functionality with PrizmDoc Cells

Digital vault developers can easily solve their spreadsheet challenges by integrating Accusoft’s PrizmDoc Cells into their application. A completely web-based spreadsheet viewer and editor, PrizmDoc Cells provides native XLSX file support without any external dependencies. The API-based integration allows users to open their existing Excel files to view, edit, and add comments completely within the application’s web portal. PrizmDoc Cells provides a familiar interface that developers can customize to meet the specific needs of their customers.

That same customization extends to the spreadsheet elements themselves. A digital vault provider may not want to allow users to have full access to every element of an Excel file. For instance, an organization may be fine with allowing someone to enter new data and calculate results in the spreadsheet, but not want anyone to be able to view the proprietary formulas buried within the cell fields. When integrating PrizmDoc Cells, developers can control what aspects of the XLSX file are actually shared. This makes it easy to keep formulas and other data locked in place within the spreadsheet and secure from unauthorized viewing.

Unlock Your Digital Vault’s Potential with PrizmDoc Cells

Accusoft’s PrizmDoc Cells gives digital vault developers the ability to control how spreadsheet files are shared and managed within their secure application environment. By integrating native Excel support, they can sever their dependency on Microsoft Office and other potentially insecure software platforms and enhance the value of their digital vault services. With PrizmDoc Cells, their customers can easily access, review, and edit their spreadsheets without exposing them to additional security risks or version confusion.

To learn more about the versatile functionality of PrizmDoc Cells, check out our detailed fact sheet for an overview of critical features and use cases. If you’re ready to test the integration in your application environment, download a free trial today in an easy-to-deploy Docker file.

Question

I am trying to deploy my ImageGear Pro ActiveX project and am receiving an error stating

The module igPDF18a.ocx failed to load

when registering the igPDF18a.ocx component. Why is this occurring, and how can I register the component correctly?

Answer

To Register your igPDF18a.ocx component you will need to run the following command:

regsvr32 igPDF18a.ocx

If you receive an error stating that the component failed to load, then that likely means that regsvr32 is not finding the necessary dependencies for the PDF component.

The first thing you will want to check is that you have the Microsoft Visual C++ 10.0 CRT (x86) installed on the machine. You can download this from Microsoft’s site here:

https://www.microsoft.com/en-us/download/details.aspx?id=5555

The next thing you will want to check for is the DL100*.dll files. These files should be included in the deployment package generated by the deployment packaging wizard if you included the PDF component when generating the dependencies. These files must be in the same folder as the igPDF18a.ocx component in order to register it.

With those dependencies, you should be able to register the PDF component with regsvr32 without issue.

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.