<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog @ SIB Visions &#187; JasperReports</title>
	<atom:link href="http://blog.sibvisions.com/tag/jasperreports/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sibvisions.com</link>
	<description>Blog @ SIB Visions</description>
	<lastBuildDate>Fri, 24 Apr 2026 07:44:44 +0000</lastBuildDate>
		<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Jasperreports integration</title>
		<link>https://blog.sibvisions.com/2017/01/10/jasperreports-integration/</link>
		<comments>https://blog.sibvisions.com/2017/01/10/jasperreports-integration/#comments</comments>
		<pubDate>Tue, 10 Jan 2017 22:01:04 +0000</pubDate>
		<dc:creator>rjahn</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[JasperReports]]></category>
		<category><![CDATA[JVx]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=6270</guid>
		<description><![CDATA[Jasperreports is a wonderful Reporting library/product. It's OpenSource and great for commercial products. There are several products like JasperReports Server and Jaspersoft Studio. Especially the Jaspersoft Studio is very useful for creating reports with a WYSIWYG editor. Simply use the tool and create your reports.
The most insteresting part is the integration of Jasperreports in a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://community.jaspersoft.com/">Jasperreports</a> is a wonderful Reporting library/product. It's OpenSource and great for commercial products. There are several products like <a href="http://community.jaspersoft.com/project/jasperreports-server">JasperReports Server</a> and <a href="http://community.jaspersoft.com/project/jaspersoft-studio">Jaspersoft Studio</a>. Especially the Jaspersoft Studio is very useful for creating reports with a WYSIWYG editor. Simply use the tool and create your reports.</p>
<p>The most insteresting part is the integration of Jasperreports in a JVx application. It's super easy to start Jasperreports programmatically:</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;"><span class="co1">//database connection</span><br />
DBAccess dba <span class="sy0">=</span> DBAccess.<span class="me1">getDBAccess</span><span class="br0">&#40;</span><span class="st0">&quot;jdbc:hsqldb:hsql://localhost/personsdb&quot;</span>, <span class="st0">&quot;sa&quot;</span>, <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
dba.<span class="me1">open</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>HashMap<span class="sy0">&lt;</span>String, Object<span class="sy0">&gt;</span> hmpParams <span class="sy0">=</span> <span class="kw1">new</span> HashMap<span class="sy0">&lt;</span>String, Object<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
hmpParams.<span class="me1">put</span><span class="br0">&#40;</span><span class="st0">&quot;ID&quot;</span> , <span class="kw3">Integer</span>.<span class="me1">valueOf</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="co1">//external connection as parameter</span><br />
hmpParams.<span class="me1">put</span><span class="br0">&#40;</span><span class="st0">&quot;REPORT_CONNECTION&quot;</span>, dba.<span class="me1">getConnection</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// String</span></p>
<p><span class="co1">// compile report</span><br />
JasperReport jasperReport <span class="sy0">=</span> JasperCompileManager.<span class="me1">compileReport</span><span class="br0">&#40;</span>ResourceUtil.<span class="me1">getResourceAsStream</span><span class="br0">&#40;</span><span class="st0">&quot;Leaf_Grey.jrxml&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp;<br />
<span class="co1">// fill report (connection as parameter)</span><br />
JasperPrint jasperPrint <span class="sy0">=</span> JasperFillManager.<span class="me1">fillReport</span><span class="br0">&#40;</span>jasperReport, hmpParams<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="co1">// fill report (hardcoded connection)</span><br />
<span class="co1">//JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hmpParams, dba.getConnection());</span><br />
&nbsp;<br />
<span class="kw3">File</span> fiPdf <span class="sy0">=</span> <span class="kw3">File</span>.<span class="me1">createTempFile</span><span class="br0">&#40;</span><span class="st0">&quot;report&quot;</span>, <span class="st0">&quot;.pdf&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> </p>
<p><span class="co1">// export report to PDF</span><br />
JasperExportManager.<span class="me1">exportReportToPdfFile</span><span class="br0">&#40;</span>jasperPrint, fiPdf.<span class="me1">getAbsolutePath</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// JVx usage</span><br />
RemoteFileHandle rfh <span class="sy0">=</span> <span class="kw1">new</span> RemoteFileHandle<span class="br0">&#40;</span>fiPdf<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// open with PDF viewer</span><br />
<span class="co1">//FileViewer.open(fiPdf);</span></div>
</div>
<p>Our example was created with Jasperreports 6.3.1. The library has some dependencies:</p>
<ul>
<li>Apache Commons Logging</li>
<li>Apache Commons Digester 2</li>
<li>Apache Commons Collections</li>
<li>Apache Commons BeanUtils</li>
<li>iText 2.1.7 (unpatched) or iText 2.1.7.js5 (jaspersoft patched)</li>
</ul>
<p>A complete Eclipse example project can be found <a href="http://blog.sibvisions.com/wp-content/uploads/2017/01/JasperReports.zip">here</a>. It connects to a HSQLDB with following tables:</p>
<div class="codesnip-container" >
<div class="sql codesnip" style="font-family:monospace;"><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> POSTLEITZAHLEN<br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;PLZ VARCHAR<span class="br0">&#40;</span>5<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;ORT VARCHAR<span class="br0">&#40;</span>100<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT UK_POST_PLZ_ORT <span class="kw1">UNIQUE</span><span class="br0">&#40;</span>PLZ<span class="sy0">,</span> ORT<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></p>
<p><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> STRASSEN<br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;NAME VARCHAR<span class="br0">&#40;</span>200<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT UK_STRA_NAME <span class="kw1">UNIQUE</span><span class="br0">&#40;</span>NAME<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></p>
<p><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> ADRESSEN<br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;POST_ID INTEGER <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;STRA_ID INTEGER <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;HAUSNUMMER INTEGER <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;STIEGE INTEGER<span class="sy0">,</span><br />
&nbsp;TUERNUMMER INTEGER<span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_ADRE_POST_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>POST_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> POSTLEITZAHLEN <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_ADRE_STRA_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>STRA_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> STRASSEN <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></p>
<p><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> ANREDEN<br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;BEZEICHNUNG VARCHAR<span class="br0">&#40;</span>20<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT UK_ANRE_BEZEICHNUNG <span class="kw1">UNIQUE</span><span class="br0">&#40;</span>BEZEICHNUNG<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></p>
<p><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> TITEL<br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;BEZEICHNUNG VARCHAR<span class="br0">&#40;</span>20<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT UK_TITE_BEZEICHNUNG <span class="kw1">UNIQUE</span><span class="br0">&#40;</span>BEZEICHNUNG<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></p>
<p><span class="kw1">CREATE</span> CACHED <span class="kw1">TABLE</span> PERSONEN <br />
<span class="br0">&#40;</span><br />
&nbsp;ID INTEGER IDENTITY<span class="sy0">,</span><br />
&nbsp;PERS_ID INTEGER<span class="sy0">,</span><br />
&nbsp;ANRE_ID INTEGER <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;TITE_ID INTEGER<span class="sy0">,</span><br />
&nbsp;ADRE_ID INTEGER<span class="sy0">,</span><br />
&nbsp;VORNAME VARCHAR<span class="br0">&#40;</span>100<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;NACHNAME VARCHAR<span class="br0">&#40;</span>100<span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;GEBDAT DATE <span class="kw1">NOT</span> <span class="kw1">NULL</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_PERS_ANRE_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>ANRE_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> ANREDEN <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_PERS_TITE_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>TITE_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> TITEL <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_PERS_PERS_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>PERS_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> PERSONEN <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp;CONSTRAINT FK_PERS_ADRE_ID <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>ADRE_ID<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> ADRESSEN <span class="br0">&#40;</span>ID<span class="br0">&#41;</span><br />
<span class="br0">&#41;</span></div>
</div>
<p>The final step for the integration into a JVx application is the integration in a life-cycle object, e.g.</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;"><span class="kw1">public</span> IFileHandle createReport<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">throws</span> <span class="kw3">Exception</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; JasperReport jasperReport <span class="sy0">=</span> JasperCompileManager.<span class="me1">compileReport</span><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ResourceUtil.<span class="me1">getResourceAsStream</span><span class="br0">&#40;</span><span class="st0">&quot;person.jrxml&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; JasperPrint jasperPrint <span class="sy0">=</span> JasperFillManager.<span class="me1">fillReport</span><span class="br0">&#40;</span>jasperReport, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">null</span>, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getDBAccess<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getConnection</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span class="kw3">File</span> fiPdf <span class="sy0">=</span> <span class="kw3">File</span>.<span class="me1">createTempFile</span><span class="br0">&#40;</span><span class="st0">&quot;report&quot;</span>, <span class="st0">&quot;.pdf&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co1">// export report to PDF</span><br />
&nbsp; &nbsp; JasperExportManager.<span class="me1">exportReportToPdfFile</span><span class="br0">&#40;</span>jasperPrint, fiPdf.<span class="me1">getAbsolutePath</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">new</span> RemoteFileHandle<span class="br0">&#40;</span>fiPdf<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2017/01/10/jasperreports-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
