ImageInline
ImageInline element is an inline-level flow content element intended to contain an image object.
Supported Image Extensions
With WordsProcessing, you can work with images from the following file formats:
- JPG
- JPEG
- PNG
- BMP
- TIFF
- TIF
- GIF
- ICON
- WMF
- EMF
- BIN
- SVG (introduced in 2024 Q3)
Inserting an ImageInline
Example 1 demonstrates how you can create an ImageInline and add it to a Paragraph:
Example 1: Create an image inline and insert it in a paragraph
ImageInline imageInline = new ImageInline(document);
byte[] data = File.ReadAllBytes("logo.png");
imageInline.Image.ImageSource = new ImageSource(data, "png");
paragraph.Inlines.Add(imageInline);
The parent Paragraph should belong to the same document that is passed to the constructor of the ImageInline.
You can add an image at a specific index in the Inlines collection of a paragraph using the Insert() method. Here is how to add an ImageInline at the beginning of a paragraph:
Example 2: Add an image inline to a specific position
ImageInline imageInline = new ImageInline(document);
byte[] data = File.ReadAllBytes("logo.png");
imageInline.Image.ImageSource = new ImageSource(data, "png");
paragraph.Inlines.Insert(0, imageInline);
You can also use the AddImageInline() method of the Inlines collection of a paragraph. The method creates a new ImageInline, adds it to the paragraph and returns it.
Example 3: Using AddImageInline() method
ImageInline imageInline = paragraph.Inlines.AddImageInline();
Inserting ImageInline element in RadFlowDocument can also be achieved with RadFlowDocumentEditor.
Example 4: Insert an image inline using RadFlowDocumentEditor
RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document);
using (Stream stream = this.GetResourceStream("Telerik_logo.png"))
{
editor.InsertImageInline(stream, "png", new Size(118, 28));
}
Modifying an ImageInline
The ImageInline element exposes the following properties:
-
Image: Represents the image object that is contained in the ImageInline. It is a read-only composite object that contains the properties listed below:
- ImageSource: Specifies the image source that is visualized in the image object.
- Name: Represents the name of the image.
- Width: The width of the image.
-
Height: The height of the image.
- Size: The size of the image. Can also be set to Size.Empty.
- IsHorizontallyFlipped: Specifies whether the image is horizontally flipped.
- IsVerticallyFlipped: Specifies whether the image is vertically flipped.
-
RotationAngle: Specifies the rotation angle of the image.
- LockAspectRatio: Determines whether the aspect ratio between the width and the height of the image will be preserved.
-
Link: Specifies the link that would be opened when the image is clicked. The property is of type string, currently it works with the docx format only.
Working with Image Size
This section explains the behavior of the Size property of The Image object in an ImageInline and how the image sizes are exported to the supported formats.
When using the .NET Standard version of the RadWordsProcessing binaries, in order to export to PDF format documents containing images different than Jpeg and Jpeg2000 or ImageQuality different than High, the JpegImageConverter property inside the FixedExtensibilityManager has to be set. For more information check the FixedExtensibilityManager in the PdfProcessing`s Cross-Platform Support
-
Insert image without specifying its size
- Model: Size will be Size.Empty.
- Export to DOCX: Size will be decoded
- Export to RTF: Size will be decoded
- Export to HTML: Width and height attributes will not be exported
- Export to PDF: Size will be decoded
-
Insert image and set its size to Size.Empty
- Model: Size will be Size.Empty
- Export to DOCX: Size will be (1,1)
- Export to RTF: Size will be (1,1)
- Export to HTML: Width and height attributes will not be exported
- Export to PDF: Size will be (1,1)
-
Inserting image without specifying its size and obtain its size later (through the property getter)
- Model: Size will be decoded