Включение динамических изображений в PDF с помощью BIRT
Я пытаюсь использовать BIRT 2.5.0 для создания pdf-файла. BIRT вызывается из pHp (это делается благодаря JavaBridge и серверу Tomcat).
И я просто пытаюсь создать флажок, проверенный при определенных условиях.
Я посмотрел немного в интернете и нашел 2 различных способа сделать это.
Первый способ-играть с видимостью, если поле "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 "(т. е. как я могу получить доступ к этому полю ?).
Я надеюсь, что вы понимаете, что я пытаюсь сделать. Если у вас есть лучшее решение (и, если возможно, пример рабочего кода), не стесняйтесь поделиться ^^ :)
Большое спасибо,
Рафаэль ПУАТТЕВЕН
NB: сначала я хотел, чтобы мои образы были встроенный в документ (это то, что я использую в первом решении), но так как это не сработало, я использовал изображения, размещенные на http://my.server.com ...
1 ответ:
Если ваша цель состоит в том, чтобы отобразить непроверенный / проверенный флажок, вы рассматривали возможность использования шрифта Wingdings с символами 0xA8 и 0xFD или 0xFE?
Comments