Pergunta

Atualmente estou fornecendo o usuário dois controles: salvar e imprimir.Quando o usuário seleciona Salvar, uma região do display WPF é empacotada e enviada por meio de um XPSDocumentWriter e o usuário é solicitado e incentivado a assinar o novo documento XPS.Quando o usuário seleciona Imprimir, um printdialog.printvisual imprime essa mesma região para uma impressora selecionada pelo usuário.

Tudo bem e bom, exceto que o Microsoft XPS Document Writer é uma das escolhas para impressoras.Existe uma maneira de prevenir ou interceptar a seleção do usuário do gravador de documentos XPS e enviá-los para o método Salvar para que eu possa solicitar ao usuário assinar o documento XPS?

Foi útil?

Solução

Disclaimer: I've never used PrintDialog before, but it looks like something like this might work:

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
    }
}

I don't really like having the printer name hard-coded (I assume it varies with language settings). Possibly there is a better property of PrintQueue that you can use to identify this printer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top