c# - 拦截 PrintDialog 到 XPS Document Writer

标签 c# wpf xps printdialog

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

一切都很好,除了 Microsoft XPS Document Writer 是打印机的选择之一。有没有办法阻止或拦截用户选择 XPS 文档编写器并将它们发送到 Save 方法,以便我可以提示用户对 xps 文档进行签名?

最佳答案

免责声明:我以前从未使用过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您可以用来识别这台打印机。

关于c# - 拦截 PrintDialog 到 XPS Document Writer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043761/

相关文章:

c# - 将 DataGridView 导出到带有标题的文本文件

c# - 异常后串口不存在

c# - TreeView 的 HierarchicalDataTemplate 中的键绑定(bind)

WPF 3.5 动画缓动函数?

wpf - XPS 的意义何在?

c# - HTML Agility Pack 是否包含非托管代码?如果是这样,我的应用程序会遇到问题吗?

c# - Docker 中长时间运行的 C# 进程

WPF工具包图表: Customize datapoint label

wpf - 在 WPF/XAML 中使用 CMYK 颜色

c# - 什么是 XPS 文件及其使用方式