I have a requirement to crate a PDF of XML Records. I think there is no way to directly create pdf from xml but using XSLT or XSL FO i believe it can be done. I have been reading lots of articles searching for the good way to do that using C#.
--> What's the best approach of during this? any example would really be great.
My Scenario:
I have XML that looks like:
<Products>
<Brand name="Test">
<Quantity value="2/>
<Price value="$20"/>
</Brand>
<Brand name="Test2">
<Quantity value="3/>
<Price value="$30"/>
</Brand>
<Brand name="Test3">
<Quantity value="4/>
<Price value="$40"/>
</Brand>
</Products>
How can i create a pdf that will have a table showing all this information?
I know there are lots of similar questions like this but most of them are outdated. Any help really appreciated.
In the past I've used a commercial library called Ibex PDF Creator to generate PDF documents from XML data using the XSL-FO standard that has worked really well.
Here's an example of how I would use it:
XML data:
<DocumentRoot>
<!-- Some content -->
</DocumentRoot>
XSL-FO layout:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/DocumentRoot">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ibex="http://www.xmlpdf.com/2003/ibex/Format">
<ibex:properties
title="Some document"
subject=""
author=""
keywords=""
creator="" />
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-width="210mm" page-height="297mm">
<fo:region-body margin-bottom="1cm" margin-top="3cm"/>
<fo:region-before extent="20mm"/>
<fo:region-after extent="8mm"/>
<fo:region-start extent="1mm"/>
<fo:region-end extent="1mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
</<fo:root>
</xsl:template>
</xsl:stylesheet>
Generating the PDF document in .NET:
var data = new MemoryStream(dataBytes);
var layout = new MemoryStream(layoutBytes);
var pdf = new MemoryStream();
// Using the Ibex PDF Creator .NET API
var doc = new FODocument();
doc.generate(data, layout, pdf);
I hope this helps.