当前位置: 首页 > 知识库问答 >
问题:

JasperReports-如何在Java中使用远程JSON数据报告运行报告

宇文航
2023-03-14
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
              name="Inventory01" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df013db5-f76e-44d3-b0df-bcbc46d93160">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="InventoryByProduct"/>
    <queryString language="json">
        <![CDATA[products]]>
    </queryString>
    <parameter name="storeno" class="java.lang.String" evaluationTime="Early">
        <property name="net.sf.jasperreports.http.data.url.parameter" value="store"/>
    </parameter>
    <parameter name="locale" class="java.lang.String" evaluationTime="Early">
        <property name="net.sf.jasperreports.http.data.url.parameter" value="locale"/>
    </parameter>
    <parameter name="product" class="java.lang.String" evaluationTime="Early">
        <property name="net.sf.jasperreports.http.data.url.parameter" value="product"/>
    </parameter>

Java代码

java prettyprint-override">InputStream employeeReportStream = getClass().getResourceAsStream(reportFile);
jasperReport = JasperCompileManager.compileReport(employeeReportStream);

Map<String, Object> parameters = new HashMap<>();
parameters.put("locale", "en");
parameters.put("product", "680680976804");
parameters.put("storeno", "260");

//************ HOW SHOULD I CREATE THE JsonDataSource OBJECT AND PASS IT TO THE LIBRARY TO EXECUTE?
//************ IF ds WERE A JSON DOCUMENT, IT PRINTS CORRECTLY, BUT I NEED IT TO CALL THE URL OF THE 
//************ RESTFUL ENDPOINT
//            JsonDataSource ds = new JsonDataSource(jsonDataStream);
//            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds); 

谢谢

共有1个答案

籍靖
2023-03-14

所以我让它起作用了。对于那些遇到同样问题的人,下面是解决方案

将Json适配器的定义放在项目中的一个目录中:项目结构截图

在jrxml报表定义中:

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
              name="Inventory01" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df013db5-f76e-44d3-b0df-bcbc46d93160">
    <property name="net.sf.jasperreports.data.adapter" value="data/inventorydataadapter.xml"/>
            InputStream employeeReportStream = getClass().getResourceAsStream(reportFile);
            jasperReport = JasperCompileManager.compileReport(employeeReportStream);

            Map<String, Object> parameters = new HashMap<>();
            parameters.put("locale", "en");
            parameters.put("product", "680680976804");
            parameters.put("storeno", "260");

            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);

            JRPdfExporter exporter = new JRPdfExporter();
            exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
            exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputPdf));
            SimplePdfReportConfiguration reportConfig = new SimplePdfReportConfiguration();
            reportConfig.setSizePageToContent(true);
            reportConfig.setForceLineBreakPolicy(false);
            SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration();
            exportConfig.setMetadataAuthor("Ali M");
            exportConfig.setEncrypted(true);
            exportConfig.setAllowedPermissionsHint("PRINTING");
            exporter.setConfiguration(reportConfig);
            exporter.setConfiguration(exportConfig);

            exporter.exportReport();
 类似资料:
  • 问题内容: 我的情况是,当我无法通过jasper文件中的查询检索任何内容时,仍会生成报告。 我正在使用这一行代码来生成报告。 有没有一种方法可以使用导出器对象检测我的报告是否为空?我尝试使用byteArray验证null,然后在生成pdf格式时将其转换为String。 但是我不能轻易检查byteArray是否为null,因为尽管我的查询没有返回任何结果,但它仍会产生以下输出: 问题答案: 在标签上

  • 当我使用iReport v2.0.4制作一些带有子报告的报告时,我遵循了这个代码示例 现在我想运行Java这个报告。我的代码是: 给出以下错误 现在我正在更改我的IReport版本5.5像这样的错误 保存我的报告Path=E:\Myproject\NetBeansProjects\Inventory_control_system_for_hotel\Mainreportname.jrxmlSub

  • 我从jacoco生成了一个代码覆盖率报告,它就是jacoco。执行官。但我不知道如何使用它。。。 我生成它的方式是通过命令行: 然后我得到了杰科科。执行报告。我所需要的只是百分比的数量,我只使用命令行。有没有办法将此报告转换为可读的txt文件? 谢谢大家

  • 有人能发布一个如何使用web服务作为数据源定义子报表的工作示例吗? 我正在阅读以下内容: http://community . jasper soft . com/project/we B- service-data-source 在“子报告和其他数据集”一节中,我需要考虑(2)的情况: 您有一个希望循环的主结果集,并且希望对每一行执行一个新的查询(webservice调用) 在子报表配置(或数据

  • 使用指南 - 数据报告 百度统计为您提供网站的流量、来源、页面、访客、转化、SEO等多种网站分析报告,支持多维度细分和自定义查看,帮助您进行SEM、SEO优化,提高转化率。 概述 百度统计提供哪些数据报告 如何全方位地解读数据 如何添加常用报告 为什么有些报告没有权限 数据的下载与发送 报告的时效性及历史数据的存储 安装统计代码前的网站数据能查看吗主页&网站概况 主页介绍 帐户下网站简介 网站概况

  • 数据报告 数据报表 可以查看试验运行至今的流量和指标数据,所有版本和指标的对比情况。 为了具有对比意义,默认展示为均值,即指标数/UV。 变化度表示试验版本较原始版本提升百分比。 置信区间描述了试验版本比对照版本在95%的置信水平上的提升范围。例如,当试验版本在试验报告的数据变化中显示为“+55%[+50%,+60%]”。那么表示试验至今试验版本的数据较原始版本提升了55%,在该版本发布后,有95