我的应用程序从画布(WPF,C#)打印,但应用程序需要分配默认打印机。默认打印机在PC上保存为.ini文件。概念是,工作人员可以单击画布上的打印按钮,画布将生成布局,然后发送到打印机。
所以,我需要做的两件事是:
单击打印按钮后,画布将以我想要的布局更新(通过数据绑定)并将作业发送到打印机(打印机检测到作业并显示在打印机队列中),但打印机从不打印该文件。这几乎就好像我排队了,但从未说过“开始”。
然后我的经典给了我一个错误(这可能是一个红色听证会),这是“另一台打印机正在使用打印机。以下状态是该计算机的使用状态---”
以下是我正在使用的两种主要方法。
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, "");
}));
}