Export Document Images to HTML
- 3 minutes to read
When you save a document as HTML, you can export images within the document as follows:
Embed images into an HTML file as Base64-encoded data.
<img src="data:image/png;base64,,iVBORw0KGgoAAAANSUhEUgAAAQQAAA<!-- base64 data -->" width="260" height="90" alt="" style="border-width:0px;" />
Save images as separate files. Each image is named with the word “image” followed by the image’s sequential number in the document. Images are saved to a folder with the name that combines the file name, an underscore, and the word “files”. For example, the first PNG image in a Test.html file is saved to Test_files\image0.png.
<img src="test_files/image0.png" alt="" style="border-width:0px;" />
Different HTML export methods produce different results, as shown in the following table:
Export | Result |
---|---|
Rich |
Images are stored in the resulting HTML file as Base64-encoded data. |
Sub |
The Html |
Rich |
The Html |
Note
Rich
always loads images synchronously.
The HTML exporter uses a URI provider to create a URI for each image. The RichEditDocumentServer uses the following built-in URI providers:
FileBasedUriProvider - generates URIs for external images and style sheets;
DataStringUriProvider - embeds images as Base64-encoded data.
The built-in URI provider service (a service that implements the IUriProviderService interface) calls these providers when needed and allows you to register a custom provider (see the IUriProviderService.RegisterProvider method).
#Retain an Image URI in an HTML Document
The example below implements and registers a custom IUriProvider to save the original image URI (OfficeImage.Uri) to the exported HTML document.
using DevExpress.Office.Services;
using DevExpress.Office.Utils;
using System;
public class CustomUriProvider : IUriProvider
{
public string CreateCssUri(string rootUri, string styleText, string relativeUri)
{
return String.Empty;
}
public string CreateImageUri(string rootUri, OfficeImage image, string relativeUri)
{
return image.Uri;
}
}
private void wordProcessor_DocumentLoaded(object sender, EventArgs e)
{
IUriProviderService service = wordProcessor.GetService<IUriProviderService>();
if (service != null)
{
service.RegisterProvider(new CustomUriProvider());
}
}