2016-08-25 125 views
0

我有一个问题,根据报告导出到jasper报告切换打印变量。假设我在碧玉报告中有两个字段:$ F {A}和$ F {B}。 如果使用rtf(RTF格式)导出,jasper应打印$ F {A},如果使用rtf以外的其他格式导出,则打印$ F {B}。

我必须在jasper textField中写什么?
是否有作为exportedAs(“rtf”)的函数?
<textFieldExpression><![CDATA[(exportedAs("rtf")? $F{A} : $F{A})]]></textFieldExpression>

------这里添加新的信息------

我曾尝试使用<exporter_property_prefix> .exclude.key
<property name="net.sf.jasperreports.export.rtf.exclude.key.NOTRTFFIELD"/>

而让其他印刷品是pdf。
<property name="net.sf.jasperreports.export.rtf.exclude.key.NOTPDFFIELD"/>

我还在报告元素中放置了键。检测出口贾斯珀报告表

<code> 
<reportElement key="NOTRTFFIELD"> 
<reportElement key="NOTPDFFIELD"> 
</code> 


但当$ F {A}和$ F {B}具有不同的行数,它会留下空的空间为它具有较小的线的字段。


$ F {A}:
线A1
线A2
线A3

$ F {B}:
线B1

假定$ F {以PDF格式导出报表时打印A},并在报表导出为RTF格式时打印$ F {B}。

如果打印成PDF: other line... line A1 line A2 line A3 other line...

如果我们打印为RTF: other line... line B1 ---blank line--- ---blank line--- other line...

我不得不删除这些空行..

+0

的可能的复制[JasperReports的:隐藏文本框时没有HTML视图(http://stackoverflow.com/questions/8044930/jasperreports-hide-textfield-when-not-html-查看) –

+0

你可以使用:' .exclude.key' –

+0

或者只是使用一个参数,你是通过java导出还是使用jasper-server? –

回答

2

如果你可以用不同的文本字段,net.sf.jasperreports.export.{format}.exclude.key.{suffix}性质可能有帮助。

见碧玉报告config.reference

+0

我已经尝试过了,但是如果文本的高度不同,那么较小的文本会留下空白区域。假设:$ F {A}包含3行。 $ F {B}包含5行。然后如果文本打印$ F {A},接下来的两行变成空行,因为$ F {B}包含另外2行。我需要删除这个空行。 –

+0

也有这个属性,removeWhenBlank = true和positionType = float –

+0

我已经把isRemoveLineWhenBlank =“true”作为reportElement属性,但它不会删除空白行 –