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>
しかし、これはうまくいきません。
そこで私が見つけた 2 番目の解決策は、単純な 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でホストされている画像を使用しました。 ..