HTML Converter Base Tags
You are not limited to converting HTML from a URL, a local directory, or an HTML string. You can also combine all three if you convert using base tags.
If combining local HTML resources with web resources (i.e. URL) you must use a base tag.
The Converter.Convert
method is overloaded to allow specifying a base URL.
public static void Convert(string inputHtml, string
outputPath, [Uri basePath = null], [ConversionOptions
conversionOptions = null])
public static Byte[] Convert(string inputHtml, [Uri
basePath = null], [ConversionOptions
conversionOptions = null])
Shared Sub Convert(inputHtml As String, outputPath As String, Optional basePath As Uri = null, Optional conversionOptions As ConversionOptions = null)
Shared Function Convert(inputHtml As String, Optional basePath As Uri = null, Optional conversionOptions As ConversionOptions = null) As Byte()
The Converter.ConvertAsync
method is also overloaded to allow specifying a base URL.
public static Task<bool> ConvertAsync(string inputHtml,
string outputPath, [Uri basePath = null],
[ConversionOptions conversionOptions = null])
public static Task<Byte[]> ConvertAsync(string inputHtml,
[Uri basePath = null], [ConversionOptions
conversionOptions = null])
Shared Function ConvertAsync(inputHtml As String, outputPath
As String, Optional basePath As Uri = null, Optional
conversionOptions As ConversionOptions = null) As Task(Of Boolean)
Shared Function ConvertAsync(inputHtml As String, Optional basePath As Uri = null, Optional conversionOptions As ConversionOptions = null) As Task(Of Byte())
The overloaded Converter
functions that take a URL as input do not allow specifying a base path. A workaround is to first load the HTML file as a string or specify the base path in the HTML's header (see below).
Image from URL and HTML
In this example the HTML is a string with a relative path to an image. The images resides on an external website.
public static void ImageRun()
{
Uri baseUrl = new Uri("https://www.dynamicpdf.com/");
string html = "<body><p>This is local HTML string.</p>"
+ "<img src=\"./images/logo.png\"></body>";
Converter.Convert(html, outputPath), baseUrl);
}
Public Shared Sub ImageRun()
Dim baseUrl As New Uri("https://www.dynamicpdf.com/")
Dim html As String = "<body><p>This is local HTML
string.</p>" &
"<img src=""./images/logo.png""></body>"
Converter.Convert(html, outputPath, baseUrl)
End Sub
Image From URL and Local File
Recall that when converting using a URI, there is no option for specifying a base path in the Convert method. The following two examples illustrate first reading the file as a string and using the string as the method's input. The second example illustrates using the HTML base tag.
Reading File Content
The following example illustrates reading an HTML file into a string and using it with a base path. Note that the HTML does not specify a basepath.
<html>
<body>
<p>This is local HTML string.</p>
<img src="./images/logo.png">
</body>
</html>
public static void ImageFileHtmlRun()
{
Uri baseUrl = new Uri("https://www.dynamicpdf.com/");
string html = File.ReadAllText("simple.html");
Converter.Convert(html, outputPath, baseUrl);
}
Public Shared Sub ImageFileHtmlRun()
Dim baseUrl As New Uri("https://www.dynamicpdf.com/")
Dim html As String = File.ReadAllText("simple.html")
Converter.Convert(html, outputPath, baseUrl)
End Sub
Using base HTML Tag
Another option for resolving relative paths is to specify the base reference in the HTML file's header. The following example illustrates.
<html>
<head>
<base href="https://www.dynamicpdf.com/" target="_blank">
</head>
<body>
<p>This is local HTML string.</p>
<img src="./images/logo.png">
</body>
</html>
public static void FromFile()
{
Uri uri = new Uri(new Uri("file://"), "simple2.html"));
Converter.Convert(uri,outputPath);
}
Public Shared Sub ImageFileRun()
Dim uri As New Uri(New Uri("file://"), "simple2.html")
Converter.Convert(uri, outputPath)
End Sub
See HTML Converter Local Resources for more examples using a base path.