8

如何设置PrintDocument.PrinterSettings.PrinterName为默认打印机?

我不是在谈论在操作系统中设置默认打印机。相反,我说的是设置 PrintDocument 对象,以便它打印到默认打印机。

4

6 回答 6

13

如果我理解正确,您希望能够在不重新创建 PrintDocument 的情况下将 PrinterName 重置为默认打印机 (1), 并且 (2) 在您可能已经将其设置为其他内容之后 ,或者 (3) 当自首次创建 PrintDocument 以来,默认打印机可能已更改 (因此您不能仅依赖于在初始构造后缓存目标实例提供的默认值)

在这种情况下,搜索“ C# 获取默认打印机名称”会在 stackoverflow 上找到以下出色的帖子:What's the best way to get the default printer in .NET

以投票最多的答案中提供的示例为基础,并考虑到您已经拥有PrintDocument一些您不想重新创建的设置;您可以创建PrinterSettings该类的新实例,仅用于复制默认打印机名称。

// Create a new instance of the PrinterSettings class, which 
// we will only use to fetch the default printer name
System.Drawing.Printing.PrinterSettings newSettings = new System.Drawing.Printing.PrinterSettings();

// Copy the default printer name from our newSettings instance into our 
// pre-existing PrintDocument instance without recreating the 
// PrintDocument or the PrintDocument's PrinterSettings classes.
existingPrintDocumentInstance.PrinterSettings.PrinterName = newSettings.PrinterName;

您可以查看链接的帖子以了解 WMI 等替代技术,但我认为这对您来说是最简单和最干净的解决方案。

于 2011-12-01T06:05:55.647 回答
5

它会自动初始化为默认打印机。没做什么。

于 2011-03-02T07:40:50.017 回答
2
GetDefaultPrinter() 

{ PrinterSettings settings = new PrinterSettings(); 

foreach (string printer in PrinterSettings.InstalledPrinters) 

{ settings.PrinterName = printer; 

if (settings.IsDefaultPrinter) 

return printer; 

} 

return string.Empty; 

}
于 2011-12-03T09:52:43.350 回答
0

我假设您已经在操作系统级别设置了默认打印机。当您从代码启动打印时,它默认转到默认打印机。您不必明确设置它。

每个打印请求都会发生这种情况。我的意思是,如果您已将打印设置为另一台打印机,现在您想使用默认打印机,只需删除显式设置,它将再次使用默认打印机。

高温高压

于 2011-03-02T09:09:51.303 回答
0

如果我错了,请纠正我,但您正在寻找默认打印机的名称,然后设置PrintDocument.PrinterSettings.PrinterName为此。

当您使用它时PrintDocument.PrinterSettings.PrinterName,默认使用默认打印机。

于 2011-12-01T11:00:11.400 回答
0

默认情况下,如果您未在对象上设置任何内容,您将登陆默认打印机。这是您正在寻找的官方来源:MSDN Link to PrintDocument Class

标记示例上方写的句子:“以下代码示例在默认打印机上打印名为 C:\My Documents\MyFile.txt 的文件。”

高温高压

于 2011-12-05T09:41:31.847 回答