Save image using callBack function in C# and .NET

Complete code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using SautinSoft;

namespace Example
    class Program
        static void Main(string[] args)
        /// <summary>
        /// How to use image saving callback and set a template name for all images.
        /// </summary>
        static void UsingImagesSavingCallback()
            string inpFile = @"..\..\..\example.docx";
            string outFile = Path.GetFullPath(@"Result.html");
            string imgDir = Path.GetDirectoryName(outFile);

            RtfToHtml r = new RtfToHtml();

            // Set images directory
            RtfToHtml.HtmlFixedSaveOptions opt = new RtfToHtml.HtmlFixedSaveOptions()
                ImagesDirectoryPath = Path.Combine(imgDir, "Result_images"),
                ImagesDirectorySrcPath = "Result_images",
                // Change to store images as physical files on local drive.
                EmbedImages = false,
                ImageSavingCallback = new SaveImagesOpt() { TemplateImageName = "MyPicture"}

                r.Convert(inpFile, outFile, opt);
            catch (Exception ex)
                Console.WriteLine($"Conversion failed! {ex.Message}");

            // Open the result.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outFile) { UseShellExecute = true });
    public class SaveImagesOpt : RtfToHtml.IHtmlImageSavingCallback
        public string TemplateImageName { get; set; } = "picture";
        public void ImageSaving(RtfToHtml.HtmlImageSavingArgs args)
            args.ImageFileName = args.ImageFileName.Replace("image", TemplateImageName);


Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.IO
Imports SautinSoft

Namespace Example
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
		End Sub
		''' <summary>
		''' How to use image saving callback and set a template name for all images.
		''' </summary>
		Private Shared Sub ImagesCallback()
			Dim inpFile As String = "..\..\..\example.docx"
			Dim outFile As String = Path.GetFullPath("Result.html")
			Dim imgDir As String = Path.GetDirectoryName(outFile)

			Dim r As New RtfToHtml()

			' Set images directory
			Dim opt As new RtfToHtml.HtmlFixedSaveOptions() With {
				.ImagesDirectoryPath = Path.Combine(imgDir, "Result_images"),
				.ImagesDirectorySrcPath = "Result_images",
				.EmbedImages = False,
				.ImageSavingCallback = New SaveImagesOpt() With {.TemplateImageName = "MyPicture"}

				r.Convert(inpFile, outFile, opt)
			Catch ex As Exception
				Console.WriteLine($"Conversion failed! {ex.Message}")
			End Try

			' Open the result.
			System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(outFile) With {.UseShellExecute = True})
		End Sub
	End Class
	Public Class SaveImagesOpt
		Implements RtfToHtml.IHtmlImageSavingCallback

		Public Property TemplateImageName() As String = "picture"

		Private Sub IHtmlImageSavingCallback_ImageSaving(args As RtfToHtml.HtmlImageSavingArgs) Implements RtfToHtml.IHtmlImageSavingCallback.ImageSaving
			args.ImageFileName = args.ImageFileName.Replace("image", TemplateImageName)
		End Sub
	End Class
End Namespace


If you need a new code example or have a question: email us at or ask at Online Chat (right-bottom corner of this page) or use the Form below:

Questions and suggestions from you are always welcome!

We are developing .Net components since 2002. We know PDF, DOCX, RTF, HTML, XLSX and Images formats. If you need any assistance with creating, modifying or converting documents in various formats, we can help you. We will write any code example for you absolutely free.