3

現在、保存と印刷の2つのコントロールをユーザーに提供しています。ユーザーが[保存]を選択すると、WPFディスプレイの領域がパッケージ化され、XpsDocumentWriterを介して送信され、ユーザーは新しいxpsドキュメントに署名するように求められます。ユーザーが[印刷]を選択すると、PrintDialog.PrintVisualは、ユーザーが選択したプリンターに同じ領域を印刷します。

Microsoft XPS Document Writerがプリンターの選択肢の1つであることを除けば、すべてうまくいきます。XPSドキュメントライターのユーザー選択を防止または傍受してSaveメソッドに送信し、ユーザーにxpsドキュメントへの署名を求める方法はありますか?

4

1 に答える 1

3

免責事項:私はこれまで使用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このプリンタを識別するために使用できるより良いプロパティがあります。

于 2011-02-18T18:09:13.387 に答える