Hi, We use FOP 1.0 for converting documents to PDF. In certain cases when the document contains an image that returns null from GraphicsUtil.getAlphaRaster, this results in a NPE shown below:
2014-06-19 10:08:12,932 [http-nio-8080-exec-4] [1:admin:REGULAR] ERROR org.apache.fop.area.AreaTreeModel - Error while rendering page 1 java.lang.NullPointerException: Parameter alpha must not be null at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:53) at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:67) at org.apache.fop.render.pdf.ImageRenderedAdapter.setup(ImageRenderedAdapter.java:125) at org.apache.fop.pdf.PDFDocument.addImage(PDFDocument.java:828) at org.apache.fop.render.pdf.PDFImageHandlerRenderedImage.handleImage(PDFImageHandlerRenderedImage.java:80) at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:227) at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:183) at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingImageHandler(AbstractIFPainter.java:148) at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingURI(AbstractIFPainter.java:270) at org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:146) at org.apache.fop.render.intermediate.IFRenderer.drawImage(IFRenderer.java:1171) at org.apache.fop.render.intermediate.IFRenderer.renderImage(IFRenderer.java:1158) at org.apache.fop.render.AbstractRenderer.renderViewport(AbstractRenderer.java:741) at org.apache.fop.render.AbstractPathOrientedRenderer.renderViewport(AbstractPathOrientedRenderer.java:709) at org.apache.fop.render.intermediate.IFRenderer.renderViewport(IFRenderer.java:860) at org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:634) at org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:912) I have a possible fix patch for the org.apache.fop.pdf.AlphaRasterImage (line ~58) here: /** * Create a alpha channel image. * Extracts the alpha channel from the RenderedImage and creates a new bitmap image * with the given data. * * @param k the key to be used to lookup the image * @param image the image (must have an alpha channel) */ public AlphaRasterImage(String k, RenderedImage image) { this(k, getAlphaRaster(image)); } private static java.awt.image.Raster getAlphaRaster(RenderedImage image) { java.awt.image.Raster raster = GraphicsUtil.getAlphaRaster(image); if (raster == null && image.getColorModel() instanceof IndexColorModel) { int width = image.getWidth(); int height = image.getHeight(); WritableRaster writableRaster = image.getColorModel().createCompatibleWritableRaster(width, height); image.copyData(writableRaster); return writableRaster; } return raster; } This fixes the NPE but results in a muted image in the resulting PDF file. I’d like feedback on the possible fix as well as any ideas as to why the resulting image is muted. Thanks in advance! -- Shane