- - PR -
BLOB型データ(マルチページ)の印刷について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-11 00:29
初めて投稿させていただきます。
よろしくお願いします。 ASP.NET 2.0(VB)+ Oracle10g で開発を行っています。 OracleのBLOB型のフィールドに格納されたマルチページTIFFのデータをCrystalReports を使用して印刷したいのですが、1ページ目の画像しか印刷できません。すべてのページ の画像を印刷したいのですが、どうしたら良いのでしょうか? CrystalReportsへは、データセット内にByte()型を作成し、CrystalReportsのフィール ドエクスプローラからレポート上にドラッグアンドドロップして「BlobFieldObject」コ ントロールを作成して印刷しようとしています。 皆様何卒よろしくお願い致します。 | ||||
|
投稿日時: 2008-03-11 11:39
CrystalReports では TIFF イメージの特定 Frame を自由にアクティブ化することはできないと思います。 SelectActiveFrame メソッドですべての Frame を列挙してひとつずつコピーしないとダメだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-03-11 15:45
じゃんぬねっとさん、ありがとうございます。
早速、教えていただいた「SelectActiveFrame メソッド」を使って試したところ、 無事にすべての画像が印刷できました。 Oracleから取得したBLOBフィールドのイメージデータを、SelectActiveFrame メソッドでFrameをひとつずつ取り出して、その数分データセットのレコードを 作成しました。 もっと良い方法があるかもしれませんが、以下のようなコードでできました。 ------------------------------------------------------------------------------- 'Oracleから該当データを取得します。(省略) 'Oracleから取得したBLOBフィールドのデータを取り出します。 Dim blbTmp As Oracle.DataAccess.Types.OracleBlob = oraDr.GetOracleBlob(0) Dim msTmp As New System.IO.MemoryStream(blbTmp.Value) Dim imgTmp As System.Drawing.Image = System.Drawing.Image.FromStream(msTmp) Dim fdTmp As New System.Drawing.Imaging.FrameDimensionimgTmp.FrameDimensionsList(0)) 'フレーム数を取得します。 Dim fdCount As Integer = imgTmp.GetFrameCount(fdTmp) Dim intIdx As Integer Dim imgConv As New System.Drawing.ImageConverter For intIdx = 0 To fdCount - 1 'フレームをひとつずつ取り出します。 imgTmp.SelectActiveFrame(fdTmp, intIdx) 'テーブルに更新します。 dstRow = dstTable.Newテーブル名Row dstRow.イメージ = CType(imgConv.ConvertTo(imgTmp, GetType(Byte())), Byte()) dstTable.Rows.Add(dstRow) Next intIdx 'テーブルをデータセットに追加します。 ------------------------------------------------------------------------------- 以上です。 ここのところずっと悩んでいたので、すごく助かりました。 ありがとうございました。 | ||||
|
投稿日時: 2008-03-11 18:52
メソッド名のヒントだけで十分でしたか。 すばらしいです。 ソースまで添えて頂いてありがとうございます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-03-11 19:53
じゃんぬねっとさん、コメントありがとうございます。
まだ開発を始めたばかりなので、いつもこの会議室を見て勉強しています。 また何かありましたら、よろしくお願いします。 |
1