Technical FAQs

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 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);
        }
    }
}
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

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 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.

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();

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.

Here at Accusoft, we’re always looking for new ways of connecting people with progress to improve productivity and drive innovation. It’s why we put so much work into our standards-based APIs and SDKs. We understand that developers need mature integrations that are ready to enhance their applications from day one and will be supported by extensive, accurate documentation. From the onset of 2020, we had a strategy in place to help us focus on making it easier for our customers to solve their business problems.

And then, well, 2020 happened…

As this challenging year finally comes to a close, we wanted to take a look back at how we adapted to stay focused on our enduring mission to deliver better products and services to our customers.

2020 Customer Advisory Board Meetings

Since most of our products are delivered through APIs and SDKs, we often encounter situations where our customers and partners independently purchase, download, and extend applications with minimal interaction. Historically, this made it difficult to gain insight into how our clients utilized many of our solutions and what features they would like to see from them in the future.

That’s why we hosted our first Board of Connectors (BoC) meeting in 2019 to bring customers and product managers together in an ongoing dialogue about business needs and product strategy. These meetings also had the benefit of allowing our customers to build relationships with our internal teams, provide feedback on product features, share their business challenges, and discuss key development trends impacting their respective industries.

We had the good fortune to hold our first BoC meeting in-person before the COVID-19 pandemic forced us to adopt rigorous social distance and work-from-home protocols for the safety of our employees and customers. Our second meeting took place in virtual format later in the year, which allowed us to learn first-hand how our customers were dealing with pandemic pressures and how we could adjust our product strategies to meet their rapidly shifting needs.

An Eventful 2020 for PrizmDoc Viewer

One of the principal beneficiaries of these meetings was our popular PrizmDoc Viewer solution. As a best-in-class HTML5 viewer, PrizmDoc Viewer was already a powerful and versatile viewing integration capable of enhancing a variety of applications. But if there’s one thing we’ve learned over the years, it’s that there’s always room for improvement.

That’s why we made it a point of emphasis to implement the top five requests we heard at the first BoC meeting of 2020. Despite all the disruption of COVID-19, we’re incredibly pleased that we were able to deliver on every one of these requests. We also rolled out a host of new product features and continued to optimize PrizmDoc Viewer for improved performance.

Here’s a quick rundown of the five big PrizmDoc Viewer upgrades of 2020:

v.13.11: February 2020 

For the first release of the year, we focused on improving performance when viewing large raster images. We also wanted to make PrizmDoc Viewer easier to install and upgrade.

What we did:

  • Improved the PrizmDoc Viewer Raster Conversion Service to significantly reduce memory consumption and reduce the time it takes to generate raster tiles when viewing large image files.
  • In addition to our traditional installers for Windows and Linux, we released new PrizmDoc Server and PrizmDoc Application Services (PAS) Docker images for production deployments, making the setting up of the PrizmDoc Viewer backend dramatically easier.
  • Released a new .NET SDK for PrizmDoc Server – for .NET developers doing backend document processing with PrizmDoc Server this wrapper around the PrizmDoc Server REST APIs makes it easy to use PrizmDoc Server functionality in .NET.
  • Upgraded the PrizmDoc Server installer to allow for in-place upgrades so users no longer need to uninstall the previous version before installing the newest version.

v.13.12: April 2020 

For the second release of the year, we expanded our use of Docker technology to make PrizmDoc Viewer easier to evaluate. We also worked to improve the performance and stability of PrizmDoc Server.

What we did:

  • Released a new evaluation Docker image that provides a demo web application to explore the viewer and its features, and start a complete PrizmDoc Viewer backend to begin using for local development.
  • Updated online help with a new look and feel for easier navigation. Added a new getting started topic for streamlined evaluation, and initial integration topic for an easy transition after evaluation. 
  • Improved performance and stability of PrizmDoc Server when viewing complex PDF documents.

v.13.13: June 2020 

This release saw the rollout of a new redaction feature along with myriad performance improvements.

What we did:

  • Provided support for multiple redaction reasons via our client API so users can apply more than one reason, selected from a customizable list, to any redaction reason. Reasons appear on top of the black box of redacted content and can be burned into a downloadable PDF along with the rest of the redacted content. Developers can also import a pre-built set of redaction reasons from an existing JSON file for streamlined end-user application.
  • Improved conversion times and memory consumption when viewing multi-page DWF documents.
  • Improved performance when retrieving revision data and scrolling through results when comparing two versions of a Word document.

v.13.14: September 2020

The fall release saw new support for viewing email attachments, more redaction features, and continued improvements to the upgrade process.

What we did:

  • Added support for opening email attachments in the same viewer window where the original email is being viewed. Improved the client UI to show email attachments in a compact dropdown menu.
  • Added server-side support for multiple redaction reasons using the Redaction Creators API.
  • Released the ability to draft redactions without obscuring the content, allowing users to produce PDF documents with transparent redactions that display the document content underneath the redaction rectangles.
  • Added the ability to retain configuration setting when upgrading PrizmDoc Server and PAS.

v.13.1: December 2020

The final update of 2020 focused primarily on reducing resource strain, but also saw the release of new sample code and added new Java Virtual Machine (JVM) controls.

What we did:

  • Optimized log entries for the PrizmDoc PDF processing service to dramatically reduce log file size and storage needs.
  • Enhanced PrizmDoc service health detection to automatically return to healthy status as soon as a failed backend service returns to normal operation, eliminating a potential need to restart PrizmDoc Server.
  • Released two new Angular samples on GitHub: a .NET backend sample and a Java backend sample.
  • Added new parameters in central configuration that provide controls for JVM settings when starting PrizmDoc Server Java-based services.

What’s Next for 2021?

Following our virtual BoC meeting in Q3, our product teams have been hard at work developing new features for the upcoming year that will continue to meet the diverse use case needs of our clients’ applications. We want to build on our successes in 2020 when it comes to engaging our customers and using their direct feedback to make beneficial and lasting improvements to our family of SDK and API solutions.

If you’re currently using our products and would like to participate in one of our upcoming BoC meetings for 2021 to submit feedback or learn about future releases, contact us today! We’re looking forward to working with you in the new year!

On August 3, 2021, Accusoft announced the release of the paid Professional version of Accusoft PDF Viewer. Initially released in March of 2021, the Standard version of Accusoft PDF Viewer is a free-to-use, lightweight JavaScript PDF library featuring a responsive UI for out-of-the-box mobile support. The new Professional version adds enhanced PDF tools and document functionality without introducing any complex server dependencies that could impact application security or performance.

“We’ve received tremendous feedback so far regarding the Standard version of Accusoft PDF Viewer,” says Jack Berlin, CEO of Accusoft. “With the release of the paid Professional version, customers now have a clear upgrade path that allows them to add new features without having to rethink their application architecture.”

Key Accusoft PDF Viewer Professional features include:

  • Multiple Annotation Types
  • Customizable UI
  • White Labeling
  • Electronic Signature

As an entirely client-side integration, Accusoft PDF Viewer can be incorporated into any web application with just a few lines of code. The paid Professional version features the same intuitive UI controls that provide an optimized viewing experience across all screen types, making it ideal for web apps that need to run on both desktop and mobile devices.

“We did a lot of research to determine which features are most important to developers,” says Mark Hansen, Product Manager at Accusoft. “The ability to markup and electronically sign documents without having to rely on external servers or backend processing is going to be a gamechanger for a lot of applications.”

To learn more about the latest Accusoft PDF Viewer features, please visit our website.

About Accusoft: 

Founded in 1991, Accusoft is a software development company specializing in content processing, conversion, and automation solutions. From out-of-the-box and configurable applications to APIs built for developers, Accusoft software enables users to solve their most complex workflow challenges and gain insights from content in any format, on any device. Backed by 40 patents, the company’s flagship products, including OnTask, PrizmDoc™ Viewer, and ImageGear, are designed to improve productivity, provide actionable data, and deliver results that matter. The Accusoft team is dedicated to continuous innovation through customer-centric product development, new version release, and a passion for understanding industry trends that drive consumer demand. Visit us at www.accusoft.com.

###

accusoft diversity

As one of Accusoft’s core initiatives, diversity and inclusion has always been top-of-mind for our leadership and our teams. With recent events, it is crucial for us to reflect as an organization and as human beings on what we can do to better serve our community and provide a safe space for our employees to share ideas.

In response to the heightened awareness of non-inclusive behavior throughout societal structures and communities, it is our responsibility to continuously promote an inclusive community and to celebrate diversity within our organization.

As an ongoing initiative to incorporate more of our core values into our everyday work routines, several diversity and inclusion initiatives have been implemented to help our teams grow and learn from each other. Some of the most recent initiatives include an activism Slack channel, a monthly discussion on educational resources, celebration of Juneteenth, and more. 

“I believe that every one of us has some work to do when it comes to changing the societal norms,” states Jack Berlin, CEO of Accusoft. “At Accusoft, we are committed to being an active ally in that change and consistently making our work environment an inclusive place, where diversity is celebrated.”


A Celebration of Juneteenth

In celebration of Juneteenth, Accusoft hosted an information session to provide insight into the reason for the holiday, traditions, and local or virtual events in the area. It was an opportunity for employees to come together to learn, ask questions, and understand each other. 

The meeting was hosted by an Accusoft team member who put together a presentation to share the history of the day and how it can be more widely acknowledged in our society. During the discussion, several team members took part in the Q&A session, providing information and resources about related topics, asking questions, and sharing thoughts about current events. 

“Most of us still have a lot to learn so it’s important for us to create a safe space for our employees to share their thoughts and feelings – even on difficult topics. As leaders, we are committed to lead by example and be vulnerable and open in this dialogue,” says Megan Brooks, V.P. of Marketing. “As an organization, we are committed to improving the diversity and inclusion of Accusoft’s team members and continuing to grow in our approach to this core value.”


Activism Slack Channel

One of the many great initiatives that Accusoft has implemented is an activism Slack channel for any employees who want to share news, resources, and events happening in the community. The channel is booming with new ideas, providing a safe way for employees to communicate about current events and share thoughts on how these situations impact them on a professional and personal level.

“The activism channel was created to give people a place to freely express their views, learn from one another, and figure out ways to help our community,” says Christine Hairelson, Sr. Director of Human Resources. “We were hearing that people wanted to get involved, but didn’t know how to help. This channel provides a platform for us to discuss, share, and learn about ways we can take action at home, in our workplace, and throughout our community.”


Educational Resources & Discussions

In addition to the Juneteenth meeting and the activism Slack channel, Accusoft is raising awareness around diversity and inclusivity by providing a safe community for resource sharing including books, podcasts, movies, music, and more. Once a month, the community meets to discuss these resources.
“When we first started planning these meetings, we wanted to choose a resource that would help us talk through some of the difficult topics that we are facing as a society,” shares Tracy Schlabach, Sr. Manager, Product & Customer Marketing. “The book, Blind Spot, was chosen to be the first resource we share together because it explores our innate biases with an Implicit Association Test. In our first meeting, we discussed the test and our results. We explored how we each felt about those things and are working to be more aware of what we encounter on a day-to-day basis. It’s really eye-opening.”


Reaching a Base of Diverse Applicants

While Accusoft has always valued diversity, there is room for improvement in scoping out a wider talent pool. Accusoft is reviewing its resources for talent sourcing and exploring new ways to bring in a more diverse talent base. Whether those initiatives mean getting involved with universities to inspire and motivate women to pursue careers in technology, or widening our reach to offer more flexibility when it comes to working remotely in different parts of the country, Accusoft is currently reviewing its options for increasing diversity on its teams. 

“Accusoft has always prioritized diversity and inclusion in its hiring processes. With recent events, we wanted to explore what we could do better to expand our pool of diverse applicants and identify diverse panelists for interviews, says Khristina Jones, Corporate Recruiter at Accusoft. “We want to make sure that our culture is not only inclusive, but representative of our core values and beliefs.”

At Accusoft, we value diversity and inclusion as one of our core values. We are consistently working to improve our policies, procedures, and involvement in our community as we evolve. We remain committed to providing a safe environment for our employees and standing alongside them as we all advocate for a better future.

 

TAMPA, Fla. – 2021 marks the 30th anniversary for Accusoft Corporation, the longtime leader in content, processing, conversion, and automation technologies for developers.

Headquartered in Tampa, FL, Accusoft was founded in 1991 as Pegasus Imaging, a provider of technology and solutions to the photo and document imaging markets. In 1998, Pegasus Imaging expanded into medical compression technologies. This technology was adopted by some of the largest medical technology companies in the world, including GE Healthcare, McKesson, Phillips Medical Systems, Siemens Medical Solutions, and Toshiba.

Between 2004-2008 Pegasus Imaging acquired TMSSequoia and Accusoft which moved the company into the forms processing and image cleanup technologies. In 2012, Pegasus Imaging was rebranded to Accusoft Corporation. 

Today, after seeing three decades of change and innovation, Accusoft is proud to bring new technologies to market, driven by the goal of improving the document lifecycle experience for businesses and their employees. 

Most recently Accusoft created and launched OnTask and the Accusoft PDF Viewer. OnTask is a workflow automation tool that makes it easy for small to mid-sized businesses to digitally send and fill forms, get signatures on documents, and automate overall business processes.The Accusoft PDF Viewer is a JavaScript SDK that easily integrates into a developer’s web application to enable PDF viewing and annotation features with no server dependencies.

“Every day I am so amazed by the talent and passion of the team we have built at Accusoft,” said Accusoft CEO Jack Berlin. “30 years in business is a testament to our employees, as well as the innovation and quality of the products we bring to the market.”

For more information about Accusoft, please visit https://www.accusoft.com/.

About Accusoft: 

Founded in 1991, Accusoft is a software development company specializing in content processing, conversion, and automation solutions. From out-of-the-box and configurable applications to APIs built for developers, Accusoft software enables users to solve their most complex workflow challenges and gain insights from content in any format, on any device. Backed by 40 patents, the company’s flagship products, including OnTask, PrizmDoc™ Viewer, and ImageGear, are designed to improve productivity, provide actionable data, and deliver results that matter. The Accusoft team is dedicated to continuous innovation through customer-centric product development, new version release, and a passion for understanding industry trends that drive consumer demand. Visit us at www.accusoft.com.

Question

How do I ensure temp files are deleted when closing ImageGear .NET?

Answer

All PDF objects are based on underlying low-level PDF objects that are not controlled by .NET resource manager and garbage collector. Because of this, each PDF object that is created from scratch should be explicitly disposed of using that object’s Dispose() method.

Also, any ImGearPDEContent object obtained from ImGearPDFPage should be released using the ImGearPDFPage.ReleaseContent() in all cases.

This should cause all temp files to be cleared when the application is closed.