<p>Hi,</p>
<p>I am trying to add an Embedded Image into my report design at runtime through my Java Class. I have successfully added it to the report design. But i am not able to use this image anywhere in the report . It throws an error telling that the "name is invalid". Below is my code.</p>
<p> </p>
<p> </p>
<p> public static void _addEmbeddedImage(ReportDesignHandle designHandle) throws IOException{<br>
EmbeddedImage embeddedImage = null;<br>
try{<br><br>
embeddedImage = new EmbeddedImage();<br>
embeddedImage.setName("logo.jpg");<br>
embeddedImage.setType(DesignChoiceConstants.IMAGE_TYPE_IMAGE_JPEG);<br>
embeddedImage.setData(_getImadeAsByteArr());<br><br><br>
designHandle.addImage(embeddedImage);<br>
}catch(Exception e){<br>
throw new IOException("Error while adding Embedded Image into the Report Design"+e.getMessage());<br>
}<br><br>
}<br>
public static byte[] _getImadeAsByteArr()throws IOException{<br>
String encodedImage = "";<br>
byte[] bytes = null;<br>
try{<br>
File imageFile = new File("C:/BIRT/Resources/logo.jpg");<br>
FileInputStream inputStream = new FileInputStream(imageFile);<br>
bytes = new byte[(int)imageFile.length()];<br><br>
}<br>
catch(Exception e){<br>
throw new IOException("Error while parsing Image File
@_getEncodedString .. Error: "+e.getMessage());<br>
}<br>
return bytes;<br>
}</p>
<p> </p>
<p> </p>
<p> </p>
<p> public static void _addNewImage(URequestContext ctxt,IReportRunnable design)throws Exception{<br>
Object pageContents = null;<br>
Object imageContent = null;<br>
ReportDesignHandle designHandle = null;<br>
SlotHandle masterPageHandle = null;<br>
SlotHandle headerHandle = null;<br>
<br>
ImageHandle imageHandle = null; <br>
EmbeddedImageHandle embeddedImageHandle = null;<br>
ElementFactory factory = null;<br>
try {<br>
designHandle = (ReportDesignHandle)design.getDesignHandle();<br>
factory = designHandle.getElementFactory();<br>
_addEmbeddedImage(designHandle);<br>
//designHandle.save();<br>
masterPageHandle = designHandle.getMasterPages();<br>
Iterator masterPageIter = masterPageHandle.iterator();<br>
while(masterPageIter.hasNext()){<br>
SimpleMasterPageHandle pageHandle = (SimpleMasterPageHandle)masterPageIter.next();<br>
headerHandle = pageHandle.getPageHeader();<br>
Iterator headerSlotIter = headerHandle.iterator();<br>
if(!headerSlotIter.hasNext()){<br>
List imagesList = designHandle.getAllImages();<br>
Iterator imagesIter = imagesList.iterator();<br>
while(imagesIter.hasNext()){<br>
imageContent = imagesIter.next();<br>
if(imageContent instanceof EmbeddedImageHandle){<br>
embeddedImageHandle = (EmbeddedImageHandle)imageContent;<br>
imageHandle = factory.newImage(null);<br>
imageHandle.setSource(DesignChoiceConstants.IMAGE_REF_TYPE_EMBED);<br><br>
headerHandle.add(imageHandle);<br>
}<br>
}<br><br><br><br>
// headerHandle.add(imageHandle, headerHandle.getSlotID());<br>
}<br><br>
}<br><br>
} catch (Exception e) {<br>
logger.debug("Error while adding Embedded Image to report design.. "+e.getMessage());<br>
}<br>
finally{<br>
designHandle.save();<br>
designHandle.close();<br>
}<br>
}</p>
<p> </p>
<p> </p>
<p>Any help would really be appreciated.</p>