VB.NETでWindowsアプリケーションを開発しています。その中の帳票印刷機能(ActiveReports)でプリンタのトレイ指定を行っているのですが、RICOHのある機種でうまくいきません。


以下のようにトレイ1、2、3の値が.NETのPaperSourceKindの Custom (規格外の意味?)という値になってしまっています。Customを指定して印刷してもプリンタ側で標準に設定しているトレイからしか出力されません。トレイ1、トレイ2、トレイ3から出し分けしたい場合は、どのようにすれば良いでしょうか?

自動トレイ選択:FormSource
ページ範囲設定にしたがう:Custom
トレイ1:Custom
トレイ2:Custom
トレイ3:Custom

ちなみに以下の様な状態のプリンタの場合、意図したとおりに出力できます。
(Upperと指定すればトレイ1から、Middleと指定すればトレイ2から出力される)

自動トレイ選択:AutomaticFeed
トレイ1:Upper
トレイ2:Middle
手差しトレイ(マルチ):Manual

※上記の情報は、PrintDocument.PrinterSettings.PaperSources でそれぞれのプリンタから取得した値です。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2014/10/29 11:18:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント1000pt

> 以下のようにトレイ1、2、3の値が.NETのPaperSourceKindの Custom (規格外の意味?)

PaperSourceKind の Custom は、プリンター(ドライバ)固有の給紙方法であることを示しています。
(実際は、DEVMODE 構造体の dmDefaultSource が DMBIN_USER(256)を超える場合に、Custom を返却するようです。)

■ PaperSource.cs source code in C# .NET
http://reflector.webtropy.com/default.aspx/DotNET/DotNET/8@0/untmp/whidbey/REDBITS/ndp/fx/src/CommonUI/System/Drawing/Printing/PaperSource@cs/1/PaperSource@cs

また、Custom の場合の実際の値(256以上の値)については、PaperSource.RawKind を参照することで取得することが可能なようです。

■ PaperSource.RawKind プロパティ
http://msdn.microsoft.com/ja-jp/library/system.drawing.printing.papersource.rawkind.aspx

ただし、プリンター(ドライバ)固有の給紙方法については、環境に依存する為(同じ値でも環境によって異なる意味となる可能性がある為)、プリンタの登録自体をトレイ毎に作成して、印刷時にプリンタを切り替えるというやりかたの方が無難なようです。

<参考情報>
■ VB.NETでプリンタのプロパティの設定変更 - QA@IT
http://qa.atmarkit.co.jp/q/739

id:htn_beginer

cx20様、情報をありがとうございました。こちらで試してみようと思います。

2014/10/29 10:51:32
  • id:cx20
    なんとなくですが、プリンタの登録自体をトレイ毎に作成して、印刷時にプリンタを切り替えるというやり方の方が無難な気がします。

    <参考情報>
    ■ VB.NETでプリンタのプロパティの設定変更 - QA@IT
    http://qa.atmarkit.co.jp/q/739

    プリンタ固有情報については Win32 API を用いて(DEVMODE構造体に続くdmDriverExtra の領域)を設定すれば出来るかも知れませんが、
    一般向けには仕様が公開されていなさそうなので、厳しいのではないかと思います。

  • id:htn_beginer
    cx20様、コメントありがとうございます。目から鱗でした。試して見たいと思います。
    この場合、印刷順序って保証されますでしょうか?
    今回のケースだと多数のファイルを同時に複数トレイから印刷します。この時に印刷順序が守られている必要があるので。
    お礼させて頂きたいのでコメントでなく回答に記載頂ければと思います。
  • id:cx20
    > この場合、印刷順序って保証されますでしょうか?

    申し訳ないのですが、複数のプリンタを登録して同時印刷した場合に、印刷順序が保証されるか否かは存じ上げておりません。

    どうしても知る必要があるということでしたら、有償サポートになってしまうかと思いますが、マイクロソフトまたはプリンタメーカー(場合によっては、ActiveReports 提供ベンダー)に問い合わせをするのが確実かと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません