私のアプリケーションはキャンバス(WPF、C#)から印刷しますが、アプリケーションはデフォルトのプリンターを割り当てている必要があります。デフォルトのプリンタは、PCに.iniファイルとして保存されます。コンセプトは、スタッフが私のキャンバスの印刷ボタンをクリックすると、キャンバスがレイアウトを生成してからプリンターに送信するというものです。
だから、私がする必要がある2つのことは次のとおりです。
- テキストファイル内の文字列に基づいてデフォルトのプリンタを設定します
- 製本後に印刷する
印刷ボタンをクリックすると、キャンバスが(データバインディングを介して)必要なレイアウトで更新され、ジョブがプリンターに送信されます(プリンターはジョブを検出し、プリンターキューに表示されます)が、プリンターはドキュメントを印刷しません。それはまるで私が仕事をキューに入れたかのようですが、「開始」とは決して言いませんでした。
その後、私のキヤノンは、「別のプリンターがプリンターを使用しています。次のステータスはそのコンピューターの使用状況です---」というエラーを表示します(これは赤いヒアリングである可能性があります)。
これが私が使用している2つの主な方法です。
internal void AutoPrint()
{
string printerName = GetPrinterNameFromTextFile();
PrintDialog dialog = new PrintDialog();
getView(); //queries database, returns model and binds
Print(dialog, config.PrinterName);
}
internal void Print(PrintDialog dialog, string printerName)
{
Canvas canvas = new Canvas();
canvas = this.PrintCanvas;
PrintQueue queue = new LocalPrintServer().GetPrintQueue(printerName);
dialog.PrintQueue = queue;
Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(delegate()
{
dialog.PrintVisual(canvas, "");
}));
}