0

CF9 用の ColdFusion Report Builder を使用しており、チャートを PNG 画像としてレポートに渡そうとしています。ここに私のCFMLコードがあります:

<cfchart format="png" name="chartImage">
    <cfchartseries type="bar" query="chart" itemcolumn="title" valuecolumn="level">
</cfchart>
<cfreport format="pdf" template="report.cfr" name="grid">
    <cfreportparam name="reportTitle" value="#reportType.title#">
    <cfreportparam name="chartImage" value="#chartImage#">
</cfreport>

CF Report Builder で、これらの指示に正確に従って、という入力パラメーターを定義し、chartImageそれを のタイプBLOB(これも type を試しました) に設定しました。Image

このエラーが発生しましたが、それを克服できませんでした:

レポート データ バインディング エラー 互換性がありません [ColdFusionReport データセットのパラメータ chartImage に割り当てられた B 値..

また、パラメーターの型を に変更Stringし、base-64 文字列を渡してから、レポート内でバイナリに変換しましたが、役に立たないメッセージの[B.

この画像を入力パラメータとして正しくバインドするにはどうすればよいですか?

4

2 に答える 2

0

この質問に関心がないことが、CF Report Builder の人気を物語っていると思います。バインディング エラーを克服することはできませんでしたが、合理的な回避策を見つけました。

画像をバイナリ値として直接バインドする代わりに、グラフ画像を一時ディレクトリに書き込み、そのパスを文字列パラメーターとしてレポートに渡します。その後、レポートはファイル システムから画像を見つけて、問題なくレポートに添付できます。レポートが実行されたら、ファイル システムからグラフを削除して、すべてが適切に整理されていることを確認します。

このソリューションで更新されたコードは次のとおりです。

<cfchart format="png" name="chartImage">
    <cfchartseries type="bar" query="chart" itemcolumn="title" valuecolumn="level">
</cfchart>

<cfset chartImageFile = getTempDirectory() & '\' & createUUID()>
<cfset fileWrite(chartImageFile, chartImage)>

<cfreport format="pdf" template="report.cfr" name="grid">
    <cfreportparam name="reportTitle" value="#reportType.title#">
    <cfreportparam name="chartImage" value="#chartImageFile#">
</cfreport>

<cfset fileDelete(chartImageFile)>

それほど洗練されたものではありませんが、CF Report Builder について特に洗練されたものは何もありません。

于 2013-07-08T16:41:19.370 に答える