2

マスター ページに画像を含む BIRT レポートがあります。

私の BIRT 設計ファイル:

レポート内に png を埋め込むと、bodyタグの後に次の XML が生成されました。

  <list-property name="images">
      <structure>
          <property name="name">filename.png</property>
          <property name="type">image/png</property>
          <property name="data">
            BASE64 of the image
          </property>
      </structure>
   </list-property>

次に、この要素を追加してマスター ページに含めました。

    <image id="828">
       <property name="source">embed</property>
       <property name="imageName">filename.png</property>
    </image>

BIRT デザイン ファイルの動作:

次に、BIRT デザイナーからプレビューを実行すると、HTML 出力と PDF 出力の両方でうまく機能します。(私のソフトウェアから)を使用してレンダリングするとIPDFRenderOption、正しいpdf 罰金が生成されます。しかし、 を使用するHTMLRenderOptionと、画像は HTML レポートに埋め込まれず、次のようにレンダリングされます。

 <img src="file:/.../apache-tomcat-7.0.35/design11.png">

私が期待するもの:

私は次のようなものを期待していましたが:

 <img src="data:image/png;base64,BASE64 STUFF THAT I PUT IN THE LIST-PROPERTIES ">

では、BIRT を で実行したときHTMLRenderOptionに、画像へのリンクを作成する代わりに、画像を HTML ファイルに埋め込むにはどうすればよいでしょうか?

4

1 に答える 1

1

レポートのマスターページに 2 つの異なる画像を追加することで、これを解決しました。

PDF出力における画像の設定:

はよくレンダリングされているのでPDF、質問に書いたとおりに画像を残し、HTML出力でこの画像の可視性を設定しました

HTML 出力の画像の設定:

次に、マスター ページに新しい画像を追加しました。今回は組み込みには設定していません。代わりに、によって参照されるように設定しましたURI。出力に必要なものURIを設定すると。基本的に、次の画像をレポートに追加しました。base64 URIHTMLXML

<image id="1972">
    <list-property name="visibility">
        <structure>
            <property name="format">pdf</property>
            <expression name="valueExpr" type="javascript">true</expression>
        </structure>
    </list-property>
        <property name="source">url</property>
        <expression name="uri" type="constant">data:image/png;base64, BASE 64 OF MY PNG IMAGE</expression>
 </image>

次に、出力に対してのみ画像が表示されるように設定しHTMLます。

このようにして、それが何であれ、にi を入れたタグをBIRTレンダリングします。したがって、asを置きます。したがって、出力に画像が埋め込まれます。imgURLXMLdata:image/png;base64, BASE 64 OF MY PNG IMAGEurlHTML

データベースからテーブルに画像を追加する:

BIRT はフィールド内の画像をサポートしており、blobそれらをレポートに追加する際に管理できます。方法については、http://help.eclipse.org/helios/index.jsp? topic=%2Forg.eclipse.birt.doc%2Fbirt%2Flayout.5.7.htmlを参照してください。

うまくいかない場合は、スクリプトを編集せずに URL に動的な値を挿入することができます (もちろん、JavaScript を少し使用して、どの列に画像のデータが含まれているかを判断します)。

以下はbase64、列から値を読み取るイメージの XML コードです。

  <image id="1974">
        <property name="source">url</property>
        <expression name="uri" type="javascript">"data:image/png;base64,"+row["BASE_64_PNG_COLUMN"]     </expression>
  </image>
于 2014-06-20T08:34:33.600 に答える