Convert Word to Image using Syncfusion Word (DocIO) library
29 Aug 202420 minutes to read
Syncfusion Word library (DocIO) allows you to convert Word document to image within a few lines of code in .NET applications and also it does not require Adobe and Microsoft Word application to be installed in the machine. Using this, you can create an input Word document from scratch or load an existing Word document and then easily convert to Image.
The Syncfusion Word to image converter offers high versatility and seamless performance across various .NET platforms, including Windows Forms, WPF, ASP.NET, ASP.NET MVC, ASP.NET Core, Blazor, Xamarin, WinUI, .NET MAUI. Also, in different environments like Azure, AWS, Google Cloud, Linux, and macOS.
Key Features
- Ability to convert entire word document to images.
- Ability to convert specific page of Word to image.
- Ability to convert specific range of pages in Word to images.
- Ability to convert a Word document to an image using custom image resolution.
- Set fallback fonts for characters when glyphs are not available.
Assemblies and NuGet packages required
Refer to the following links for assemblies and NuGet packages required based on platforms to convert the Word document to image.
To quickly start converting a Word document to an image, please check out this video:
Convert Word to Image
The following namespaces are required to compile the code in this topic:
NOTE
Refer to the appropriate tabs in the code snippets section: C# [Cross-platform] for ASP.NET Core, Blazor, Xamarin, UWP, .NET MAUI, WinUI, and C# [Windows-specific] or VB.NET [Windows-specific] for WinForms, WPF, ASP.NET and ASP.NET MVC applications.
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.DocIORenderer;
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using Syncfusion.OfficeChart;
using Syncfusion.OfficeChartToImageConverter;
Imports Syncfusion.DocIO
Imports Syncfusion.DocIO.DLS
Imports Syncfusion.OfficeChart
Imports Syncfusion.OfficeChartToImageConverter
TIPS
- You can get the good quality converted images by specifying the image type as Metafile in the platforms targeting .NET Framework.
- You can specify the quality of the converted charts by setting the scaling mode.
Convert the entire Word document to images
The following code example illustrates how to convert the entire Word document to images.
//Open the file as Stream.
using (FileStream docStream = new FileStream("Template.docx", FileMode.Open, FileAccess.Read))
{
//Load file stream into Word document.
using (WordDocument wordDocument = new WordDocument(docStream, FormatType.Docx))
{
//Create a new instance of DocIORenderer class.
using (DocIORenderer render = new DocIORenderer())
{
//Convert the entire Word document to images.
Stream[] imageStreams = wordDocument.RenderAsImages();
int i = 0;
foreach (Stream stream in imageStreams)
{
//Reset the stream position.
stream.Position = 0;
//Save the stream as file.
using (FileStream fileStreamOutput = File.Create("WordToImage_" + i + ".jpeg"))
{
stream.CopyTo(fileStreamOutput);
}
i++;
}
}
}
}
//Load an existing Word document.
using(WordDocument wordDocument = new WordDocument("Template.docx", FormatType.Docx))
{
//Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = new ChartToImageConverter();
//Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal;
//Convert the entire Word document to images.
Image[] images = wordDocument.RenderAsImages(ImageType.Bitmap);
int i = 0;
foreach (Image image in images)
{
//Save the image as jpeg.
image.Save("WordToImage_" + i + ".jpeg", ImageFormat.Jpeg);
i++;
}
}
'Load an existing Word document.
Using wordDocument As WordDocument = New WordDocument("Template.docx", FormatType.Docx)
'Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = New ChartToImageConverter()
'Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal
'Convert the entire Word document to images.
Dim images As Image() = wordDocument.RenderAsImages(ImageType.Bitmap)
Dim i = 0
For Each image As Image In images
'Save the image as jpeg.
image.Save("WordToImage_" & i & ".jpeg", ImageFormat.Jpeg)
i += 1
Next
End Using
You can download a complete working sample from GitHub.
Convert specific page of Word to image
You can convert a specific page of the Word document into an image and use it for a thumbnail. The following code example illustrates how to convert a specific page in a Word document into an image.
//Open the file as Stream.
using (FileStream docStream = new FileStream("Template.docx", FileMode.Open, FileAccess.Read))
{
//Load file stream into Word document.
using (WordDocument wordDocument = new WordDocument(docStream, FormatType.Docx))
{
//Create a new instance of DocIORenderer class.
using (DocIORenderer render = new DocIORenderer())
{
//Convert the first page of the Word document into an image.
Stream imageStream = wordDocument.RenderAsImages(0, ExportImageFormat.Jpeg);
//Reset the stream position.
imageStream.Position = 0;
//Save the stream as file.
using (FileStream fileStreamOutput = File.Create("WordToImage.jpeg"))
{
imageStream.CopyTo(fileStreamOutput);
}
}
}
}
//Load an existing Word document.
using(WordDocument wordDocument = new WordDocument("Template.docx", FormatType.Docx))
{
//Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = new ChartToImageConverter();
//Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal;
//Convert the first page of the Word document into an image.
Image image = wordDocument.RenderAsImages(0, ImageType.Bitmap);
//Save the image as jpeg.
image.Save("WordToImage.jpeg", ImageFormat.Jpeg);
}
'Load an existing Word document.
Using wordDocument As WordDocument = New WordDocument("Template.docx", FormatType.Docx)
'Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = New ChartToImageConverter()
'Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal
'Convert the first page of the Word document into an image.
Dim image As Image = wordDocument.RenderAsImages(0, ImageType.Bitmap)
'Save the image as jpeg.
image.Save("WordToImage.jpeg", ImageFormat.Jpeg)
End Using
You can download a complete working sample from GitHub.
Convert a specific range of pages in Word to images
Users can convert a specific range of pages in a Word document into images. The following code example illustrates how to convert a specific range of pages in a Word document into images.
//Open the file as Stream.
using (FileStream docStream = new FileStream("Template.docx", FileMode.Open, FileAccess.Read))
{
//Load file stream into Word document.
using (WordDocument wordDocument = new WordDocument(docStream, FormatType.Docx))
{
//Create a new instance of DocIORenderer class.
using (DocIORenderer render = new DocIORenderer())
{
//Convert a specific range of pages in Word document to images.
Stream[] imageStreams = wordDocument.RenderAsImages(1, 2);
int i = 0;
foreach (Stream stream in imageStreams)
{
//Reset the stream position.
stream.Position = 0;
//Save the stream as file.
using (FileStream fileStreamOutput = File.Create("WordToImage_" + i + ".jpeg"))
{
stream.CopyTo(fileStreamOutput);
}
i++;
}
}
}
}
//Load an existing Word document.
using(WordDocument wordDocument = new WordDocument("Template.docx", FormatType.Docx))
{
//Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = new ChartToImageConverter();
//Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal;
//Convert a specific range of pages in Word document to images.
Image[] images = wordDocument.RenderAsImages(1, 2, ImageType.Bitmap);
int i = 0;
foreach (Image image in images)
{
//Save the image as jpeg.
image.Save("WordToImage_" + i + ".jpeg", ImageFormat.Jpeg);
i++;
}
}
'Load an existing Word document.
Using wordDocument As WordDocument = New WordDocument("Template.docx", FormatType.Docx)
'Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = New ChartToImageConverter()
'Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal
'Convert the entire Word document to images.
Dim images As Image() = wordDocument.RenderAsImages(1, 2, ImageType.Bitmap)
Dim i = 0
For Each image As Image In images
'Save the image as jpeg.
image.Save("WordToImage_" & i & ".jpeg", ImageFormat.Jpeg)
i += 1
Next
End Using
You can download a complete working sample from GitHub.
TIPS
For troubleshooting issues in the .NET Word Library (DocIO), refer this article that provides comprehensive guidance on resolving common problems.
Custom image resolution
The following code snippet illustrates how to convert a Word document to an image using custom image resolution.
//DocIO only supports Word to image conversion in Windows Forms, WPF, ASP.NET and ASP.NET MVC platform.
//Load an existing Word document.
using (WordDocument wordDocument = new WordDocument(@"Template.docx", FormatType.Docx))
{
//Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = new ChartToImageConverter();
//Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal;
//Convert the word document to images.
Image[] images = wordDocument.RenderAsImages(ImageType.Metafile);
//Declare the variables to hold custom width and height.
int customWidth = 1500;
int customHeight = 1500;
foreach (Image image in images)
{
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Png);
//Create a bitmap of specific width and height.
Bitmap bitmap = new Bitmap(customWidth, customHeight, PixelFormat.Format32bppPArgb);
//Get the graphics from an image.
Graphics graphics = Graphics.FromImage(bitmap);
//Set the resolution.
bitmap.SetResolution(300, 300);
//Recreate the image in custom size.
graphics.DrawImage(System.Drawing.Image.FromStream(stream), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
//Save the image as a bitmap.
bitmap.Save(@"ImageOutput" + Guid.NewGuid().ToString() + ".png");
}
}
'Load an existing Word document.
Using wordDocument As WordDocument = New WordDocument("Template.docx", FormatType.Docx)
'Initialize the ChartToImageConverter for converting charts during Word to image conversion.
wordDocument.ChartToImageConverter = New ChartToImageConverter()
'Set the scaling mode for charts (Normal mode reduces the file size).
wordDocument.ChartToImageConverter.ScalingMode = ScalingMode.Normal
'Convert the word document to images.
Dim images() As Image = wordDocument.RenderAsImages(ImageType.Metafile)
'Declare the variables to hold custom width and height.
Dim customWidth As Integer = 1500
Dim customHeight As Integer = 1500
For Each image As Image In images
Dim stream As MemoryStream = New MemoryStream
image.Save(stream, ImageFormat.Png)
'Create a bitmap of specific width and height.
Dim bitmap As Bitmap = New Bitmap(customWidth, customHeight, PixelFormat.Format32bppPArgb)
'Get the graphics from an image.
Dim graphics As Graphics = Graphics.FromImage(bitmap)
'Set the resolution.
bitmap.SetResolution(300, 300)
'Recreate the image in custom size.
graphics.DrawImage(System.Drawing.Image.FromStream(stream), New Rectangle(0, 0, bitmap.Width, bitmap.Height))
'Save the image as a bitmap.
bitmap.Save(("ImageOutput" + (Guid.NewGuid.ToString + ".png")))
Next
End Using
You can download a complete working sample from GitHub.
Fallback fonts
During Word to Image conversions, if a glyph of the input text is unavailable in the specified font, the text will not be rendered properly. To address this, the Syncfusion Word (DocIO) library allows users to specify fallback fonts. When a glyph is missing, the library will use one of the fallback fonts to render the text correctly in the output image. For further information, click here.