Technical FAQs

Question

What file formats does PrizmDoc Viewer currently support?

Answer

Please refer to our latest documentation for the most up-to-date list of supported file formats:

For documentation on older versions of PrizmDoc Viewer, please see our documentation archive.

Decoding Barcodes in F# with Barcode Xpress

F# is a strongly-typed functional-first language developed by Microsoft to bring the paradigms and advantages of functional style programming into the .NET platform. Influenced by languages like OCaml and Haskell, F# allows programmers to write more concise, readable software while maintaining the advantages of a strongly static typed compiler. While templates and support for F# have existed for some time in .NET Framework, it is considered a first class member of the .NET Core platform. Barcode Xpress 13 recently launched and began providing support for .NET Core. Now is the perfect time to demonstrate how simple it is to use Barcode Xpress in F#.

Adding BarcodeXpress.NETCore to Your Project

Since F# is a first class member of .NET Core, utilizing .NET Core class libraries couldn’t be simpler. You can use visual studio to search for and add the BarcodeXpress.NetCore package to your application or use the following command to do so with the dotnet command line interface:


dotnet add package Accusoft.BarcodeXpress.NetCore

You may also want to specify a version: for instance to add BX 13.0.4, the latest at the time of writing this article, it would simply be:


dotnet add package Accusoft.BarcodeXpress.NetCore --version 13.0.4

After that, add an open statement, F# equivalent of using, and you’re ready to start using Barcode Xpress types and functions in your module:


open Accusoft.BarcodeXpressSdk


Instantiate a Barcode Xpress Instance and Licensing

You are free to instantiate your Barcode Xpress object inside your main function as we do in our sample code for C# but if you want to define functions that use the SDK, which you will definitely want to do, you should use a let binding to create it at the top level inside your module.


module BarcodeReader =
    let barcodeXpress = new BarcodeXpress()

Notice that we do not have to specify the type of our Barcode Xpress object due to F#’s type inference. Many languages are able to infer the type in this context, as in C#’s var type, but as we will see shortly, F#’s type inference extends to a number of contexts that are less common.

If you already have an evaluation or toolkit license for Barcode Xpress, then you should need no further code to start working with the SDK. If you are on a system using a deployment or OEM license, you will need some additional calls placed right after the instantiation and you should take a look at your product documentation to see which calls are needed.

This is also a good place to let the SDK know which types of barcodes you would like to scan. For now, we will set this to scan for Code 128 barcodes, but you can set it for whatever type of barcode you have available. We can skip this step and the engine will search for all 1D barcodes, but even if we are using those types of barcodes we can speed up recognition by specifying exactly the type we want to read.


barcodeXpress.reader.BarcodeTypes <- [| BarcodeType.Code128Barcode |]

This looks slightly different than how we might accomplish the same task in C#, mostly due to F#’s different Array literal syntax and its use of the reverse arrow for setting properties.

Analyze Bitmaps

Barcode Xpress for .NET Core, like Barcode Xpress for .NET Framework, operates on the standard library System.Drawing.Bitmap class. For now, we will iterate over the command line arguments passed to our program and print out the values of each barcode:


[<EntryPoint>]
    let main args =
        for filename in args do
            use bitmap = new Bitmap(filename)
            let results = barcodeXpress.reader.Analyze bitmap
            for result in results do
                printfn "Barcode Value: %A" result.BarcodeValue
        0

That is really all there is to it! You’ll probably notice that, as before, we have not needed to manually specify any types in this code. Sometimes you will want to do so for readability reasons or to ensure that you get back the types you expect and you can do that here if desired:


let (results: Result[]) = barcodeXpress.reader.Analyze bitmap

Including the necessary system assemblies the complete code looks like this:


open System
open System.Drawing
open Accusoft.BarcodeXpressSdk
 
module BarcodeReader =
    let barcodeXpress = new BarcodeXpress()
    barcodeXpress.reader.BarcodeTypes <- [| BarcodeType.Code128Barcode |]
 
    [<EntryPoint>]
    let main args =
        for filename in args do
            use bitmap = new Bitmap(filename)
            let results = barcodeXpress.reader.Analyze bitmap
            for result in results do
                printfn "Barcode Value: %A" result.BarcodeValue
        0 

Everything we’ve done so far would be pretty simple to do in C#, albeit likely with a little more code. If you’d like to see some examples of how you can introduce more functional programming idioms into your barcode processing code, take a look at the rest of the article here.

 

For over 30 years, Accusoft has developed groundbreaking digital imaging technology that has revolutionized the way applications manage and process content. From high-resolution image compression and file format conversion to data extraction and barcode recognition, Accusoft technology can be found in some of the most sophisticated and widely used software in the world. The company’s enduring success is built upon a combination of patented engineering innovations and key strategic acquisitions.

Humble Beginnings and Early Success

The origins of Accusoft go back to the late 1980s, when founder and CEO Jack Berlin got a hands-on look at one of the first digital cameras at a trade show and developed an interest in the nascent technology.

“I just fell in love with it and wanted to get involved in digital imaging,” he recalls. That desire led Berlin to found Pegasus Imaging Corporation in September of 1991. “It started as a hobby, but it became serious pretty fast.”

The company quickly found its niche selling innovative image compression and decompression technology that software developers could incorporate into their applications. Over the next decade, Pegasus Imaging made a name for itself thanks to advancements in lossy and lossless JPEG compression that were adopted by leading photo imaging companies such as Kodak, Canon, Nikon, Fujifilm, and Konica Minolta.

In 1998, Pegasus Imaging expanded into medical imaging with the groundbreaking PICTools Medical SDK. The company quickly made a splash in the market by solving the infamous “DICOM bug” associated with the Cornell codec, an open-source codec frequently used for lossless JPEG compression. Pegasus Imaging’s engineers were able to identify why the codec rendered some images unreadable after decompression and provide a means of both compressing images safely and decompressing files once thought to be corrupted beyond repair. That ability to quickly solve imaging problems helped make PICTools Medical a major success with some of the world’s largest medical technology companies, including GE Healthcare, McKesson, Philips Medical Systems, Siemens Medical Solutions, and Toshiba.

Evolution and Expansion

Although Pegasus Imaging enjoyed a great deal of success in its first decade, Berlin knew the company needed to grow if it was going to retain a competitive edge in the 21st century.

“The challenge with the technology business is you have to improve it or lose it,” he says. “You don’t get to sell the same product ten years later. You have to continue to innovate.”

The early 2000s saw Pegasus Imaging embark on a series of acquisitions that helped expand its business and continue pushing the boundaries of innovating in digital imaging. Each merger involved a strategic consideration of how it would position the company to evolve to meet the complex challenges of the future.

“People typically want to buy growth, but we look at it differently,” Berlin says. “We’re a big believer that the reason to buy companies is their customers, their products, and their people. Products are worth nothing without their people.”

In 2004, Pegasus Imaging acquired TMSSequoia, which had developed the most sophisticated structured forms processing and document image cleanup technology in the world. The people behind that technology, however, proved even more valuable to the growing company, contributing to the development of several proprietary innovations over the years that followed. Their ongoing contributions can be seen in products like FormSuite, which remains an industry leader in forms processing technology.

The TMSSequoia acquisition, along with the development of its lightning fast ImagXpress toolkit, set Pegasus Imaging on the path to becoming a much bigger player in the document imaging market. Its next major acquisition came in 2008 with the purchase of AccuSoft, a Massachusetts-based imaging software company best known for its powerful ImageGear SDK. No sooner had the deal closed, then Pegasus Imaging expanded once again by acquiring the UK-based Tasman Software, which had developed groundbreaking barcode recognition technology that would eventually be incorporated into the popular Barcode Xpress SDK product.

Over the course of just a few years, Pegasus Imaging had greatly expanded its portfolio of document imaging and processing solutions by strategically identifying the technology and engineering talent that could fuel the company’s growth. To Berlin, making the most of those acquisition opportunities are critical to sustained success in a competitive industry:

“It’s grow or die. We’re up against larger and larger competitors. Consolidation gives you market share and economies of scale. If profitability goes up, you can invest in new product development, marketing, and growth.”

In 2009, Pegasus Imaging changed its name to Accusoft Pegasus to rebrand the company as a key player to watch in the document imaging and processing industry.

Integration and Innovation

The acquisition of AccuSoft expanded the company’s market share and expertise, but it also created a new challenge for the engineering team. AccuSoft’s ImageGear SDK frequently competed directly with Pegasus Imaging’s ImagXpress. While there was no question that the newly rebranded Accusoft Pegasus would continue to support customers using these products, strategic decisions had to be made about their respective futures.

As the team evaluated each product, it quickly became clear they were the result of very different approaches to software development.

“ImagXpress was much easier to use, but it didn’t have all the platforms and features of ImageGear,” Berlin recalls. “Their idea was to throw everything but the kitchen sink into the product, and if somebody complained, fix it. Pegasus wanted to make everything perfect and add features very slowly. I think there was a happy medium there somewhere.”

ImageGear’s ability to support multiple platforms and the rapid development of modern compilers eventually made it a more attractive SDK for developers, but the Accusoft Pegasus team incorporated the best features of ImagXpress into it to make ImageGear an even better product. Throughout the integration, the company put new processes into place to strike a balance between speed and perfection. Product management structures were also established to improve feedback loops, lay down feature roadmaps, and keep to development timelines without compromising quality.

All of these lessons would prove invaluable when Accusoft Pegasus acquired Adeptol in 2011 and added the company’s AJAX Document Viewer to its portfolio. While Adeptol’s browser-based viewing technology was undoubtedly innovative and correctly predicted what future web applications would require from viewing integrations, the product itself was Flash-based. In addition to being a proprietary technology, Flash contained multiple security vulnerabilities and was already on the decline by 2011.

The Accusoft Pegasus team got to work rebuilding the viewer using HTML5, making it much easier for developers to incorporate viewing features into web-based applications. As the new product took shape, it also allowed the company to expand into the growing market for cloud-based API integration products. Released as Prizm Content Connect in 2012, the HTML5 viewer would be rebranded in 2016 as PrizmDoc.

30 Years of Growth and Innovation

In 2012, Accusoft Pegasus rebranded once again to become Accusoft. Today, the company remains a pillar of the tech community in Tampa, FL even as it strives to expand its business globally. In 2021, Accusoft celebrated its 30th anniversary, a significant milestone for a privately held, employee-owned corporation that began as a hobby.

For Berlin, those humble origins and the long journey to success are what make a company like Accusoft special.

“It’s not just dollars and cents, but a sense of pride and competitiveness,” he says. “It stops being about money at some decimal point. It’s about the people and the legacy and seeing what you can do. We give back a lot to our community. I really enjoy that. We participate in our community, both in tech forums and charity drives and work days. If we cease being Accusoft or cease being Accusoft in Tampa, FL, that’s gone.”

Accusoft and Snowbound Join Forces

That same sense of pride and passion was shared by Simon Wieczner, President, CEO, and co-founder of Snowbound Software. Established in 1996, Snowbound first made a name for itself in the document imaging market with the RasterMaster conversion and imaging SDK. RasterMaster supports hundreds of formats and uses proprietary technology to quickly convert, archive, and display files in high resolution without loss of fidelity.

As two of the leading innovators in document imaging integrations, Snowbound and Accusoft routinely found themselves competing for the same customers over the years. “We were competitors, but not fierce competitors,” Wieczner recalls. “We would mostly run into each other at trade shows and talk about the market.”

Berlin first floated the idea of merging the two companies around 2015, but it wasn’t until much later that acquisition conversations turned serious. With so much money being invested in the tech industry over the previous decade, Snowbound had already received substantial interest from potential buyers, but most of the offers didn’t sit well with Wieczner.

“There’s been a craze over the last few years of growth equity companies looking for SDK companies,” he says. “They were offering good dollars, but without understanding our technology. So there was a little bit of distrust on my part. Some actually wanted to outsource everything and that would totally destroy the company.”

Many potential suitors were primarily interested in incorporating Snowbound’s technology into their own products rather than supporting existing customers and continuing to sell into the market. As conversations with Accusoft continued to progress, Wieczner realized that he’d already found the ideal acquisition partner.

“Accusoft understood the market, what our company did, and how we could fit together,” he says. “That’s why we felt ready to move on together.”

“Both Simon and I are passionate about the success of the company,” Berlin says. “It’s what small business people do. We tend to worship entrepreneurs that get in, build a shell, and get out with a billion dollars, but I don’t know if they’re fulfilled because there’s such fulfillment in seeing what you’ve built accomplish something.”

In late 2022, the companies moved ahead with a deal that saw Accusoft acquire Snowbound. The merger brings Snowbound’s RasterMaster® and VirtualViewer® products into the portfolio of Accusoft solutions:

  • RasterMaster®: A Java-based conversion and imaging SDK, RasterMaster can be incorporated into applications for all computing platforms, including Unix, Linux, Windows, and Mac. The SDK supports hundreds of document types through its proprietary format library and provides a variety of document imaging tools, such as annotations, redactions, OCR, text extraction, and image cleanup.
  • PrizmDoc® for Java, formerly VirtualViewer®: Developed to meet the demanding needs of the banking industry, PrizmDoc® for Java is an HTML5-based viewer that can be easily incorporated into web applications to allow users to view, annotate, and redact documents and images from any platform, anywhere. PrizmDoc® for Java’s library of APIs and out-of-the-box connectors for popular ECM applications (including Alfresco, IBM, and Pegasystems) make it a powerful tool for developers looking to quickly integrate advanced document workflow capabilities.

The Future

In keeping with Accusoft’s long history of strategic acquisitions, the Snowbound merger brings with it an influx of new customers, new technology, and new talent into the Accusoft family. Those resources will help the company to continue investing in innovation to compete in an increasingly high-stakes market.

“It’s a real challenge to incorporate other companies and take that risk, but they’ve done well with it,” Wieczner says. “We were deliberate in selecting an organization with a leadership team and product portfolio that would continue to grow, develop, and nurture what we have built at Snowbound.”

With three decades of experience and success to draw upon, Accusoft is better positioned than ever to meet the evolving needs of its customers and deliver a new generation of document imaging products powered by groundbreaking technology.

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

Although often considered a bit old fashioned, the insurance industry has made great strides in recent years to adapt to the changing needs of its customers. The latest generation of insurance customers expects faster service, better support, and more options from providers. Given these pressures, it’s no surprise that InsurTech developers have found ample opportunities to deliver solutions that help insurance firms better manage their workflows and create better customer experiences.

Despite the successes of this digital transformation, however, there are still a number of challenges that InsurTech developers face when building new applications. Investing heavily in creating powerful AI and big data tools might help those platforms stand out from the crowd, but they won’t find much success with firms if they don’t also provide the core functionality organizations need to service their customers. 

That’s why many InsurTech developers are turning to versatile SDK and API integrations to expand their feature sets without compromising their development timelines.

4 Major Challenges of InsurTech Applications

1. Security and Privacy

As the insurance industry continues to shift toward digital processes and platforms, it’s become more important than ever for InsurTech applications to keep sensitive data secure. While most organizations do invest in cybersecurity protections, they often don’t realize how their own practices could potentially pose a risk to customer information. This is especially true of insurers that rely on third-party programs for various tasks like document viewing and editing. Take, for instance, the case of Folksam Group, which inadvertently shared client data from as many as one million customers with Google, Facebook, LinkedIn, Microsoft, and Adobe in late 2020. 

2. File Management

Today’s insurers are receiving all kinds of documents, files, and images from their customers, which creates something of a document dilemma. A single auto accident claim, for instance, might have valuable information spread across multiple PDFs, Word documents, spreadsheet files, scanned images of hand-written forms, and image files. In order to process claims quickly and effectively, firms need InsurTech solutions that provide an all-in-one solution that can handle a broad array of file formats. Without these file management tools, insurers will be forced to use multiple programs to meet their needs, which creates inefficient dependencies and increases security risks.

3. Data Collection

Insurance companies gather quite a bit of information from form applications, both in physical and digital formats. Unfortunately, transferring that information from a form document into an InsurTech system is often a laborious manual process. Not only is manual data collection time consuming, it also increases the likelihood of human error. Even when firms do implement an InsurTech solution with forms processing capabilities, however, they often lack the capability to read certain types of form fields, especially those completed by hand. The ability to adapt to new form templates is also critical for organizations that want to invest in automation. 

4. Remote Collaboration

The COVID-19 pandemic may have forced insurance offices to rapidly embrace a remote work strategy, but many firms had already been investing in some form of hybrid work model for years. Nationwide was able to transition 98 percent of its workforce to remote status precisely because the company already had the technology solutions in place to allow insurance agents to work from home. Without some way of facilitating remote collaboration directly through InsurTech applications, organizations end up relying on email, which poses serious security concerns. Furthermore, with multiple copies of a document being distributed and downloaded, it quickly becomes difficult to know which version incorporates the most up-to-date changes.

SDK and API InsurTech Solutions

Building new functionality into an application always involves a tradeoff. When developers choose to code something from scratch, that means pulling team members away from another project or extending the product’s release timeline. In a fast-moving industry where InsurTech developers are racing competitors to be the first to market, it doesn’t make sense to design and build every aspect of an application in-house. 

Rather than pulling valuable development resources away from their innovative InsurTech features, developers can solve common insurance challenges much faster with SDK toolkits and API integrations. 

Secure File Viewing

The easiest way for InsurTech solutions to keep documents secure is to integrate HTML5 viewing capabilities directly into the application. Rather than being forced to download or open a file for viewing in a third-party application, employees can view multiple document formats natively. This is critical because it means no data will be shared with third-party programs.  Since the files remain safely within the secure InsurTech environment, firms can also control the level of access to any document, which prevents unauthorized individuals from downloading or viewing the contents. Thanks to API-based integrations like Accusoft’s PrizmDoc Viewer, InsurTech developers can help their applications safely view more than 100 unique file types without any third-party dependencies.

Data Capture

By integrating forms processing capabilities into their applications, InsurTech developers can provide their clients with powerful tools that allow them to gather essential data quickly and accurately. As the essential connective tissue between customers and insurance databases, form field recognition integrations use OCR technology to intelligently identify form data and extract it for processing. They can also be set up to identify a wide range of insurance forms to quickly identify and scan documents to streamline processing workflows. Accusoft’s FormSuite for Structured Forms even goes a step further by incorporating powerful image cleanup functionality to ensure that data will be extracted as accurately as possible.

File Conversion

In order to meet the file management challenges of today’s insurance providers, InsurTech developers need document and image processing integrations that can read and write multiple file formats. Information spread across multiple documents, emails, or even texts can be processed using OCR technology, and then consolidated and converted into a variety of formats for easy reference and collaboration. Rather than juggling several files with different dependencies, an SDK integration like Accusoft’s ImageGear can easily output processed files in PDF, RTF, XML, or DOCX format for viewing and editing within a single application.

Editing and Annotation

Providing secure document viewing capabilities solves only one half of the insurance collaboration challenge. InsurTech applications also need to provide both internal and external stakeholders with the ability to edit and markup documents throughout the application and claims process. Content processing integrations can allow authorized users to make changes to documents completely within their InsurTech solution and review markups and comments from other collaborators. 

Since all editing occurs within the application itself, there’s no need to worry about anyone downloading a document to make changes locally and creating confusion over which version is the most up-to-date. Redactions may also be necessary to hide private or confidential information from unauthorized viewers. As an added benefit, PrizmDoc Viewer’s editing features allow users to make a variety of markups and redactions while preserving the integrity of the original file.

Accelerate Your InsurTech Application Development with Accusoft

Accusoft’s collection of powerful SDK toolkits and API integrations provide innovative InsurTech developers with the resources they need to solve core insurance industry challenges. By implementing proven functionality into their applications, project managers can streamline the development process and dedicate more resources to the innovative features that will set their platform apart from the competition.

Whether you’re looking to incorporate versatile document viewing and editing or need a more accurate forms processing solution, Accusoft’s family of InsurTech SDKs and APIs can help your development team get to market faster. Learn more about what our products can do for your application in our InsurTech fact sheet.

 

 

Demo: BarcodeXpress for .NET Core Demo:  Barcode Xpress is a multi-language library that runs in multiple platforms including Windows and Linux-based systems. This barcode library can read and write over 30 different barcode types with high speed and accuracy. Barcode Xpress also comes with a free license to ImagXpress, one of our image processing SDKs, which supports loading and saving numerous image file formats including BMP, JPG, multi-page TIFF, among many others.

Question

The logging for ImageGear C & C++ Deployment Packaging Wizard (DPW) is showing different output for some components since v19.3, why is this?

In ImageGear C & C++ v19.2 and prior, the DPW had additional logging information for the ARTX component in its deployment.log:

Deploying an application that uses the ARTXGUI library of ImageGear
ARTX Component requires the following merge modules to be installed:

Microsoft_VC90_CRT_x86_x64.msm

Microsoft_VC90_MFC_x86_x64.msm

But since v19.3, the logs are no longer telling me to install these modules. Is this a mistake, or are they no longer necessary?

Answer

This was an intentional change on our end, and the Deployment Packaging Wizard (DPW) is working as intended. We made some updates to the DPW in the latest release; one update is that the CRM requirements for CORE (which is required in every project) now also covers the ARTX component. If the DPW is not saying you need additional components to use the ARTX component, then you’ll be fine.

Question

I encounter an Unhandled Exception error, as shown below, in ImageGear when trying to load a page into the recognition engine.

Error Message: An unhandled exception of type
‘ImageGear.Core.ImGearException’ occurred in ImageGear22.Core.dll

Additional information: IMG_DPI_WARN (0x4C711): Non-supported
resolution. Value1:0x4C711

What is causing this and how can I fix it?

Answer

This is probably because the original image used to create the page didn’t have a Resolution Unit set.

Resolution unit not set in original image

To fix this, check if the page has a Resolution Unit set. If it does not, set it to inches. You should also set the DPI of the image as those values were probably not carried over from the original image since the Resolution Unit wasn’t set. The following code demonstrates how to do this.

// Open file and load page.
using (var inStream = new FileStream(@"C:\Path\To\InputImage.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    // Load first page.
    ImGearPage igPage = ImGearFileFormats.LoadPage(inStream, firstPage);

    if (igPage.DIB.ImageResolution.Units == ImGearResolutionUnits.NO_ABS)
    {
        igPage.DIB.ImageResolution.Units = ImGearResolutionUnits.INCHES;
        igPage.DIB.ImageResolution.XNumerator = 300;
        igPage.DIB.ImageResolution.XDenominator = 1;
        igPage.DIB.ImageResolution.YNumerator = 300;
        igPage.DIB.ImageResolution.YDenominator = 1;
    }

    using (var outStream = new FileStream(@"C:\Path\To\OutputImage.jpg", FileMode.OpenOrCreate, FileAccess.ReadWrite))
    {
        // Import the page into the recognition engine.
        using (ImGearRecPage recognitionPage = recognitionEngine.ImportPage((ImGearRasterPage)igPage))
        {
            // Preprocess the page.
            recognitionPage.Image.Preprocess();

            // Perform recognition.
            recognitionPage.Recognize();

            // Write the page to the output file.
            recognitionEngine.OutputManager.DirectTextFormat = ImGearRecDirectTextFormat.SimpleText;
            recognitionEngine.OutputManager.WriteDirectText(recognitionPage, outStream);
        }
    }
}

Get Up and Running Faster with Barcode Xpress

Barcodes remain the basis for product identification and tracking, improving both operational insight and the end-user experience. From common applications in grocery stores to more advanced deployments in warehouses, legal firms, and even post-secondary schools, barcodes are the ubiquitous bridge between digital and physical environments. 

As noted by Forbes, emerging pandemic pressures have precipitated the return of a familiar code framework, the QR code. Now used by retail stores and restaurants to enable touchless product identification and payment, this rapid code renaissance is a stark reminder that codes remain a key driver of long-term operational success. However, not all barcode reader tools are created equal. Some struggle to handle damaged or deformed barcodes, others limit the type and nature of the codes they scan, and many full-featured solutions come with significant complexity around installation, integration, and ease-of-use.

Barcode Xpress offers the best of both worlds. Here’s what developers need to know.


What is Barcode Xpress?

Accusoft’s Barcode Xpress makes it easy for users to read, write, and detect over 30 different barcodes with a single software development kit (SDK). Barcode Xpress supports:

  • 1D Barcodes Including Add-2, Add-5, Code 39, GS1 and UCC
  • 2D BarcodesSuch as Aztec, Data Matrix, PDF417 and QR codes
  • Postal CodesFrom PLANET and PostNet to Royal Mail and the Australia Post 4-State Code
  • Patch Codes Including Patch 1, 2, 3, 4 (Toggle), 6 and Transfer

Barcode Xpress also reports confidence values for detected codes, reads supported barcodes in any orientation in milliseconds, and can intelligently handle poorly-printed, damaged, or badly-scanned barcode images. This SDK is also available in six development environments, including:

  • .NET
  • .NET Core
  • ActiveX
  • Java
  • Linux
  • Node.js

 Basic Barcode Requirements

Deployment environments for Barcode Xpress must leverage one of the following x64 Windows versions:

  • Windows 8.1
  • Windows 10 Version 1607 and later
  • Windows Server 2008 R2 SP1 and later
  • Windows Server 2012, 2016 or 2019

The SDK can also be deployed on x64 Linux operating systems including:

  • Ubuntu 18.04 or 16.04
  • CentOS 8 or 7
  • Debian 9 or 10

When it comes to Barcode Xpress development environments, requirements include Microsoft .NET Core 2.1 or later along with Java Runtime Environment 1.8 or later for License Manager and Server Licensing Utilities, along with Visual Studio 2017 or later (optional).


Ease of Installation

To streamline installation, Barcode Xpress .NET Core can be deployed via NuGet package or using a zip file provided by Accusoft. In both cases, developers require a valid license to use the SDK. Explore the different license types here.

Evaluation licenses allow your team to explore Barcode Xpress features bounded by timeouts and watermarks. Toolkit licenses remove pop-ups, time outs, and watermarks to enable in-depth development, while Runtime licenses are required to distribute your application.


Navigating NuGet

The simplest way to deploy Barcode Xpress is using the NuGet package manager for Microsoft development platform in Visual Studio. All of Accusoft’s NuGet packages can be found at nuget.org. Find the NuGet Barcode Express .NET package here.

To install the NuGet package, follow these steps:

  1. Open the NuGet Package Manager in Visual Studio.
  2. In the newly-opened window, ensure the Package Source is set to nuget.org and select the Barcode Xpress package.
  3. After selection and installation, look for the newly-added assemblies in your References folder.
  4. Add using [namespace] to any CS/VB file you’d like to reference these NuGet libraries.

Need more help? Check out the official NuGet tutorials


 Creating a Command Line

Ready to tackle your first project in Barcode Xpress? Here’s a step-by-step guide to building a complete C# application that analyzes 1D barcodes using Visual Studio.

1.Create a new Console App project in .NET core:

2. Add the Barcode Xpress SDK:

 

3. Add any required Microsoft dlls for the project. In this case, look for System.Drawing.Common at nuget.org, or add them locally if they’re already present as references in your development environment.

 

4. Add using statements to your generated Program.cs:Program.cs

 

using System;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;
namespace MyProject
{
...

5. Create any necessary instances of Accusoft.BarcodeXpressSDK.BarcodeXpress and System.Drawing.BitmapProgram.cs

 


using System;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;
namespace MyProject
{
    class Program
    {
        static void Main(string[] args)
        {
            BarcodeXpress barcodeXpress = new BarcodeXpress();
            System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
        }
    }
}

6. Pass this bitmap to Barcode Xpress and access the returned resultsProgram.cs

 


…
namespace MyProject
{
     class Program
     {
         static void Main(string[] args)
         {
             BarcodeXpress barcodeXpress = new BarcodeXpress();

             System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
          
             Accusoft.BarcodeXpressSdk.Result[] results = barcodeXpress.reader.Analyze(bitmap);
          
             if (results.Length > 0)
             {
                 foreach (Accusoft.BarcodeXpressSdk.Result result in results)
                 {
                     Console.WriteLine("{0} : {1}", result.BarcodeType.ToString(), result.BarcodeValue);
                 }
             }
             else
             {
                 Console.WriteLine("No Barcodes Found.");
             }
         }
     }

7. Finally, clean up your code by using the Dispose() methodProgram.cs


…
namespace MyProject
{
    class Program
    {
         static void Main(string[] args)
         {
             BarcodeXpress barcodeXpress = new BarcodeXpress();

             System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
          
             Accusoft.BarcodeXpressSdk.Result[] results = barcodeXpress.reader.Analyze(bitmap);
          
             if (results.Length > 0)
             {
                 foreach (Accusoft.BarcodeXpressSdk.Result result in results)
                 {
                     Console.WriteLine("{0} : {1}", result.BarcodeType.ToString(), result.BarcodeValue);
                 }
             }
             else
             {
                 Console.WriteLine("No Barcodes Found.");
             }
             barcodeXpress.Dispose();
         }
     }

Ongoing Improvements

Barcode Xpress isn’t a new offering — it’s been part of the Accusoft SDK lineup for more than 15 years. However, John Reynolds, Principal Engineer for Barcode Xpress, recently took a look at the code to improve its functionality. In his whitepaper, Refactoring Legacy Code for Speed in Barcode Xpress, he found that when repeatedly scanning a barcode in a particular direction, the count length of black/white runs in the same direction. 

As a result, continually calculating the mask and data pointers for each coordinate is cumbersome, but also allows for potential shortcuts, such as keeping a running tally of the mask across the image. Applied in depth, this and other code legacy code changes have helped improve 1D barcode analysis times from 5% to 60%, depending on the image.

Barcode Xpress offers comprehensive code recognition that’s easy to implement and customize, while ongoing improvements help streamline SDK deployment, enhance operational speed, and empower software engineers in various markets. Discover the benefits of Barcode Xpress. Download a free trial or try an online demo today.

Today’s applications need tremendous versatility when it comes to document management. Developers are expected to deliver tools that can handle multiple file types and have the ability to share them securely with internal users and people outside the organization. As more companies transition to remote-first work environments, online (and secure) collaboration tools are becoming a must-have feature. One of the major challenges facing developers is how to adapt existing document technologies and practices to an increasingly interconnected environment without creating additional risks.

Rendering and Conversion Challenges of Microsoft Office

Microsoft Office (MSO) files have long presented problems for organizations looking for greater flexibility when it comes to viewing and marking up documents. This stems in part from the widespread reliance on the Office software itself, which held a staggering 87.5 percent share of the productivity software market according to a 2019 Gartner estimate. Companies of all sizes across multiple industries rely on programs like Word, Excel, and PowerPoint, but there are many instances where they would like to be able to share those documents without also surrendering control of the source files.

The challenge here is twofold. On the one hand, if an organization shares an MSO file with a client or vendor, there’s no guarantee that the recipient will be able to view it properly. They may not have access to Office, in which case they can’t open the file at all, or they may be using an outdated version of the software. While they may still be able to open and view the file, it may not display as originally intended if it uses features not included in previous editions of Office.

On the other hand, however, sharing files outside a secure application environment always creates additional risk. Microsoft Office documents are notoriously attractive targets for hackers seeking to embed malicious code into files, and older, unpatched versions of the software contain numerous known vulnerabilities. Sharing MSO files with an outside party could quickly result in the file being exposed to a compromised machine or network. There’s also a question of version control and privacy, as a downloaded file could easily be copied, edited, or even distributed without authorization.

Unfortunately, it has proved quite difficult to natively render MSO documents in another application. Anyone who has had the misfortune of trying to view or edit a DOCX file in Google Docs will understand the challenges involved. While it’s certainly possible to render MSO files in a different application, the end result is often a little off the mark. Fonts may be rendered incorrectly, formatting could be slightly (or drastically) off, and entire document elements (such as tables, text fields, or images) could be lost if the application doesn’t know how to render them properly.

Rendering MSO Files Natively with PrizmDoc Viewer

As a fully-featured HTML5 viewing integration, Accusoft’s PrizmDoc Viewer can be deployed as an MSO file viewer that renders them like any other document type. However, this doesn’t provide a true native viewing experience, which many businesses require for various compliance reasons. Fortunately, the PrizmDoc Server’s Content Conversion Service (CCS) allows applications to natively render MSO documents with a simple API call.

The MSO rendering feature allows PrizmDoc to communicate directly with an installed version of Microsoft Office, which ensures that every element of the file is rendered accurately within the HTML5 viewer. For example, a DOCX file opened in Microsoft Word should look identical to the same document rendered within an application by PrizmDoc Viewer. Once the document is accurately rendered, it can be shared with other users inside or outside an organization. This allows people to view and even markup MSO files without the original source file ever having to leave the secure application environment. It’s an ideal solution for reducing security risks and eliminating the possibility of version confusion.

Converting Additional MSO File Elements

In many instances, organizations need to share MSO files that have already been marked up or commented upon. This could include Word documents with multiple tracked changes or PowerPoint slides with extensive speaker notes. Those additional markups could be important elements that need to be shared or reviewed, so it’s critical to include them during the conversion and rendering process.

Using the server’s CCS, PrizmDoc Viewer can convert Word documents with accepted or rejected markup changes when converting the file into a different format (such as converting an MSO file to PDF) or rendering it for viewing in the application itself. The same capabilities extend to PowerPoint presentations with speaker notes. When converting these MSO files, the outputted version can consist of slides only or include the speaker notes along with them.

These conversion and rendering capabilities provide developers tremendous flexibility when they’re integrating viewing features into their applications. They can easily deploy them to help their customers collaborate and share MSO files without having to remove them from a secure environment. It’s also a winning feature for end users, who don’t need to worry about downloading files or having access to the latest version of Microsoft Office.

Improve Your Document Capabilities with PrizmDoc Viewer

With its extensive file conversion, redaction, and annotation capabilities, Accusoft’s PrizmDoc Viewer is an essential integration for any document management platform that requires an MSO file viewer. It provides support for dozens of file types to give applications the flexibility needed to meet the demands of today’s complex workflows and improve efficiency. As an HTML5 viewer, it can be integrated into any web-based solution with minimal development effort, which frees up valuable resources developers need to focus on the innovative features that will help set their applications apart in a competitive market.

To learn more about PrizmDoc Viewer’s robust feature set, have a look at our detailed fact sheet. If you’re ready to see what our HTML5 viewer will look like within your application environment, download a free trial and start integrating features right away.


As more and more companies embrace digitization of paper documents, they’re looking for ways to minimize the virtual storage space necessary for these new files. They’re already benefiting from increased office space and improved workflow efficiency, but they also need data compression techniques to make access to digital information quicker and less costly.

One standard method is mixed raster content compression (MRC), which greatly reduces the size of stored PDF documents. Since the vast majority of data being digitized and archived is in PDF format, MRC compression is an ideal tool for converting high volumes of paper documents into compressed, searchable files.


 

MRC: The Basics

Mixed raster compression works by breaking down an image (typically a full page of a PDF document) into its various components: mostly text and color image files. This is done in order to utilize the most thorough compression algorithm available for each part of the page.

As a result, even though the color images are highly compressed into their core elements (background, color, grayscale, etc.) they retain vivid detail and can be displayed subsequently with essentially no loss of quality, and any text from the original page remains searchable.


 

Putting High-Grade Compression to Use

A real estate firm, for instance, can use MRC compression to efficiently store a database of home listings, each with potentially dozens of color images and a searchable street address, with little to no compromise in file fidelity.

Consider these numbers: MRC can compress a 20 MB .TIFF color image file (which is part of a source PDF) to anywhere between 96 and 170 KB, based on the level of compression desired. This range suggests, of course, a tradeoff between file size and image quality, but is a significant reduction from the source image in any case – with differences in the displayed file barely discernible.

The most recent MRC tools make its integration into existing applications simple as well, usually involving just adding a few lines of code to these make such dramatic compression ratios a reality. For all the talk of companies creating fully digitized records archives, MRC compression is one technique that’s making it more feasible than ever.


 

Let Us Help

If you’d like to learn more about mixed raster content compression, including how our ImageGear features highly refined MRC functionality, contact us and our experts will get in touch. We’re here to help developers make applications that put organizations on the forefront of digital content management.