System.Drawing.Printing
名前空間を使用して文書を印刷するコードがあります。これは今、Windowsサービスに移動する必要があります。 The documentationはこれが不可能であると述べています。これはこれまでのところ私の知見を裏付けています。私は代わりにSystem.Printing
名前空間を使用することによってこれを動作させることができるという前提のもとで作業しています。ここでWindowsサービスからのEMFの印刷
は、私がこれまで持っているコードです:
private Metafile myDoc;
myDoc = GetEmfDoc();
PrintServer ps = new PrintServer("\\server1\printer1");
EnumeratedPrintQueueTypes[] flags = { EnumeratedPrintQueueTypes.Local };
PrintQueueCollection queues = ps.GetPrintQueues(flags);
PrintQueue pq = queues.First<PrintQueue>();
pq.AddJob("JobName", ?);
だから私はpq.AddJob()
にmyDoc
を渡したいが、これは可能ではないようです。 System.Drawing.Printing
を使用すると、単にPrintDocument.PrintPage
イベントのページ単位でこれをレンダリングすることができました。
私は可能なことをしようとしていますか?その場合、誰かが正しい方向に私を向けることができますか?
"ローカルシステムアカウント"としてログオンするようにサービスを設定しました+ "サービスとデスクトップとの対話を許可する"チェックボックスをオンにしましたか? –
これまでのところ、これは私が解決策に来た最も近いものです。このフラグが設定されていればSystem.Drawing.Printing.PrintDocumentを使用し、PrintSettings.IsValidを呼び出すことはありません。 –