IUriProvider Interface
Defines the provider of the locations for external objects in a document export.
Namespace: DevExpress.Office.Services
Assembly: DevExpress.Office.v19.1.Core.dll
Declaration
Remarks
When the document is exported to a format that implies that a part of the document’s content is located externally, such as HTML format, the IUriProvider interface provides Uniform Resource Identifiers (URI) for the external objects. The IUriProvider.CreateCssUri method processes the style information , and the IUriProvider.CreateImageUri processes images.
Tip
The SubDocument.GetHtmlText method has a parameter that is an object with the IUriProvider interface.
Example
This example demonstrates how to use the DocumentImage.Uri property to set the image’s src attribute when a document is saved in HTML format. You can switch on the HtmlDocumentExporterOptions.EmbedImages option to observe that the custom URI provider is idle for embedded images.
Note
The complete sample project How to retain the original image URI in an HTML document is available in the DevExpress Examples repository.
using DevExpress.Office.Services;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.XtraRichEdit.Export;
using System;
// ...
private void richEditControl1_DocumentLoaded(object sender, EventArgs e)
{
IUriProviderService service = richEditControl1.GetService<IUriProviderService>();
if (service != null) {
service.RegisterProvider(new CustomUriProvider());
}
}
private void richEditControl1_ContentChanged(object sender, EventArgs e)
{
ReloadHtml();
}
private void ReloadHtml()
{
HtmlDocumentExporterOptions exportOptions = new HtmlDocumentExporterOptions();
exportOptions.EmbedImages = embedImagesCheck.Checked;
string sText = richEditControl1.Document.GetHtmlText(richEditControl1.Document.Range, new CustomUriProvider(), exportOptions);
memoEdit1.Text = sText;
}
Related GitHub Examples
The following code snippets (auto-collected from DevExpress Examples) contain references to the IUriProvider interface.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.