2011-02-18 2 views
2

현재 사용자에게 두 개의 컨트롤 (저장 및 인쇄)을 제공하고 있습니다. 사용자가 저장을 선택하면 WPF 디스플레이의 영역이 패키지로 만들어지고 XpsDocumentWriter를 통해 보내지고 사용자는 새 xps 문서에 서명하라는 메시지를 표시하고 권장합니다. 사용자가 Print를 선택하면 PrintDialog.PrintVisual은 사용자가 선택한 프린터에 동일한 영역을 인쇄합니다.XPS 문서 작성자에게 PrintDialog 가로 채기

Microsoft XPS Document Writer가 프린터의 선택 사항 중 하나라는 점을 제외하고는 모두 훌륭합니다. XPS 문서 작성자의 사용자 선택을 방지하거나 차단하여 Save 메서드로 보내어 사용자에게 xps 문서에 서명하도록 요청할 수있는 방법이 있습니까?

답변

2

면책 조항 : 나는 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 Document Writer"인 프린터 드라이버 이름입니다. 프린터 이름은 (쉽게) 바꿀 수 있지만, 드라이버 이름을 바꿀 수 없다는 것을 보았습니다. (실제로 드라이버는 결국 그 이름입니다.) –