PDF generation, anyone? There are tons of libraries to do all sorts of things with PDF. But time and again I witness the pain that PDF handling task causes organizations, even though it should long be totally mundane, one would think...
Why is this so? You have to pay for a good PDF tool. Sometimes a lot. And the many free alternatives either focus on narrow things, or do not produce the best quality, or are hard to use, or are not for the platform of choice at the organization. The biggest obstacle is of course the licensing. If you cannot get a completely free license, then there is often a lot of friction when trying to get a paid-for variant... Here is one example of how a conversation could evolve:
- "We already have a license for PDF converter X!".
- "But it does not do what we need/or it is too hard to use!" etc., etc.
And needless to say that this sort of complexity typically arises in the kind of organizations that do a lot of document management and depend on PDF generation.
Having been through this recently myself I have got inspired to try and help my customer, Transport Canada, and other teams that may find themselves in a similar situation, and share a way to reliably generate high quality PDF documents and do some basic manipulations on them, absolutely free of charge.
Indeed, there has long been several useful PDF utilities made available on Linux, and there is the prominent LibreOffice suite that can generate great quality PDF documents free of charge. So I thought why not give it a try and put these applications inside of a Docker container and write a service that would accept HTTP requests and launch them?
Such service would allow tapping into the richness of available open source tools, many of which have been out there for decades, and if you are a developer then it would let you easily adjust which specific tools would you want to run, or how would you want to scale the service. Pretty flexible.
The service is now being adopted by Marine department at Transport Canada, and I hope it will evolve and serve them well. And since Transport Canada has a great policy of sharing the source code for some of their applications, I am happy to share a link to its public Github repository, which also has a detailed description of how it works and how to handle it. I will just list its "no frills" but much sought-after basic capabilities here:
- Conversion of popular office and image formats to PDF (thanks to LibreOffice!)
- Merging of office documents and images into a single PDF document (thanks to GhostScript!)
- Populating and "flattening" of fillable PDF forms (thanks to pdftk-java and PDF Toolkit!)
Have fun converting to PDF for free!