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")
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")
We can also serve an entire HTML String or PDF document as a Byte Array to IronPDF.