拦截打印对话框到XPS文档编写器

3

目前我提供给用户两个控件:保存和打印。当用户选择保存时,WPF显示区域会被打包并通过XpsDocumentWriter发送,并提示并鼓励用户签署新的xps文档。当用户选择打印时,PrintDialog.PrintVisual将同一区域打印到用户选择的打印机上。

一切都很好,但Microsoft XPS Document Writer是打印机选择中的一个选项。有没有办法阻止或拦截用户选择XPS文档编写器,并将他们发送到保存方法,以便我可以提示用户签署xps文档?

1个回答

3
< p > 声明:我以前从未使用过PrintDialog,但它看起来像是这样的东西可能会起作用:

System.Windows.Controls.PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
    PrintQueue selectedQueue = printDialog.PrintQueue;
    if (selectedQueue.Name == "Microsoft XPS Document Writer")
    {
        // Run your XPS save & sign code
    }
    else
    {
        // Run your printDialog.PrintVisual() code
    }
}

我不太喜欢硬编码打印机名称(我假设它会随着语言设置而变化)。可能有更好的PrintQueue属性可用于识别此打印机。


1
尝试使用selectedQueue.QueueDriver.Name替代 - 这是打印机驱动程序的名称,也是“Microsoft XPS文档编写器”。 打印机名称可以(轻松)更改,但从我所见,驱动程序名称无法更改(毕竟它真正关注的是驱动程序)。 - Pieter Witvoet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接