Blog

News and announcements including new releases, bug fixes and anything newsworthy.

How UniDoc powers PaperCut's core features

My name is Peter Williams, lead developer of enabling technologies at PaperCut. I develop libraries and code for PaperCut’s products.

PaperCut makes print management software with a focus on ensuring it’s as easy and pain-free as possible to use. From simple tracking and monitoring of print jobs to integrating BYOD printing or advanced custom job management.

PaperCut uses UniDoc in Mobility Print, a richly featured print server for Mobile and BYOD devices. These devices use PDF-based printing protocols, which is where UniDoc is involved.

How PaperCut utilizes UniDoc

At PaperCut we use UniDoc to:

  • Detect the number of pages and number of color pages in a document.

  • Convert documents to grayscale.

  • Add watermarks to documents before printing.

  • Develop technology for new features that PaperCut will deliver in 2019 and the future.

Why UniDoc

After looking at several open source and proprietary PDF libraries we decided to use UniDoc. Our goals were to:

  • Analyze and modify PDF files in innovative ways that could add valuable functionality to PaperCut products. As far as I know, all these analyses and modifications (except applying watermarks) were the first time anyone in the world had done this to PDF files.

  • Write reliable and performant software.

  • Have reasonable development costs.

We chose UniDoc for several reasons:

  • Many of the other libraries we looked at were well written. However, they didn’t do what we needed and they didn’t have a history of adding major new functionality for customers - something extremely important to us.

  • UniDoc was (and is) under active development so we thought it would have a better chance of us both growing together than with a mature library. Many of the UniDoc code examples analyzed or modified PDF files, which was what we needed for the functionality we wanted to add.

  • UniDoc was written in Go, our preferred systems programming language. That allowed us to develop fast and to write lightweight binaries for all the operating systems our products run on (Windows, Mac, and Linux). Go’s excellent security features also helped with our decision.

  • UniDoc runs fast.

PaperCut, like most software product developers, has many technology partnerships. What’s special about our relationship with UniDoc is that we can rapidly add new functionality to their library that doesn’t exist anywhere else in open source. An example of this was grayscale conversion. UniDoc added this over a period of a few months in 2017 on their development trunk.

UniDoc has been a great library to work with.