即使指定了printervname,也始终打印到默认打印机
本文关键字:打印 打印机 默认 printervname | 更新日期: 2023-09-27 17:53:36
我创建了一个windows应用程序,需要在其中静默打印PDF文件。
string printername="jn-01";
if (printername != "NULL")
{
using (PrintDialog pd = new PrintDialog())
{
pd.PrinterSettings.PrinterName = printername;
MessageBox.Show(printername);
pd.PrinterSettings.Copies = 1;
if (pd.PrinterSettings.IsValid)
{
ProcessStartInfo info = new ProcessStartInfo(e.FullPath);
info.Verb = "PrintTo";
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);
}
}
我使用上面的代码进行打印。但系统总是打印到默认的ptinter
我该如何解决这个问题?
您正在打印对话框上设置打印机名称,但没有使用打印对话框进行打印。请注意,打印时从不使用pd
。而是使用PrintTo
谓词执行PDF文件(有效地使用ShellExecute
(。现在PrintTo
谓词支持将打印机名称作为命令行参数提供。您可以在info.Arguments
上设置它。然而,为了实现这一点,处理PDF文件的默认应用程序需要支持它。有关这些动词的更多信息,请参阅本页。
如果默认的PDF应用程序不支持此功能,则您可以选择在打印前调用SetDefaultPrinter,然后在打印后将其恢复为以前的值(使用GetDefaultPrinter先查找默认值(。请注意,这会更改用户的默认打印机,因此不应成为执行此操作时的默认选择。