Embed Images with DataURIs in C# & VB PDF Rendering

When working with HTML strings and documents it is often useful to not depend on a directory of assets. To work around this issue we use DataURIs: https://en.wikipedia.org/wiki/Data_URI_scheme

DataURIs allow images, files and even typefaces to be injected directly into a html document as a string.

Basic Image Embedding Example

The following example shows the rendering of an image into a HTML document without an asset file:


IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

var pngBinaryData =  File.ReadAllBytes("My_image.png");

var ImgDataURI = @"data:image/png;base64,"+Convert.ToBase64String(pngBinaryData);

var ImgHtml = String.Format("<img src='{0}'>", ImgDataURI);

using var pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml);

pdfdoc.SaveAs("datauri_example.pdf");

IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

var pngBinaryData =  File.ReadAllBytes("My_image.png");

var ImgDataURI = @"data:image/png;base64,"+Convert.ToBase64String(pngBinaryData);

var ImgHtml = String.Format("<img src='{0}'>", ImgDataURI);

using var pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml);

pdfdoc.SaveAs("datauri_example.pdf");
Dim Renderer As New IronPdf.ChromePdfRenderer()

Dim pngBinaryData = File.ReadAllBytes("My_image.png")

Dim ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)

Dim ImgHtml = String.Format("<img src='{0}'>", ImgDataURI)

Dim pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml)

pdfdoc.SaveAs("datauri_example.pdf")
VB   C#

System.Drawing.Image Embedding into HTML

IronPDF has a very useful method to embed a System.Drawing.Image to a HTML document which may then be rendered as a PDF.

https://ironpdf.com/object-reference/api/IronPdf.Imaging.ImageUtilities.html

string ImgDataURI =  IronPdf.Imaging.ImageUtilities.ImageToDataUri(MyImage);

var ImgHtml = String.Format("<img src='{0}'>", ImgDataURI);

using var pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml);

pdfdoc.SaveAs("datauri_example2.pdf");
string ImgDataURI =  IronPdf.Imaging.ImageUtilities.ImageToDataUri(MyImage);

var ImgHtml = String.Format("<img src='{0}'>", ImgDataURI);

using var pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml);

pdfdoc.SaveAs("datauri_example2.pdf");
Dim ImgDataURI As String = IronPdf.Imaging.ImageUtilities.ImageToDataUri(MyImage)

Dim ImgHtml = String.Format("<img src='{0}'>", ImgDataURI)

Dim pdfdoc = Renderer.RenderHtmlAsPdf(ImgHtml)

pdfdoc.SaveAs("datauri_example2.pdf")
VB   C#

We can also serve an entire HTML String or PDF document as a Byte Array to IronPDF.