ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

.NET Frameworkコミュの帳票別にプリンタ設定を覚える方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ここでは初めて質問させてもらいます。

帳票Aと帳票Bがあるとします。
・帳票AはA4でカセット1から給紙
・帳票Bは封筒で手差しから給紙

の2帳票を扱う場合、使うプリンタ、用紙、給紙を実行時に設定する良い方法はありますでしょうか?

私が以前から行ってる方法として、
【案1】同じプリンタでも帳票単位でプリンタを作成する。
同じプリンタでも、プリンタドライバを2つにして、それぞれ給紙や用紙を設定しておき、どっちのプリンタ(プリンタそのものは1台)を使うかで切り替える。
【案2】
それぞれの帳票で使用する「プリンタ名、PaperName、PaperSourceName」をString型で外部ファイルにテキストで覚えておき、印刷する時にSystem.Drawing.Printing.PrinterSettings APrtを作成し、Aprt.PrinterNameにプリンタ名を設定し、
Aprt.PaperSizes[i].PaperName==PaperNameが一致するのを探し、そのAprt.PaperSizes[i].Kindをドキュメントに設定する(給紙も同じ)
(用紙名でなくKindがそのまま保存できると良いのですが…)


案1だと、帳票の数だけプリンタを作成する必要がある。
案2だと、2ページ印刷(縮小して2ページ分を1つの紙に印刷)などのプリンタ固有の機能の対応が難しい。
の欠点があると思います。

そこでふと思ったのが、PrintDialogを使って設定した内容をそのまま、バイナリ形式などで外部ファイルに保存しておき、それを毎回流し込む事で、詳細な設定まで全てできるって事はできないのでしょうか?

コメント(3)

PrinterSettingsは確かSerializableとしてマークされてたなと検索してみた。

http://www.google.com/search?q=PrinterSettings+serialize

プリンタ固有部分の設定を保存するのは難易度高そうだなぁ・・・
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42909&forum=7
http://bbs.wankuma.com/index.cgi?mode=al2&namber=2377&KLOG=2

この辺を参考になされてはいかがでしょう?(未確認)
大まかにはPrinterSettingsからDEVMODE構造体を取得、プライベート領域まで含めてバイナリ形式で保存する……という感じになると思います。
そういう事ですか!
シリアライズってこういう使い方するんですね。
用語としては読んだことがあったのですが、発想まで至りませんでした。


DEVMODE構造体は基本的な項目は過去にAPIで触った事があります。
(独自の拡張領域は)ドライバのバージョンが変わるとアウトになる
可能性はありますが、サイズさえ正しく扱えればちゃんと動作しそうですね。

まだ試していませんが、数年前に少し触れた事のある箇所なので、
内容はよく理解できました、挑戦してみます。
ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

.NET Framework 更新情報

.NET Frameworkのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング