views:

29

answers:

2

Hello ,

Am using jasper reports library with GWT application.

The reports is generated well with CSV format but with HTML format it generate the HTML page with icons of missing picture.

I know that jasper using transparent image called "PX", this image not found.

How can i solve this problem?

Thanks in Advance

A: 

Try passing in your image as a parameter to the report so you won't have to worry about image paths.

You can set the type of the parameter as a BufferedImage or whatever image class suits.

Gordon
A: 

My solution was to use data URIs. This isn't very elegant since it bloats the size of the HTML and doesn't work in IE prior to IE8, but it does allow you to not bother worrying about creating files out of the image attachments Jasper sends you either.

If you're going to implement this, you want to add this argument to your request:

<argument name="IMAGES_URI"><![CDATA[data:]]></argument>

Then you need to parse the report HTML that JasperServer sends back:

foreach ($attachments as $name => $attachment) {
    // Cut off the cid: portion of the name.
    $name = substr($name, 4);

    // Replace any image URIs with a data: uri.
    if (strtolower(substr($name, 0, 4)) !== 'uuid' && strtolower($name) !== 'report') {
        if (strtoupper(substr($attachment, 0, 3)) === 'GIF') {
            // It's a GIF.
            $report = str_replace("data:$name", 'data:image/gif;base64,' . base64_encode($attachment), $report);
        } elseif (/* more file type tests */) {
            // and so on...
        }
    }
}

For large images, it's best to do as Gordon suggested and pass in a parameter specifying the URL of a file that is permanently stored on the server. This method is more of a failsafe for gracefully handling any unexpected images JasperServer tries throwing at you.

Brad Koch