首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JasperReports正确编写摘要书目录?

如何用JasperReports正确编写摘要书目录?
EN

Stack Overflow用户
提问于 2021-01-06 19:52:57
回答 1查看 109关注 0票数 2

我正在写一份摘要书类型的报告。它包括ToC(目录)和子报表(JRXML):

代码语言:javascript
复制
    <group name="cover">
            <groupHeader>
                <part evaluationTime="Report" uuid="56ab525c-754f-4f48-a52c-7cc23934be3d">
                    <property name="net.sf.jasperreports.bookmarks.data.source.parameter" value="REPORT_DATA_SOURCE"/>
                    <p:subreportPart xmlns:p="http://jasperreports.sourceforge.net/jasperreports/parts"
                                     xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/parts http://jasperreports.sourceforge.net/xsd/parts.xsd">
                        <subreportParameter name="REPORT_DATA_SOURCE">
                            <subreportParameterExpression>
                                <![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("combinedReport")]]></subreportParameterExpression>
                        </subreportParameter>
                        <subreportExpression><![CDATA[$P{tocReport}]]></subreportExpression>
                    </p:subreportPart>
                </part>
            </groupHeader>
        </group>
<detail>
        <part uuid="9431bc63-c820-403c-a317-e7ffe3295dcf">
            <p:subreportPart xmlns:p="http://jasperreports.sourceforge.net/jasperreports/parts"
                             xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/parts http://jasperreports.sourceforge.net/xsd/parts.xsd">
                <subreportParameter name="REPORT_DATA_SOURCE">
                    <subreportParameterExpression>
                        <![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("combinedReport")]]></subreportParameterExpression>
                </subreportParameter>
                <subreportExpression><![CDATA[$P{subreport}]]></subreportExpression>
            </p:subreportPart>
        </part>
    </detail>

我在子报表中添加了文本字段的超链接:

代码语言:javascript
复制
<textField textAdjust="StretchHeight" hyperlinkType="LocalAnchor" bookmarkLevel="1">
                <reportElement x="0" y="0" width="280" height="30" uuid="8a8b1b38-78d3-4ab5-a728-6c0f2796371d"/>
                <textElement>
                    <font size="14" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Bla bla"]]></textFieldExpression>
                <anchorNameExpression><![CDATA["Bla bla"]]></anchorNameExpression>
            </textField>

但是目录是空的,只在页面顶部显示静态文本“目录”。以下是我编写报告的方法(简写版本):

代码语言:javascript
复制
 subReport = JasperCompileManager.compileReport(jrxmlContentOutputPath);
 tocReport = JasperCompileManager.compileReport(jrxmlTocOutputPath);
InputStream templateIs = ReportPdfService.class.getClassLoader().getResourceAsStream("jasper-reports/Abstract_Book.jrxml");
Map<String, Object> parameters = new HashMap<>();
parameters.put("REPORT_DATA_SOURCE", jsonDataSource);
parameters.put("subreport", subReport);
parameters.put("tocReport", tocReport);
JasperReport report = JasperCompileManager.compileReport(templateIs);
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters);
JasperExportManager.exportReportToPdfFile(jasperPrint, outputReportPdfPath);

我认为问题出在超链接,它是在toc编译后创建的,或者别的什么。但是什么都不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 13:54:45

问题出在细节带上,它的参数为splitType="Immediate“。当我移除它的时候,ToC开始工作了。不知道为什么会这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65595285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档