- PR -

BLOB型データ(マルチページ)の印刷について

1
投稿者投稿内容
かえるぴょん
会議室デビュー日: 2008/03/10
投稿数: 3
投稿日時: 2008-03-11 00:29
初めて投稿させていただきます。
よろしくお願いします。

ASP.NET 2.0(VB)+ Oracle10g で開発を行っています。

OracleのBLOB型のフィールドに格納されたマルチページTIFFのデータをCrystalReports
を使用して印刷したいのですが、1ページ目の画像しか印刷できません。すべてのページ
の画像を印刷したいのですが、どうしたら良いのでしょうか?
CrystalReportsへは、データセット内にByte()型を作成し、CrystalReportsのフィール
ドエクスプローラからレポート上にドラッグアンドドロップして「BlobFieldObject」コ
ントロールを作成して印刷しようとしています。

皆様何卒よろしくお願い致します。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-11 11:39
引用:

かえるぴょんさんの書き込み (2008-03-11 00:29) より:

OracleのBLOB型のフィールドに格納されたマルチページTIFFのデータをCrystalReports
を使用して印刷したいのですが、1ページ目の画像しか印刷できません。すべてのページ
の画像を印刷したいのですが、どうしたら良いのでしょうか?


CrystalReports では TIFF イメージの特定 Frame を自由にアクティブ化することはできないと思います。 SelectActiveFrame メソッドですべての Frame を列挙してひとつずつコピーしないとダメだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かえるぴょん
会議室デビュー日: 2008/03/10
投稿数: 3
投稿日時: 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
'テーブルをデータセットに追加します。
-------------------------------------------------------------------------------
以上です。

ここのところずっと悩んでいたので、すごく助かりました。
ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-03-11 18:52
引用:

かえるぴょんさんの書き込み (2008-03-11 15:45) より:

早速、教えていただいた「SelectActiveFrame メソッド」を使って試したところ、無事にすべての画像が印刷できました。


メソッド名のヒントだけで十分でしたか。 すばらしいです。 ソースまで添えて頂いてありがとうございます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かえるぴょん
会議室デビュー日: 2008/03/10
投稿数: 3
投稿日時: 2008-03-11 19:53
じゃんぬねっとさん、コメントありがとうございます。

まだ開発を始めたばかりなので、いつもこの会議室を見て勉強しています。
また何かありましたら、よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)