Включение динамических изображений в 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 ...

795   1  

1 ответ:

Если ваша цель состоит в том, чтобы отобразить непроверенный / проверенный флажок, вы рассматривали возможность использования шрифта Wingdings с символами 0xA8 и 0xFD или 0xFE?

Comments

    Ничего не найдено.