Включение динамических изображений в PDF с BIRT

Я пытаюсь использовать BIRT 2.5.0 для создания PDF-файла. BIRT вызывается из pHp (это делается благодаря JavaBridge и серверу Tomcat).

И я просто пытаюсь создать флажок, проверенный при определенных условиях. Я посмотрел немного в Интернете и нашел 2 разных способа сделать это.

Первый способ - поиграть с 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" (т.е. как я могу получить доступ к этому полю?).

Я надеюсь, что вы понимаете, что я пытаюсь сделать. Если у вас есть лучшее решение (и, если возможно, пример рабочего кода), не стесняйтесь поделиться ^^:)

Большое спасибо,

Рафаэль ПОИТТЕВИН

NB. Сначала я хотел, чтобы мои изображения были встроены в документ (это то, что я использую в первом решении), но так как это не сработало, я использовал изображения, размещенные на http://my.server.com/...

1 ответ

Решение

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

Другие вопросы по тегам