- PR -

printdocumentからimageを作る方法

投稿者投稿内容
はま
会議室デビュー日: 2006/01/18
投稿数: 14
投稿日時: 2006-01-18 11:07
windows2000Pro.とVS2003でVBを使って開発をしています。

いままで印刷していた帳票を画像ファイルとして出力する事になって、
うまい方法を考えつけないでいます。

printdocumentの1ページを1画像ファイルに出力するのがとりあえずのゴールです。
printdocument自体はNSSPRNXAというdllで直接描かれているので、imageはちょっと
取り出せそうに無く、あるのはprintdocumentだけです。

PrintPreviewControlに出力して、それをbitmapオブジェクトに取り込んで保存、
と言う方法を試したのですが、PrintPreviewControl自体の余白(グレーで表示さ
れている部分)まで画像として取り込まれてしまう上に、複数ページを複数の画像
として出力はちょっと厳しいのです。一枚の画像になってしまいます。
(当たり前ですか・・・)

printdocument自体からimageとして取り出す方法はないものでしょうか?

お力を貸していただければ幸いです。よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-18 11:56
投稿が、消せなかった...
(30 分経過ではなく、30 分単位でコミットされるんですね)

[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-01-18 12:00 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-18 12:08
引用:

はまさんの書き込み (2006-01-18 11:07) より:

printdocument自体はNSSPRNXAというdllで直接描かれているので、imageはちょっと
取り出せそうに無く、あるのはprintdocumentだけです。


その PrintDocument は System.Drawing.Printing.PrintDocument クラスですか?
であれば、前提条件がおかしいような気がします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
はま
会議室デビュー日: 2006/01/18
投稿数: 14
投稿日時: 2006-01-18 12:34
>じゃんぬねっとさん
返信ありがとうございます。

PrintDocument は System.Drawing.Printing.PrintDocument
で間違いありません。

すみません。前提条件のおかしい部分はどこでしょうか。わかりませんでした。
お手数ですがおしえてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-18 12:43
引用:

はまさんの書き込み (2006-01-18 12:34) より:

前提条件のおかしい部分はどこでしょうか。


PrintDocument のインスタンスには、何を印刷するのか保持していないハズです。
PrintPage イベントの Graphics に対して何を印刷するのか「設定」するからです。

ですので、System.Drawing.Printing.PrintDocument ではなく、
CrystalReports にあるような ReportDocument みたいな類じゃないかな?
と思ったのです。

そんなわけで、印刷自体の実装を見る必要があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-01-18 16:02
引用:

そんなわけで、印刷自体の実装を見る必要があります。



PrintControllerでしょうか。
OnEndPageで行けそうな気がして、サンプルを探してみました。

Output graphics files using your printing code
http://www.codeproject.com/csharp/printcontrollerfile.asp
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-18 16:40
引用:

todoさんの書き込み (2006-01-18 16:02) より:

PrintControllerでしょうか。
OnEndPageで行けそうな気がして、サンプルを探してみました。


PrintPage イベントで何かをセットしないと、何も入ってこないので、
「そんなわけで、印刷自体の実装を見る必要があります」と書いたんですが、
要するに、NSSPRNXA.DLL というものは (On)PrintPage をオーバーライドしていることになりますね。

Base を呼び出した後ならば、どうとでもなりそうですね。
普通に Graphics オブジェクトから Image に Draw すれば保存できるかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
はま
会議室デビュー日: 2006/01/18
投稿数: 14
投稿日時: 2006-01-18 21:51
引用:

todoさんの書き込み (2006-01-18 16:02) より:

PrintControllerでしょうか。
OnEndPageで行けそうな気がして、サンプルを探してみました。

Output graphics files using your printing code
http://www.codeproject.com/csharp/printcontrollerfile.asp



返信ありがとうございます。まさにこんな感じの動きが欲しかったんです。
現在VBしか読めない&PrintControllerの扱いが良くわからないので、ちょっと時間をかけてこのソース、調べてみます。
ありがとうございました。

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