Transforming XML using XSLT and PDFDoc Scout into PDF document using PDFDoc Scout library and Visual C#

How to convert XML into PDF using XSLT template transformation in Visual C#

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

You can download the source code of this example (Visual C#) here:
pdfdocscout_xml_xslt_transformation_example_csharp.zip

This example describes how to transform XML into PDF in Visual C# using XSLT (.xsl) template using 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.cs

<font color="black" face="Courier New" size="2"><font color="#0000ff">using</font> System;<br>
<font color="#0000ff">using</font> System.Collections.<font color="#2b91af">Generic</font>;<br>
<font color="#0000ff">using</font> System.ComponentModel;<br>
<font color="#0000ff">using</font> System.Data;<br>
<font color="#0000ff">using</font> System.Drawing;<br>
<font color="#0000ff">using</font> System.Text;<br>
<font color="#0000ff">using</font> System.Windows.Forms;<br>
<font color="#0000ff">using</font> System.IO;<br>
<font color="#0000ff">using</font> System.Xml;<br>
<font color="#0000ff">using</font> System.Xml.XPath;<br>
<font color="#0000ff">using</font> System.Xml.Xsl;<br>
<br>
<br>
<font color="#0000ff">namespace</font> XMLtoPDFUsingPDFDocScout<br>
{<br>
<font color="#0000ff">public</font> <font color="#0000ff">partial</font> <font color="#0000ff">class</font> Form1 : Form<br>
{<br>
<font color="#0000ff">public</font> Form1()<br>
{<br>
InitializeComponent();<br>
}<br>
<br>
<br>
<font color="#0000ff">private</font> <font color="#0000ff">void</font> btnXMLToPDF_Click(<font color="#0000ff">object</font> sender, <font color="#2b91af">EventArgs</font> e)<br>
{<br>
<font color="#008000">// Transform XML using XSLT and get HTML code</font><br>
<font color="#008000">// then create PDF document from produced HTML code</font><br>
<br>
PDFDocScout.PDFDocument PDFDoc = <font color="#0000ff">new</font> PDFDocScout.PDFDocument();<br>
PDFDoc.InitLibrary (<font color="#a31515">"demo"</font>, <font color="#a31515">"demo"</font>);<br>
PDFDoc.OutputFileName = <font color="#a31515">"XML2HTML.pdf"</font>;<br>
PDFDoc.AutoOpenGeneratedPDF = <font color="#0000ff">true</font>;<br>
<br>
PDFDoc.BeginDocument();<br>
<br>
<font color="#008000">// load source XML document</font><br>
<font color="#2b91af">XmlDocument</font> xmlDoc = <font color="#0000ff">new</font> <font color="#2b91af">XmlDocument</font>();<br>
xmlDoc.Load(boxXML.Text);<br>
<br>
XslCompiledTransform xslt = <font color="#0000ff">new</font> XslCompiledTransform();<br>
xslt.Load(boxXSLT.Text);<br>
<br>
<font color="#008000">// create XML doc to store result of transformation</font><br>
<font color="#2b91af">XmlDocument</font> objResultXML = <font color="#0000ff">new</font> <font color="#2b91af">XmlDocument</font>();<br>
<br>
<font color="#008000">//Transform the XML using XLST into HTML (produced HTML is written to writer object)</font><br>
<font color="#2b91af">StringWriter</font> writer = <font color="#0000ff">new</font> <font color="#2b91af">StringWriter</font>();<br>
xslt.Transform(<font color="#0000ff">new</font> XPathDocument(boxXML.Text), <font color="#0000ff">null</font>, writer);<br>
writer.Close();<br>
<br>
<font color="#008000">// convert produced HTML code into PDF</font><br>
PDFDoc.<font color="#2b91af">Page</font>.AddHTMLBox (writer.ToString(), 0,0, PDFDoc.<font color="#2b91af">Page</font>.Width, PDFDoc.<font color="#2b91af">Page</font>.Height, <font color="#0000ff">true</font>);<br>
<br>
PDFDoc.EndDocument(); <font color="#008000">// close PDF document generation</font><br>
<br>
}<br>
}<br>
}</font><br>

You can download the source code of this example (Visual C#) here:
pdfdocscout_xml_xslt_transformation_example_csharp.zip

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

Filed in: PDFDoc Scout SDK

Tutorials: