We've been running our PDF/A conversion tools across some large Corpora. Here's what we've learned in the process.
There are many situations where a PDF has to be "rasterized" - the contents of each page turned into a bitmap image - such as when a PDF is being converted to PDF/A and the page contents cannot be repaired. This article shows how to do it efficiently.
This challenge was too good to resist. We've neglected to make our cards PDF/A compliant, which you are welcome to interpret as a commentary on the impermanence of romantic love, or perhaps it would have just taken longer to do. Either way we hope you had a happy Hallmark day. The code is below, and if you want to generate your own cards for someone you love (or even someone you don't) you ca...
This article shows how you can create a custom viewer feature that duplicates the functionality of Acrobat's "Print with Comments Summary" feature.
When working with Java APIs that use native code you can hit an OutOfMemory in the PermGen space due to weaknesses in Java's garbage collectors. Here's an ugly little hack that might help.
The Report Generator has got a few new tricks in release 1.1.51. Graph Library integration, Flash, PDF sets and Xinclude - read on for a summary and some examples.
A quick tip completely unrelated to PDF or Graphs: How to create a new self-signed X.509 Certificate with Java.
Sometimes when you convert a PDF to TIFF, you're left with a lot of whitespace around the content of the page. This article shows an easy way to remove it.
The Report Generator is a layer on top of the PDF Library API which converts XML to PDF. The XML is much easier to work with, but there are always situations where you'll need the flexibility of the API. Here we show you how to do this, and we also present a neat and non-obvious technique for watermarking.
If you're deploying Java code as Applets, Pack 200 compression can reduce the size of your download by 70%. This article shows how to build digitally signed Jars with Pack 200 compression using Apache Ant. It can be applied to any code, not just BFO code.