以下の件について、解決法などご存じの方、またアイデアなどございましたらご教示頂ければと存じます。
###前提・実現したいこと
複数のPDFファイルをファイルごとにカラー印刷、モノクロ印刷を切り替えながら、連続で印刷を実行したいと思っています。
複数のPDFファイルには、モノクロで印刷するファイル、カラーで印刷するファイルがランダムで混合されています。
あらかじめ、「デバイスとプリンタ」にカラー印刷用のプリンタ、モノクロ印刷用のプリンタが登録されています。
ループ処理の中で、
PDFファイルごとに、上記のカラー用プリンタ、モノクロ用プリンタを「通常使うプリンタ」に切り替えながら、1ファイルずつ印刷を実行しています。
###発生している問題・エラーメッセージ
連続で印刷する際、カラー用、モノクロ用のプリンタの切り替え処理が遅延しているのか、指定どおり正確に反映されません。
ただし、デバッグモードでステップ実行していくと、指定どおり正確に反映されます。
###該当のソースコード
C#
1 private void button1_Click(object sender, EventArgs e) 2 { 3 //引数にファイル名と印刷モードを渡す 4 foreach(printParams cls in targetFileParams) { 5 6 src = cls.filePath; 7 cmode = cls.colorMode; 8 //mLogger.Debug(src); 9 //mLogger.Debug(cmode.ToString); 10 11 //印刷実行 12 //SendPrinter(src, cmode); 13 SendPrinter2(src, cmode); 14 Debug.Print("印刷されました" + " : " + cmode); 15 } 16 } 17 18 private void SendPrinter2(string src, COLOR_MODE c) 19 { 20 //プリンタ名を取得する 21 string printername1 = ""; 22 if (c == COLOR_MODE.enFullColor) 23 { 24 printername1 = AutoPrinter_Color; 25 } 26 else 27 { 28 printername1 = AutoPrinter_Mono; 29 } 30 31 SetDefaultPrinter(printername1); 32 Application.DoEvents(); 33 34 //印刷実行 35 Process.Start(@"C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe", "/print " + src); 36 } 37 38 /// <summary> 39 /// 「通常使うプリンタ」に設定する 40 /// </summary> 41 /// <param name="printerName">プリンタ名</param> 42 public void SetDefaultPrinter(string printerName) 43 { 44 //WshNetworkオブジェクトを作成する 45 Type t = Type.GetTypeFromProgID("WScript.Network"); 46 object wshNetwork = Activator.CreateInstance(t); 47 //SetDefaultPrinterメソッドを呼び出す 48 t.InvokeMember("SetDefaultPrinter", 49 System.Reflection.BindingFlags.InvokeMethod, 50 null, wshNetwork, new object[] { printerName }); 51 }
###試したこと
デバッグでのステップ実行では正確に反映されているので、プリンタ切り替えの遅延では?と思い、プリンタ切り替え処理と、印刷実行の間に、10秒間くらいのスリープ処理、待機処理を入れるなどして実行してみましたが、やはり指定どおりに反映されません。
※※ちなみに、ステップ実行の際は、プリンタ切り替えと印刷実行の間で、10秒間も間を空けていません。
※※また、エラーは出ておらず、ログには指定どおりのプリンタ名が渡され、設定されています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/04 06:19
2017/07/04 06:55
2017/07/04 07:42
2017/07/04 07:46
2017/07/04 12:57