我正在尝试使用BIRT 2.5.0生成pdf文件。从pHp调用BIRT(这要归功于JavaBridge和Tomcat服务器)。
我只是想创建一个复选框,在特定条件下进行检查。 我在互联网上看了一下,找到了两种不同的方法。
第一种方法是使用Visibility,如果字段“idclassebillet”(我正在进行测试)的值为1.我这样做了:
<image id="9010">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">row["classEq1"]</expression>
</structure>
</list-property>
<list-property name="boundDataColumns">
<structure>
<property name="name">classEq1</property>
<text-property name="displayName">classEq1</text-property>
<expression name="expression" type="javascript">dataSetRow["idclassebillet"] == 1</expression>
<property name="dataType">boolean</property>
</structure>
</list-property>
<property name="source">embed</property>
<property name="imageName">checkbox_unchecked.png</property>
</image>
但这不起作用。
所以我找到的第二个解决方案是使用简单的URL。这种解决方案更方便,但也不起作用。这看起来就像那样。
<image id="9018">
<property name="source">url</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">classEq1</property>
<text-property name="displayName">classEq1</text-property>
<expression name="expression" type="javascript">dataSetRow["idclassebillet"]</expression>
<property name="dataType">integer</property>
</structure>
</list-property>
<expression name="uri" type="javascript">
if(row["classEq1"] == 1)
"http://my.server.com/checkbox_checked.png"+row["classEq1"];
else
"http://my.server.com/checkbox_unchecked.png"+row["classEq1"];
</expression>
</image>
在这两种情况下,我都声明字段“dataSetRow [”idfield“]”,就像那样:
<data-sets>
<oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="infoBordereau" id="178">
<structure name="cachedMetaData">
<list-property name="resultSet">
...
<structure>
<property name="position">9</property>
<property name="name">idclassebillet</property>
<property name="dataType">integer</property>
</structure>
...
</structure>
<property name="dataSource">GestionBillet</property>
<list-property name="resultSet">
...
<structure>
<property name="position">8</property>
<property name="name">idclassebillet</property>
<property name="nativeName">idclassebillet</property>
<property name="dataType">integer</property>
</structure>
...
</list-property>
....
</oda-data-set>
</data-sets>
我检查过我可以访问“idclassebillet”的内容。如果我只是这样打印,它就可以正常工作:
<data id="90060001">
<property name="whiteSpace">nowrap</property>
<property name="dataSet">infoBordereau</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">classEq1</property>
<text-property name="displayName">classEq1</text-property>
<expression name="expression" type="javascript">dataSetRow["idclassebillet"]</expression>
<property name="dataType">integer</property>
</structure>
</list-property>
<property name="resultSetColumn">classEq1</property>
</data>
无论我选择哪种解决方案来获取“动态”图像,无论“dataSetRow [”idclassebillet“]的值是什么,我都会得到相同的图像。 我访问和打印图像没有问题。问题更多的是“测试”“idclassebillet”字段的值(即,如何访问该字段?)。
我希望你明白我想做什么。如果您有更好的解决方案(如果可能的话,还有工作代码示例),请不要犹豫,分享^^:)
非常感谢,
RaphaëlPOITTEVIN
注意:首先,我希望我的图像嵌入到文档中(这是我在第一个解决方案中使用的),但由于这不起作用,我使用了http://my.server.com上托管的图像。
答案 0 :(得分:1)
如果您的目标是显示未选中/选中的复选框,您是否考虑使用带有字符0xA8和0xFD或0xFE的Wingdings字体?