Visual Studio 2005に付属のクリスタルレポートで動的に画像を出力できますが、方法がややこしいです。
Visual Studio 2005のC#で作られたプログラムに印刷機能があります。
Visual Studio 2005に付属のクリスタルレポートでレイアウトをして、印刷しています。
今までは文字だけだったところに、動的に画像を出力する要件がでてきました。
着手前は簡単にできるだろうと思っていました。
いざ修正しようとすると、固定で画像を貼り付けることはできても、動的に画像を指定するようにはできていないようです。
検索をいろいろした結果、
- 画像データをデータベースにバイナリで挿入する。
- データベースから読み込んでクリスタルレポートに出力する。
ということをすればできそうだということはわかりました。
画像データをデータベースにバイナリで挿入するのは、以下のようにできるようになりました。
SQL Server:image型のカラムにデータを挿入する方法 - ソフトウェア開発者の日常
データベースから読み込んでクリスタルレポートに出力するのは、既存のコードを真似をしましたが、上手くいきません。
データベースから読み込んだデータは、object型の配列になっていて、配列の添字は画像データのサイズ分になっています。
出力先のクリスタルレポートの変数は、Byte型を指定していたので型があいません。
クリスタルレポートでは配列型の選択肢がなかったので、無理なのかと思っていたら、「Byte[]」と入力してもコンパイルできました。
配列にはできたので、object型の配列からByte型の配列へのキャストをするために、
cryimage = (byte[])dbimage;
としたら、コンパイルエラーもなくなりました。
動作を確認したら、画像が出力されたので、画像の動的出力へ一歩前進しました。
クリスタルレポートの使い方も知らない状態で引き受けて、一時はお手上げも覚悟しましたが、なんとかなりました。