如何为多个文件选择打印机?

时间:2011-12-20 09:43:21

标签: c# wpf printing

我有一个带有文档列表的WPF应用程序。我创建了一个打印全部按钮,将所有文档发送到我的默认打印机。我想让用户能够选择打印机,然后将所有文档发送到该打印机。

但是如何显示打印对话框并保存打印机信息?关闭对话框后如何打印到特定的打印机?

我的打印功能中有这个,并且工作正常(但对于错误的打印机)

var p = new Process
{
    StartInfo = new ProcessStartInfo
    {
       CreateNoWindow = true,
       Verb = "print",
       FileName = filePath
    }
};
p.Start();

3 个答案:

答案 0 :(得分:2)

感谢Ray提供了很多帮助。

以下方法适用于选择打印机。当用户在打印对话框中单击“打印”时,将捕获打印机队列。

public PrintQueue SelectPrinter()
{
     var dialog = new PrintDialog();
     if (dialog.ShowDialog() == true)
     {
        if (dialog.PrintQueue != null)
           return dialog.PrintQueue;
     }
     return null;
}

打印多个文档时可以使用打印队列;

...
var startInfo = new ProcessStartInfo
                        {
                           CreateNoWindow = true,
                           Verb = "printTo",
                           FileName = filePath,
                           Arguments = printQueue.FullName, // <-- here
                           WindowStyle = ProcessWindowStyle.Hidden,
                           UseShellExecute = true,
                        };
var p = Process.Start(startInfo);
...

答案 1 :(得分:1)

您可以使用PrintDialog

常见的使用模式是

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
    dialog.PrintVisual(visual, "Job Name");
    //dialog.PrintDocument(paginator, "Document Name");

}

如果要从文件打印,则需要加载文件并创建DocumentPaginator。如何做到这取决于您尝试打​​印的文件格式。

答案 2 :(得分:0)

这只是一个线索,而不是一个完整的答案,但我认为这可能有所帮助。

您可以使用Windows注册表列出打印机并更改默认打印机。

查看herehere

您可以使用.NET框架轻松地在注册表中进行读写。