HTML 报告中的 JasperReports SVG 图表
JasperReports SVG chart in HTML report
当以 HTML 格式导出时,JasperReports 中的图表是否可以清晰或至少不是很模糊?
我使用 SVG 图表渲染器类型,适合 PDF 导出。 HTML 出口仍然模糊。
我尝试使用 JFreeChart 和 BatikRenderer(使用 scriptlet)以编程方式创建 SVG。我得到 SVG XML,我在 jrxml 文件中将其设置为字符串变量,并在图像元素中使用它:
<image scaleImage="FillFrame">
<reportElement positionType="Float" x="401" y="566" width="159" height="124" uuid="1baa80f7-3151-4fb8-be85-140059e9e28e"/>
<imageExpression>
<![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText($V{Chart})]]>
</imageExpression>
</image>
使用这种方法图像仍然模糊(后来我注意到 HTML 导出的所有图像资源都是 .png 格式)。
使用下面的代码仍然可以在 HTML 导出中生成 PNG 图像
net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText("<svg xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"green\" stroke-width=\"4\" fill=\"yellow\" /></svg>")
有没有办法在 Jasper 报告或任何其他解决方案中使用生成的 SVG XML 来获得 HTML 文件中图表的清晰图像?我也在考虑在带有 HTML 标记的 TextField 组件内部使用生成的 SVG XML 但我认为这对所有 HTML 标签都是不可能的,只是像 <b>
和<br>
.
从 JasperReports 6.2.2 开始,如果设置了 net.sf.jasperreports.chart.render.type=svg
,HTML 导出器将为图表元素和 BatikRenderer
图像输出 SVG。
BatikRenderer
实际上已被弃用,您可以改用 net.sf.jasperreports.renderers.SimpleDataRenderer.getInstance(byte[])
(如果您将 SVG 作为 String
,则需要传递类似 $V{Chart}.getBytes("UTF-8")
的内容).
对于旧版本,您可以通过将 net.sf.jasperreports.image.dpi
属性(在 jasperreports.properties 中)设置为 300 之类的值来提高光栅化 SVG 的质量。但这仍然不是与实际的 SVG 相同,因此请考虑升级到最新的 JasperReports。
当以 HTML 格式导出时,JasperReports 中的图表是否可以清晰或至少不是很模糊?
我使用 SVG 图表渲染器类型,适合 PDF 导出。 HTML 出口仍然模糊。
我尝试使用 JFreeChart 和 BatikRenderer(使用 scriptlet)以编程方式创建 SVG。我得到 SVG XML,我在 jrxml 文件中将其设置为字符串变量,并在图像元素中使用它:
<image scaleImage="FillFrame">
<reportElement positionType="Float" x="401" y="566" width="159" height="124" uuid="1baa80f7-3151-4fb8-be85-140059e9e28e"/>
<imageExpression>
<![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText($V{Chart})]]>
</imageExpression>
</image>
使用这种方法图像仍然模糊(后来我注意到 HTML 导出的所有图像资源都是 .png 格式)。
使用下面的代码仍然可以在 HTML 导出中生成 PNG 图像
net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText("<svg xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"green\" stroke-width=\"4\" fill=\"yellow\" /></svg>")
有没有办法在 Jasper 报告或任何其他解决方案中使用生成的 SVG XML 来获得 HTML 文件中图表的清晰图像?我也在考虑在带有 HTML 标记的 TextField 组件内部使用生成的 SVG XML 但我认为这对所有 HTML 标签都是不可能的,只是像 <b>
和<br>
.
从 JasperReports 6.2.2 开始,如果设置了 net.sf.jasperreports.chart.render.type=svg
,HTML 导出器将为图表元素和 BatikRenderer
图像输出 SVG。
BatikRenderer
实际上已被弃用,您可以改用 net.sf.jasperreports.renderers.SimpleDataRenderer.getInstance(byte[])
(如果您将 SVG 作为 String
,则需要传递类似 $V{Chart}.getBytes("UTF-8")
的内容).
对于旧版本,您可以通过将 net.sf.jasperreports.image.dpi
属性(在 jasperreports.properties 中)设置为 300 之类的值来提高光栅化 SVG 的质量。但这仍然不是与实际的 SVG 相同,因此请考虑升级到最新的 JasperReports。