Inserting Images Dynamically

Note
This feature is supported by version 20.3 or greater.
Note
The code uses some of the objects defined in The Business Layer.

You can insert images to your reports dynamically using image tags. To declare a dynamically inserted image within your template, do the following steps:

  1. Add a textbox to your template at the place where you want an image to be inserted.
  2. Set common image attributes such as frame, size, and others for the textbox, making the textbox look like a blank inserted image.
  3. Specify an image tag within the textbox using the following syntax.
<<image [image_expression]>>

And simply call the assembler method to generate report like following code snippets:

The expression declared within an image tag is used by the assembler to build an image to be inserted. The expression must return a value of one of the following types:

  • A byte array containing an image data
  • Stream instance able to read an image data
  • An Image object
  • A string containing an image URI, path, or Base64-encoded image data

While building a report, the following procedure is applied to an image tag:

  1. The expression declared within the tag is evaluated and its result is used to form an image.
  2. The corresponding textbox is filled with this image.
  3. The tag is removed from the textbox.
Warning
If the expression declared within an image tag returns a stream object, then it is closed by the assembler as soon as the corresponding image is built.

By default, the assembler stretches an image filling a textbox to the size of the textbox. However, you can change this behavior in the following ways:

  • To keep the size of the textbox and stretch the image within bounds of the textbox preserving the ratio of the image, use the keepRatio switch as follows:

    <<image [image_expression] -keepRatio>>
    
  • To keep the width of the textbox and change its height preserving the ratio of the image, use the fitHeight switch as follows.

    <<image [image_expression] -fitHeight>>
    
  • To keep the height of the textbox and change its width preserving the ratio of the image, use the fitWidth switch as follows.

    <<image [image_expression] -fitWidth>>
    
  • To change the size of the textbox according to the size of the image, use the fitSize switch as follows.

    <<image [image_expression] -fitSize>>
    
  • To change the size of the textbox according to the size of the image without increasing the size of the textbox, use the fitSizeLim switch as follows.

    <<image [image_expression] -fitSizeLim>>
    
    Warning
    If the size of the image is greater than the size of the textbox, then the fitSizeLim switch acts like fitHeight or fitWidth. Otherwise, the fitSizeLim switch acts like fitSize.
Warning
Dynamic insertion of images from Base64-encoded bytes is available for file formats where dynamic image insertion is available for almost all supported file formats.