【问题标题】:SVG markup in PDF as generated from Jasper Reports从 Jasper Reports 生成的 PDF 中的 SVG 标记
【发布时间】:2015-07-29 13:07:27
【问题描述】:

问题陈述

我有一个从前端 javascript 发送到后端操作类的 SVG 标记。我正在使用 Jasper Reports 生成包含 SVG 图像的 PDF(我只有标记数据)。我该怎么做。

我的尝试

我尝试在生成报告时将 SVG 图像(具有图像文件的链接)嵌入到 PDF 文件中。

正在寻找

如何嵌入 svg 标记以便我可以在 PDF 中看到图像。任何其他解决问题的最佳方法。

【问题讨论】:

    标签: java pdf svg jasper-reports


    【解决方案1】:

    在更高版本的 jasper 报告中,您不再需要将 class="net.sf.jasperreports.engine.JRRenderable" 添加到 imageExpression。

    它是 JasperReports 6+ 中的默认设置,如果您在 Source 窗格中添加它,JasperSoftStudio (JSS) 将删除它。

    JasperSoft 社区答案中提供的 Tomcat SVG 文件效果很好。我自己的 SVG 文件可以在 MS Edge 或 Chrome 中正确显示,但没有出现在 JSS 中。

    当我向 svg 元素添加 width, height, viewboxoverflow 属性时,它确实出现在 JSS 中 - 所以先尝试示例,然后再尝试您真正想要的 svg。

    【讨论】:

    • 请考虑在上述答案中为您的代码使用代码符号。
    【解决方案2】:

    由于问题表明 不存在 SVG 标记 文件,您可以坚持 David van Driessche 的答案,但使用不同的 getter:

    BatikRenderer.getInstanceFromText($P{svgMarkup}) 例如,其中svgMarkup 是包含 SVG 标记数据的 String 类型的参数。

    【讨论】:

    • 我必须在参数中为 svg 代码转义所有“吗?它会引发错误。请分享参数示例
    • @DavidDunham 因为BatikRendererdeprecated,建议研究一种不同的方法。如果您遇到异常,请尝试在 WAN 中查找答案或提出问题,包括您的源代码和完整的异常堆栈跟踪。
    • 我使用 jaspersoft 6.5.1,如果没有 BatikRenderer,SVG 不会显示。我应该使用什么?如果我将“jasperreports.renderers.BatikRenderer”替换为“jasperreports.renderers.ResourceRenderer”,则图形不会显示
    • @DavidDunham 最好的做法是发布一个全新的 StackOverflow 问题,包括 minimal reproducible example 以及 StackTraces 的期望和精确的问题描述,因为很难从这个有限的范围内了解您在做什么评论区就在这里。
    • 是的,但是使用 Batik / ResourceRenderer 时输出为 0,控制台中没有错误,所以它甚至没有为我指明正确的方向......(图形只是没有显示以后使用时起来)
    【解决方案3】:

    根据他们自己的网站(此处: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> 
    

    【讨论】:

    • 是的,您再次直接添加了一个 SVG 文件。那么我是否需要根据从前端收到的 SVG 标记创建一个 SVG 图像文件并存储在临时位置以按照建议的方式引用它?
    • 不,您只需将 svg 标记文件交给它,正如答案已经表明的那样。
    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 2012-09-08
    • 2021-01-30
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多