Adding Embedded Image to report at runtime

Channamari
edited February 11, 2022 in Analytics #1
<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>

Comments