I've just had a niggling problem for the past few days making the Jasper reporting plugin work alongside the Rendering plugin.

They both render pdf's, and both have different use cases, When you want to use html or a gsp to define your pdf then the rendering plugin makes this very easy. When you need something a little more defined, and control over layout, perhaps using iReports to define pdf templates like I am, then you can use the Jasper reports plugin.

Both systems use the xhtml renderer 'core-renderer' and this is where I hit lots of exceptions.

iText version 2.0.8 is the one that comes with Grails.

When you use Jasper, Jasper wants to use a later version, else you will end up with an exception at this call:

com.lowagie.text.pdf.PdfWriter.setTabs

So, the thing to do is exclude iText from all grails artifacts and manually declare a dependency for iText 2.1.7

Ok, good Jasper reports now render perfectly, but when you try to use rendering plugin, you hit another problem at

java.lang.NoSuchMethodError: com.lowagie.text.pdf.BaseFont.getCharBBox[C]

because the core-renderer (V8) that comes with Grails is not compatiable with v2.1.7 !

The Solution

Forget about v8 of the core-renderer, exclude it from the grails artifacts and load a later version of the flying-saucer library that is known to work with iText 2.1.7 and later with the following

compile('org.xhtmlrenderer:flying-saucer-core:9.0.4')
compile('org.xhtmlrenderer:flying-saucer-pdf:9.0.4')


I hope this saves someone else the time and frustration I endured