2012-04-04 28 views
2

BIRT 2.5.0を使用してPDFファイルを生成しようとしています。 BIRTはpHpから呼び出されます(これはJavaBridgeとTomcatサーバーのおかげです)。BIRTでPDFに動的画像を含める

そして、私は単に特定の条件の下でチェックされたチェックボックスを作成しようとしています。 インターネットでちょっと見たところ、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> 

しかしこのdoesnの仕事はありません。

私が見つけた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"フィールドの値を "テスト"することです(つまり、どのようにこのフィールドにアクセスできますか?)。

私がしようとしていることを理解していただければ幸いです。あなたがよりよい解決策を持っている(と動作するコードの例を、可能な場合)、^^共有することを躊躇しない場合:)

多くのおかげで、

ラファエルPOITTEVIN

NB:まず、I私のイメージをドキュメントに埋め込むことを望んでいましたが(これは私が最初の解決策で使ったものです)、これはうまくいきませんでした。http://my.server.comにホストされているイメージを使用しました...

答えて

1

あなたの目的が未チェック/チェックボックスをオンにして、Wingdingsフォントを0xA8と0xFDまたは0xFE文字で使用することを検討しましたか?

+0

こんにちは、あなたの答えをありがとう。これはかなり良いアイデアです。私は...私の部分にライン '<プロパティ名= "のfontFamily"> Wingdingsフォント'を追加し、私のコードは、そのようなビットになります。 場合(dataSetRow [ "idclassebillet"] == 1) 文字列を.fromCharCode( '0xFD'); else String.fromCharCode( '0xFE'); しかし、これは「イ」の文字のみを表示します... 何か考えていますか? (nb:[link](http://en.wikipedia.org/wiki/Checkbox))私はU + 2610のような他の文字を試しましたが、何も印刷しませんでした。 – PiroXXI

+0

@PiroXXI: (Arial、Timesなど)では「¨」、「ý」、「þ」と表示されますが、それぞれWingdingsには空白のチェックボックス、チェックボックス、チェックボックスが表示されます。あたかもフォントが正しく表示されていないかのように聞こえます。自分のマシンでプレビューしようとしましたか? –

+0

自分のマシン(ウィンドウ)でうまく動作しますが、Linuxサーバーで正常に動作するようにはできません。 :/(私はフォントをインストールしましたが、それはBIRTが見つからないようなものです)。 ' Wingdings" 'を追加して削除すると、フォントが異なるのと同じ効果がありますが、私のウィンドウ上にあるWindingsフォントのようには見えません... – PiroXXI

関連する問題