Please can someone provide me with a simple example of converting a file from HTML to PDF in VB? I can find Java and C# examples but nothing using VB.
Asked
Active
Viewed 544 times
-2
-
2Unless the C# is doing something interesting, it should translate directly to VB. I'd suggest that you try translating a C# example and update your question with any details that cause problems. – Craig Sep 21 '22 at 16:32
1 Answers
0
The following shows how to use NuGet packages iText7
and itext7.pdfhtml
to convert HTML to a PDF file.
VS 2022:
- Open Visual Studio 2022
- Click
- Click File
- Select New
- Select Project
- For filter, select:
- Click Next
- Enter desired project name (ex: ConvertHtmlToPdfTest)
- Select desired .NET Framework (ex: .NET Framework 4.8)
- Click Create
Open Toolbox:
- In VS menu, click View
- Select Toolbox
Open Solution Explorer:
- In VS menu, click View
- Select Solution Explorer
Open Properties Window
- In VS menu, click View
- Select Properties Window
Set Default package management format (optional)
- In VS menu, click Tools
- Select Options...
- Expand NuGet Package Manager
- Select General
- Under "Package Management", set Default package management format to PackageReference
- Click OK
Download/install NuGet package (iText7):
- In Solution Explorer, right-click <project name> (ex: ConvertHtmlToPdfTest)
- Select Manage NuGet Packages...
- Click Browse tab
- In the search box type: iText7
- Select iText7
- Select desired version (ex: 7.2.3)
- Click Install
- If a MessageBox appears, click OK
Download/install NuGet package (iText7.pdfhtml):
- In Solution Explorer, right-click <project name> (ex: ConvertHtmlToPdfTest)
- Select Manage NuGet Packages...
- Click Browse tab
- In the search box type: iText7.pdfhtml
- Select iText7.pdfhtml
- Select desired version (ex: 4.0.3)
- Click Install
- If a MessageBox appears, click OK
Add a module: (name: HelperiText7.vb)
- In VS menu, click Project
- Select Add New Item...
- Select Module (name: HelperiText7.vb)
- Click Add
HelperiText7.vb:
Imports System.IO
Imports iText.Html2pdf
Module HelperiText7
Public Sub CreatePdf(htmlFilename As String, pdfFilename As String, Optional baseUri As String = Nothing)
Dim pdfData As Byte() = Nothing
If Not File.Exists(htmlFilename) Then
Throw New Exception($"Error: '{htmlFilename}' doesn't exist.")
End If
Using fs As FileStream = New FileStream(htmlFilename, FileMode.Open, FileAccess.Read)
Using ms As MemoryStream = New MemoryStream()
'when specifying HTML as a string And the HTML includes
'a resource that uses relative paths,
'it's necessary to specify the baseUri (path)
'create new instance
Dim properties As ConverterProperties = New ConverterProperties()
If Not String.IsNullOrEmpty(baseUri) Then
'set value
properties.SetBaseUri(baseUri)
Else
'get folder name that HTML file exists in
Dim folderName As String = Path.GetDirectoryName(htmlFilename)
'set value
properties.SetBaseUri(folderName)
End If
'Debug.WriteLine($"BaseURI: {properties.GetBaseUri()}")
'convert HTML to PDF
HtmlConverter.ConvertToPdf(fs, ms, properties)
'save to Byte()
pdfData = ms.ToArray()
End Using
'save to PDF file
File.WriteAllBytes(pdfFilename, pdfData)
End Using
End Sub
Public Sub CreatePdfFromHtmlString(htmlString As String, pdfFilename As String, baseUri As String)
Dim pdfData As Byte() = Nothing
Using ms As MemoryStream = New MemoryStream()
'when specifying HTML as a string And the HTML includes
'a resource that uses relative paths,
'it's necessary to specify the baseUri (path)
'create new instance
Dim properties As ConverterProperties = New ConverterProperties()
'set value
properties.SetBaseUri(baseUri)
'convert HTML to PDF
HtmlConverter.ConvertToPdf(htmlString, ms, properties)
'save to Byte()
pdfData = ms.ToArray()
End Using
'save to PDF file
File.WriteAllBytes(pdfFilename, pdfData)
End Sub
End Module
For testing, I used the following:
test.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h2>HTML Test</h2>
<div>
<IMG src="./images/strawberry.jpg" ALT="strawberry">
</div>
<p>
<div>
This is a test message
</div>
</body>
</html>
Note: In the HTML above, the image uses a relative path.
File/Folder structure:
The following demonstrates converting test.html
to a PDF file.
Using ofd As OpenFileDialog = New OpenFileDialog()
ofd.Filter = "HTML File (*.html)|*.html"
ofd.Title = "Select HTML Filename"
If ofd.ShowDialog() = DialogResult.OK Then
Using sfd As SaveFileDialog = New SaveFileDialog()
sfd.Filter = "PDF File (*.pdf)|*.pdf"
sfd.Title = "Select PDF Filename To Save As"
If sfd.ShowDialog() = DialogResult.OK Then
'the image in the HTML uses a relative path
'set baseUri = to the folder that contains the HTML file
Dim baseUri As String = Path.GetDirectoryName(ofd.FileName)
Debug.WriteLine($"baseUri: {baseUri}")
'convert HTML to PDF
HelperiText7.CreatePdf(ofd.FileName, sfd.FileName, baseUri)
End If
End Using
End If
End Using
Resources:
- pdfHTML: configuration options
- Hello HTML to PDF
- how to set baseuri in converterproperties in itext7 html to pdf converter
- Itext7 HtmlConverter does not display gif
Additional Resources:

Tu deschizi eu inchid
- 4,117
- 3
- 13
- 24