Jump to content

[SOLVED] SVG is not rendered


rucksman007

Recommended Posts

I made a report with iReport 5.0.1, and after I checked "Force SVG Shapes" in the PDF export options, the SVG shapes are rendered as they should when generating the report as PDF. BUT: When I deployed the report to the Jasperserver from within iReport, the Report is stopped being rendered with an error.

The Expression I use in iReport (which works) is (for some reason the code here in this editor is converted into html, so I changed the brackets into round ones):

            (image)
                (reportElement uuid="6d70bf5f-9652-4df1-9715-16de7fdffd1e" x="0" y="0" width="78" height="33"/)
                (imageExpression class="net.sf.jasperreports.engine.JRRenderable")(![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("Z:\jaspersoft\reports\logo.svg"))]])(/imageExpression)
            (/image)

On the server I changed the path to "repo:logo.svg" and uploaded the SVG via iReport into the resources folder. The error I get is:
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
        Source text : net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("repo:logo_de.svg"))
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
        at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:966)
        at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:483)
        at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:463)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:859)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:821)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1622)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1005)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:881)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: net.sf.jasperreports.engine.JRException: Error loading byte data : repo:logo_de.svg
        at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:419)
        at net.sf.jasperreports.renderers.BatikRenderer.getInstance(BatikRenderer.java:318)
        at net.sf.jasperreports.renderers.BatikRenderer$getInstance.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at report3_1359470066359_298192.evaluate(calculator_report3_1359470066359_298192:199)
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
        ... 22 more
Caused by: java.io.FileNotFoundException: repo:logo_de.svg (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.(FileInputStream.java:106)
        at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:405)
        ... 29 more
2013-01-29 15:34:28,714 ERROR errorPage_jsp,http-8080-20:487 - stack trace of exception that redirected to errorPage.jsp
com.jaspersoft.jasperserver.api.JSException: Error filling report
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$FillResultListener.reportFillError(EngineServiceImpl.java:1178)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.notifyError(BaseFillHandle.java:211)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:135)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:859)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:821)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1622)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1005)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:881)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
        Source text : net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("repo:logo_de.svg"))
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
        at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
        at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:966)
        at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:483)
        at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:463)
        at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
        at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)
        ... 9 more
Caused by: net.sf.jasperreports.engine.JRException: Error loading byte data : repo:logo_de.svg
        at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:419)
        at net.sf.jasperreports.renderers.BatikRenderer.getInstance(BatikRenderer.java:318)
        at net.sf.jasperreports.renderers.BatikRenderer$getInstance.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at report3_1359470066359_298192.evaluate(calculator_report3_1359470066359_298192:199)
        at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
        ... 22 more
Caused by: java.io.FileNotFoundException: repo:logo_de.svg (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.(FileInputStream.java:106)
        at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:405)
        ... 29 more
 

What goes wrong here???

Link to comment
Share on other sites

  • Replies 5
  • Created
  • Last Reply

Top Posters In This Topic

Finally I was able to solve this problem. Not the way I wanted to, but in the end this solution works for me. Instead of "new java.io.File" I am using now "new java.net.URL" and point to a web directory on my localhost (a regular apache webserver is running anyway on my jasperserver machine). So the complete string is:

new java.net.URL("http://localhost/jaspersoft/logo.svg")

Link to comment
Share on other sites

  • 9 months later...

If you use

 net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromLocation("./image/logo.svg")<imageExpression><![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromLocation("./image/logo.svg")]]></imageExpression> [/code]

instead of

net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("Z:\jaspersoft\reports\logo.svg"))[/code]

you can use relative path. Since the absolut path could eventually not found after deployment to any render server.

 

 

Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...

Hi all,

I have used this code to add SVG image in iReport but I have an error which says "Error displaying report page.See the console for details". The problem is nothing is displayed in the console. Can any one help me?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...