QUESTIONS OR COMMENTS ABOUT PRODUCTS? WRITE US AT SUPPORT@BYTESCOUT.COM OR USE THIS FORM

Transforming XML using XSLT and PDFDoc Scout into PDF document using PDFDoc Scout library and Visual Basic .NET

How to convert XML into PDF using XSLT template transformation in Visual Basic .NET

See also XML to PDF example for VBScript (Visual Basic 6) here

See also XML to PDF example for Visual C# .NET here

This example describes how to transform XML into PDF in Visual Basic .NET using XSLT (.xsl) template and PDFDoc Scout library

Source XML data (simpsons.xml):

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="Simpsons.xsl"?>

<Simpsons>

<FamilyMember>Homer Jay Simpson</FamilyMember>

<FamilyMember>Marjorie Marge Simpson (Bouvier)</FamilyMember>

<FamilyMember>Bartholomew Jojo Bart Simpson</FamilyMember>

<FamilyMember>Lisa Marie Simpson</FamilyMember>

<FamilyMember>Margaret Maggie Simpson</FamilyMember>

<ExtendedFamilyMember>Abraham Jay Simpson</ExtendedFamilyMember>

<ExtendedFamilyMember>Mona J. Simpson</ExtendedFamilyMember>

<ExtendedFamilyMember>Jacqueline Ingrid Bouvier</ExtendedFamilyMember>

<ExtendedFamilyMember>Clancy Bouvier</ExtendedFamilyMember>

<ExtendedFamilyMember>Patricia "Patty" Bouvier</ExtendedFamilyMember>

</Simpsons>

XSLT template (simpsons.xsl):

<?xml version="1.0" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="FamilyMember">

<p><b><u><xsl:value-of select="."/></u></b></p>

</xsl:template>



<xsl:template match="ExtendedFamilyMember">

<p><i><xsl:value-of select="."/></i></p>

</xsl:template>

<xsl:template match="/">

<html>

<body>

<xsl:apply-templates/>

</body>

</html>

</xsl:template>



</xsl:stylesheet>

Produced PDF document (XML2HTML.pdf generated from source Simpsons.xml XML data)

PDF document produced from transformed XML simpsons.xml

Code of Form1.vb

<font color="black" face="Courier New" size="2"><font color="#0000ff">Imports</font> System.IO<br>
<font color="#0000ff">Imports</font> System.Xml<br>
<font color="#0000ff">Imports</font> System.Xml.XPath<br>
<font color="#0000ff">Imports</font> System.Xml.Xsl<br>
<br>
<font color="#0000ff">Public</font> <font color="#0000ff">Class</font> Form1<br>
<br>
&nbsp;&nbsp;<font color="#0000ff">Private</font> <font color="#0000ff">Sub</font> btnXMLToPDF_Click(<font color="#0000ff">ByVal</font> sender <font color="#0000ff">As</font> System.<font color="#0000ff">Object</font>, <font color="#0000ff">ByVal</font> e <font color="#0000ff">As</font> System.EventArgs) <font color="#0000ff">Handles</font> btnXMLToPDF.Click<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' Transform XML using XSLT and get HTML code</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' then create PDF document from produced HTML code</font><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">Dim</font> PDFDoc <font color="#0000ff">As</font> <font color="#0000ff">New</font> PDFDocScout.PDFDocument()<br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.InitLibrary(<font color="#a31515">"demo"</font>, <font color="#a31515">"demo"</font>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.OutputFileName = <font color="#a31515">"XML2HTML.pdf"</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.AutoOpenGeneratedPDF = <font color="#0000ff">True</font><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.BeginDocument()<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' load source XML document</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">Dim</font> xmlDoc <font color="#0000ff">As</font> <font color="#0000ff">New</font> XmlDocument()<br>
&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.Load(boxXML.Text)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">Dim</font> xslt <font color="#0000ff">As</font> <font color="#0000ff">New</font> XslCompiledTransform()<br>
&nbsp;&nbsp;&nbsp;&nbsp;xslt.Load(boxXSLT.Text)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' create XML doc to store result of transformation</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">Dim</font> objResultXML <font color="#0000ff">As</font> <font color="#0000ff">New</font> XmlDocument()<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">'Transform the XML using XLST into HTML (produced HTML is written to writer object)</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">Dim</font> writer <font color="#0000ff">As</font> <font color="#0000ff">New</font> StringWriter()<br>
&nbsp;&nbsp;&nbsp;&nbsp;xslt.Transform(<font color="#0000ff">New</font> XPathDocument(boxXML.Text), <font color="#0000ff">Nothing</font>, writer)<br>
&nbsp;&nbsp;&nbsp;&nbsp;writer.Close()<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' convert produced HTML code into PDF</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.Page.AddHTMLBox(writer.ToString(), 0, 0, PDFDoc.Page.Width, PDFDoc.Page.Height, <font color="#0000ff">True</font>)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;PDFDoc.EndDocument()<br>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">' close PDF document generation</font><br>
&nbsp;&nbsp;<font color="#0000ff">End</font> <font color="#0000ff">Sub</font><br>
<font color="#0000ff">End</font> <font color="#0000ff">Class</font></font>

 

See also XML to PDF example for VBScript (Visual Basic) here and Visual C#

Tutorials: