Case Study: Converting PDF documents on Windows Azure with ABCpdf.NET

Altaine Logo

Altaine's lead programmer John Downs describes how they successfully integrated ABCpdf into their Windows Azure based application...

Situation

We were given the task of developing a web-based eBook reading system, FT Press Delivers, to be hosted inside LinkedIn. We needed to ensure this would work across multiple platforms, multiple browsers, and without any third-party plugins. Because of the volume of traffic we were expecting we decided to use Windows Azure as our hosting platform. This was our first project using the Azure platform.

After some discussion of the different options, we decided to convert our eBooks to images of each page, to make them easily accessible from a range of browsers and without the need for any client-side plugins. However in order to do this we had to convert the content - supplied to us in PDF files - into images.

ABCpdf compact disk.
Download (30 day free trial available)

Solution

After reviewing many alternatives we decided to use ABCpdf for the conversion process since it was completely self-contained and didn't rely on having any applications installed on the machine - an impossibility in the tightly controlled Azure environment. The fact that ABCpdf is an entirely .NET API meant that we could use it within our Azure project with no problem. And, as an added bonus, ABCpdf is supplied as an x64 binary - so there were no issues running the code on the 64-bit Azure platform.

Because Azure doesn't let you run installation programs, we downloaded the package from the ABCpdf site and installed it onto one of our development machines. Following the instructions on the 'Manual Installation' page of the ABCpdf manual, we extracted out the ABCpdf.dll and ABCpdfCE7.dll files. In our C# project we referenced the ABCpdf.dll, and we also had to add the ABCpdfCE7.dll file into the bin folder of the project - we did this simply by adding it as a project file and setting its Build Action property to 'Content' and its 'Copy to Output Directory' property to 'Copy always'. This made sure that the two DLL files were both packaged up into the Azure deployment package file.

When it came to licensing our copy of ABCpdf, we weren't able to use the license key tool, PDFSettings, that the ABCpdf installer sets up (since we hadn't used the installer) - and in any case, we weren't able to access the registry in the Azure environment. Despite this, it was easy for us to simply call the XSettings.InstallRedistributionLicense method*, passing in our license key, each time we used the ABCpdf library in code.

We ended up with a worker role converting the PDF files into images and saving these to Azure Storage, and the whole solution worked flawlessly. We found the ABCpdf library very easy to work with - and once we'd worked out the little tricks described above, hosting it within Windows Azure was a breeze.

Links

Acknowledgements

Windows Azure is either a registered trademark or trademark of Microsoft Corporation in the United States and/or other countries.

The Altaine logo is copyright of Altaine Limited.

* XSettings.InstallRedistributionLicense is appropriate for those with a Redistribution License. However you only need one license for each Azure VM and as such most installations will use XSettings.InstallLicense instead.