2012-01-20 41 views
1

印刷ジョブ中にプリンタトレイを切り替える方法はありますか?私はピック/パックスリッププログラムをまとめるように頼まれました。彼らは、紙を白い紙にするために紙を紙に印刷し、それを適切に照合したい(ピック、パック、パック、パック、パック、ピック、パック、パック、パック、パック; ...)。印刷ジョブ中にプリンタトレイを変更する

デフォルトのトレイを設定する際に他のスレッドが見つかりましたが、ジョブ中にトレイが交互に表示されませんでした。たぶん私は正しいことを探しているわけではない。

違いがあるのか​​どうかわかりませんが、私たちのプリンタはHP 3015nで、クライアントはXPとWin 7 Proの両方になります。

+0

abatishchev - あなたの投稿を編集しました。開発環境とプログラミング言語は関係ありませんか? – Sam

+0

https://www.youtube.com/watch?v=6iXuU4b5mh4&t=25s? :-) – juFo

答えて

3

- >リファレンス - >あなたはこのコードでプリンタのトレイを変更することができます

//Namespace: System.Drawing.Printing 
//Assembly: System.Drawing (in System.Drawing.dll) 

PrintDocument printDoc = new PrintDocument(); 
PaperSize oPS = new PaperSize(); 
oPS.RawKind = (int)PaperKind.A4; 
PaperSource oPSource = new PaperSource(); 
oPSource.RawKind = (int) PaperSourceKind.Upper; 

printDoc.PrinterSettings = new PrinterSettings(); 
printDoc.PrinterSettings.PrinterName = sPrinterName; 
printDoc.DefaultPageSettings.PaperSize = oPS; 
printDoc.DefaultPageSettings.PaperSource = oPSource; 
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage); 
printDoc.Print(); 
printDoc.Dispose(); 
+0

だから、基本的には何百ものミニプリントを作成し、ジョブ間の紙送り元を変更していますか? – Sam

+0

テストする機会がありませんでしたが、それが動作するかどうかを確認することができますが、それ以上に私は自分でそれを作った。数日後に他の誰もコメントしていないので、私は答えとしてマークします。ありがとう! – Sam

+1

申し訳ありませんが、私はこのアプローチを使用して、同じジョブ内のトレイを変更することはできません。 printDoc_PrintPageでトレイを変更します。その変更を無視しているようです...完全に機能する実装の可能性はありますか? – CarneyCode

0

私の知る限り、基本的にあなただけが使用するキューで2つのジョブを提出する必要はありません。あなたはプロジェクトからSystem.Drawing.dllを参照する必要があり、このような何かを試すことができ

+0

わかりません、私はあなたに精通していますか?ありがとう。 – Sam

+0

2種類のトレイの用紙種類の名前は何ですか – MethodMan

+0

Paper Kindとは何を意味するのかよく分かりませんか?トレイ1の色は8.5x11、トレイ2の色は8.5x11です。 – Sam

0

を追加します。

string _paperSource = "TRAY 2"; // Printer Tray 
string _paperName = "8x17"; // Printer paper name 

//Tested code comment. The commented code was the one I tested, but when 
//I was writing the post I realized that could be done with less code. 

//PaperSize pSize = new PaperSize() //Tested code :) 
//PaperSource pSource = new PaperSource(); //Tested code :) 

/// Find selected paperSource and paperName. 
foreach (PaperSource _pSource in printDoc.PrinterSettings.PaperSources) 
{ 
    if (_pSource.SourceName.ToUpper() == _paperSource.ToUpper()) 
    { 
     printDoc.DefaultPageSettings.PaperSource = _pSource; 
     //pSource = _pSource; //Tested code :) 
     break; 
    } 
} 

foreach (PaperSize _pSize in printDoc.PrinterSettings.PaperSizes) 
{ 
    if (_pSize.PaperName.ToUpper() == _paperName.ToUpper()) 
    { 
     printDoc.DefaultPageSettings.PaperSize = _pSize; 
     //pSize = _pSize; //Tested code :) 
     break; 
    } 
} 

//printDoc.DefaultPageSettings.PaperSize = pSize; //Tested code :) 
//printDoc.DefaultPageSettings.PaperSource = pSource; //Tested code :)