Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WPF打印visual并指定printerName_C#_Wpf_Printing - Fatal编程技术网

C# 使用WPF打印visual并指定printerName

C# 使用WPF打印visual并指定printerName,c#,wpf,printing,C#,Wpf,Printing,我正在尝试打印WPF应用程序中的页面。由于PrintVisualMethod的易用性,我决定将其创建为画布 但问题是我无法动态设置打印机名称-使用打印对话框也不是一个选项,员工必须能够单击打印按钮,并通过读取配置文件(而不是基于Windows默认打印机)自动打印到分配给他们的打印机。这可以使用PrintDocument的print page eventhandler部分实现,例如pd.PrintPage+=new PrintPageEventHandlerpageLayoutForPrint,因

我正在尝试打印WPF应用程序中的页面。由于PrintVisualMethod的易用性,我决定将其创建为画布

但问题是我无法动态设置打印机名称-使用打印对话框也不是一个选项,员工必须能够单击打印按钮,并通过读取配置文件(而不是基于Windows默认打印机)自动打印到分配给他们的打印机。这可以使用PrintDocument的print page eventhandler部分实现,例如pd.PrintPage+=new PrintPageEventHandlerpageLayoutForPrint,因为我也可以将打印机名称设置为字符串,但我试图偷懒并利用内置方法

我对印刷很陌生,但这里是我的两个问题

如果使用PrintVisual方法,是否可以设置printerName

如果无法设置printerName,打印画布的最佳方式是什么?是有效地打印坐标并将其传递给打印机的原理。例如,要仅使用文本框打印文档,我们可以使用以下伪代码:

int left=textbox.left; inttop=textbox.top; e、 Graphics.DrawStringTextbox.Text、printFont、笔刷。黑色、左侧、顶部、新StringFormat


将PrintDialog与PrintVisual一起使用。您不必显示打印对话框。

将打印对话框与PrintVisual一起使用。您不必显示打印对话框。

答案嵌入在此处

简短的回答是:

1导入系统。打印可能需要添加参考 2这段代码假设已经创建了一个画布就可以了

        PrintDialog dialog = new PrintDialog();
        PrintQueue queue = new LocalPrintServer().GetPrintQueue(printerName);
        dialog.PrintQueue = queue;
        dialog.PrintVisual(canvas, "");

答案就在这里

简短的回答是:

1导入系统。打印可能需要添加参考 2这段代码假设已经创建了一个画布就可以了

        PrintDialog dialog = new PrintDialog();
        PrintQueue queue = new LocalPrintServer().GetPrintQueue(printerName);
        dialog.PrintQueue = queue;
        dialog.PrintVisual(canvas, "");

您可以用这个简单的代码轻松地完成它。很遗憾,你的问题重复了

private void Button_Click(object sender, RoutedEventArgs e)
{
    PrintDialog _PrintDialog = new PrintDialog();

    _PrintDialog.PrintQueue = new PrintQueue(new PrintServer(), "Printer Name");

    _PrintDialog.PrintVisual(CanvasOrAnyVisualName, "Printing Job Name");
}

您可以用这个简单的代码轻松地完成它。很遗憾,你的问题重复了

private void Button_Click(object sender, RoutedEventArgs e)
{
    PrintDialog _PrintDialog = new PrintDialog();

    _PrintDialog.PrintQueue = new PrintQueue(new PrintServer(), "Printer Name");

    _PrintDialog.PrintVisual(CanvasOrAnyVisualName, "Printing Job Name");
}

对不起,我想我的问题不清楚。它必须是一个特定的打印机,这通常不是客户端默认的。例如,他们的windows默认打印机是三星A4打印机,但当他们单击“打印”时,需要使用东芝标签打印机。我会更新我的帖子以确保这是清楚的。对不起,我想我的问题不清楚。它必须是一个特定的打印机,这通常不是客户端默认的。例如,他们的windows默认打印机是三星A4打印机,但当他们单击“打印”时,需要使用东芝标签打印机。我会更新我的帖子,以确保这是明确的。