如何隐藏指定导出器的textField.例如,不是HTML

Ste*_*ven 12 jasper-reports

我有一个JasperReports jrxml文件,它在textField元素中有一个超链接.

我不想在HTML视图以外的任何地方显示此超链接,因为该链接在excel,PDF,word等中不起作用,并且显示没有意义.

我已经阅读了具有属性的常见问题,但它只是让我困惑,因为它根本没有谈论隐藏textField,只是页眉和页脚的"乐队".

这是我想要隐藏的文本字段,而不是HTML:

<textField hyperlinkType="ReportExecution">
    <reportElement style="Report_Param_Value_Link" mode="Opaque" x="400" y="0" width="161" height="20"/>
    <textElement/>
    <textFieldExpression class="java.lang.String"><![CDATA[Boolean.TRUE.equals($P{LAST_WEEK}) ? "View WTD" : "View last week"]]></textFieldExpression>
    <hyperlinkParameter name="noMenu">
        <hyperlinkParameterExpression><![CDATA["true"]]></hyperlinkParameterExpression>
    </hyperlinkParameter>
    <hyperlinkParameter name="reportUnit">
    <hyperlinkParameterExpression><![CDATA["repo:/Reports/Operations/Business_Support/Subreports/Business_Support_Performance_Dashboard"]]></hyperlinkParameterExpression>
    </hyperlinkParameter>
    <hyperlinkParameter name="LAST_WEEK">
        <hyperlinkParameterExpression><![CDATA[Boolean.valueOf(!Boolean.TRUE.equals($P{LAST_WEEK})).toString()]]></hyperlinkParameterExpression>
    </hyperlinkParameter>
</textField>
Run Code Online (Sandbox Code Playgroud)

Ale*_*x K 14

使用元素键过滤器.

来自JR Ultimate Guide的引用:

此内置过滤器实现从与给定元素键匹配的导出元素中排除.
元素键在报告设计时设置,并传播到生成的报告中.
已填充报表中的每个元素与生成它的报表模板中的元素具有相同的键.
要触发元素键过滤器,报表设计器需要定义一个或多个以<exporter_property_prefix> .exclude.key开头的报表属性.每个这样的属性匹配单个元素键,该元素键将被过滤器排除.元素键由属性值给出,或者如果没有为属性设置值,则由属性后缀给出.
以下示例显示如何指定要从特定导出输出中排除的元素键:

<jasperReport ...>
    <!-- exclude elements with keys Image1 and Text4 from HTML export-->
    <property name="net.sf.jasperreports.export.html.exclude.key.Image1"/>
    <property name="net.sf.jasperreports.export.html.exclude.key.Text4"/>
    <!-- exclude elements with keys Image5 from PDF export -->
    <property name="net.sf.jasperreports.export.pdf.exclude.key.the.image" value=”Image5”/>
    ...
</jasperReport>
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您应该为带有超链接的文本字段添加键(例如,textFieldWithHL),然后为要从打印此超链接中排除的每种格式(pdf,docx,xl​​s,csv,xml,txt,odt)添加一个属性:

<property name="net.sf.jasperreports.export.pdf.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.docx.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.xls.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.csv.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.xml.exclude.key.textFieldWithHL"/>
Run Code Online (Sandbox Code Playgroud)

你帖子中的表达:

net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name}
net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name}
Run Code Online (Sandbox Code Playgroud)

允许排除整个bands(也group bands).此过滤器适用于JROrigin对象.


例如,考虑带有徽标的报告,该徽标必须包含为PDF输出的SVG或HTML输出的PNG.JRXML文件包含:

    <image scaleImage="RetainShape" onErrorType="Blank">
        <reportElement key="IMAGE_LOGO_PNG" x="1" y="0" width="100" height="60" uuid="a896cade-f6fc-4d8f-b762-29b950309257"/>
        <imageExpression><![CDATA[Transcoder.asPNG($V{V_LOGO_FILE} + ".svg")]]></imageExpression>
    </image>
    <image scaleImage="RetainShape" onErrorType="Blank">
        <reportElement key="IMAGE_LOGO_SVG" x="1" y="0" width="100" height="60" uuid="a896cade-f6fc-4d8f-b762-29b950309257"/>
        <imageExpression><![CDATA[Transcoder.asSVG($V{V_LOGO_FILE} + ".svg")]]></imageExpression>
    </image>
Run Code Online (Sandbox Code Playgroud)

要从HTML中排除SVG并从PDF中排除PNG <jasperReport...>,请在JRXML文件中的根元素之后立即添加以下属性:

<property name="net.sf.jasperreports.export.html.exclude.key.IMAGE_LOGO_SVG"/>
<property name="net.sf.jasperreports.export.pdf.exclude.key.IMAGE_LOGO_PNG"/>
Run Code Online (Sandbox Code Playgroud)