如何隐藏指定导出器的textField。 例如对于不是HTML
我有一个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>
使用元素键filter 。
JR Ultimate Guide的报价:
这种内置的filter实现排除了与给定元素键匹配的导出元素。
元素键在报告devise时设置,并传播到生成的报告中。
填充报告中的每个元素与生成报告模板的元素具有相同的密钥。
要触发元素键filter,报表devise器需要定义一个或多个以<exporter_property_prefix> .exclude.key开头的报表属性。 每个这样的属性匹配要被filter排除的单个元素键。 元素键由属性值给出,或者如果没有为属性设置值,则由属性后缀给出。
以下示例显示如何指定要从特定导出输出中排除的元素键:
<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>
在你的情况下,你应该添加超链接的文本字段的键(例如, textFieldWithHL
),然后添加一个属性为每个格式(pdf,docx,xls,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"/>
您的post中的expression式:
net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name} net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name}
允许排除整个bands
(也是group bands
)。 这个filter适用于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>
要从HTML中排除SVG,从PDF中排除PNG,请在JRXML文件中的<jasperReport...>
根元素之后立即添加以下属性:
<property name="net.sf.jasperreports.export.html.exclude.key.IMAGE_LOGO_SVG"/> <property name="net.sf.jasperreports.export.pdf.exclude.key.IMAGE_LOGO_PNG"/>
看看你的源代码, 可能会创build一个抑制超链接的ExporterFilter,然后你必须将该filter添加到除 HTML 之外的所有内容。 但是,我不明白为什么你不想显示其他格式的超链接。 多年来,PDF,Word,Excel等都将正确地解释一个超链接,实际上就像浏览器一样点击链接来响应鼠标。 这可能就是为什么这个过程会很痛苦:你正在扭转对大多数人所期望的行为。