问题陈述
我有一个从前端javascript发送到后端动作类的SVG标记。我正在使用Jasper Reports生成包含SVG图像的PDF(我只有标记数据)。我该怎么做。
我尝试了什么
我试图在生成报告时将SVG图像(具有图像文件的链接)嵌入到PDF文件中。
寻找
如何嵌入svg标记,以便我可以在PDF中看到图像。任何其他最好的方法来解决它。
答案 0 :(得分:0)
根据他们自己的网站(此处:http://community.jaspersoft.com/wiki/how-add-svg-image-your-report-jrxml),您需要使用特殊的HTML元素包含SVG:
<imageExpression class="net.sf.jasperreports.engine.JRRenderable">
<![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("D:\\tomcat.svg"))]]>
</imageExpression>
答案 1 :(得分:0)
由于问题表明SVG标记文件的缺席,您可以坚持David van Driessche的答案,但使用不同的getter:
BatikRenderer.getInstanceFromText($P{svgMarkup})
例如,其中svgMarkup
是包含SVG标记数据的String
类型的参数。
答案 2 :(得分:0)
在更高版本的jasper报告中,您不再需要向imageExpression添加class="net.sf.jasperreports.engine.JRRenderable"
。
这是JasperReports 6+中的默认设置,如果您在“源”窗格中将其添加,JasperSoftStudio(JSS)将删除它。
JasperSoft社区答案中提供的Tomcat SVG文件效果很好。我自己的SVG文件可以在MS Edge或Chrome中正常显示,但不会在JSS中显示。
当我向svg元素添加width, height, viewbox
和overflow
属性时,它确实出现在JSS中-因此,请首先尝试示例,然后再尝试实际想要的svg。