以下のようにトレイ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、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
<参考情報>
■ VB.NETでプリンタのプロパティの設定変更 - QA@IT
http://qa.atmarkit.co.jp/q/739
プリンタ固有情報については Win32 API を用いて(DEVMODE構造体に続くdmDriverExtra の領域)を設定すれば出来るかも知れませんが、
一般向けには仕様が公開されていなさそうなので、厳しいのではないかと思います。
この場合、印刷順序って保証されますでしょうか?
今回のケースだと多数のファイルを同時に複数トレイから印刷します。この時に印刷順序が守られている必要があるので。
お礼させて頂きたいのでコメントでなく回答に記載頂ければと思います。
申し訳ないのですが、複数のプリンタを登録して同時印刷した場合に、印刷順序が保証されるか否かは存じ上げておりません。
どうしても知る必要があるということでしたら、有償サポートになってしまうかと思いますが、マイクロソフトまたはプリンタメーカー(場合によっては、ActiveReports 提供ベンダー)に問い合わせをするのが確実かと思います。