2013-04-08 19 views
8

Ich versuche, ein WPF FlowDocument auf einen bestimmten Drucker zu drucken, ohne den Benutzer dazu aufzufordern. Der Drucker ist ein PDF-Konverter.WPF-Druck - Automatisches Festlegen des Druckers auf WPF PrintDialog

Dies funktioniert gut, außer dass er druckt auf dem Standarddrucker:

PrintDialog pd = new PrintDialog(); 
    var doc = ((IDocumentPaginatorSource) RTB.Document).DocumentPaginator; 
    // I would like to explicitly set the printer to print to here. 
    pd.PrintDocument(doc, "Print Document"); 

In WinForms gibt es eine System.Drawing.Printing.PrinterSettings auf Dokument-Objekt, das eine Eigenschaft Printer hat, die an den Drucker eingestellt werden kann Ich will, aber das sehe ich nicht in WPF.

Antwort

15

Sie benötigen zuerst eine Referenz in Ihrem Projekt zu System.Printing. Dann können Sie den folgenden Code verwenden, nachdem Sie Ihr PrintDialog Objekt deklariert haben.

pd.PrintQueue = new PrintQueue(new PrintServer(), "The exact name of my printer"); 

Die PrintQueue ist ein Objekt, das den Drucker und alles andere über diese Druckwarteschlange darstellt.

+0

Brilliant! Ich verbrachte einen ganzen Tag und konnte es nicht herausfinden. Danke für die Hilfe. – BrokeMyLegBiking

+1

Übrigens, wie geben Sie einen Netzwerkdrucker wie \\ Servername \ Druckername – Praveena

+0

@ Praveena, ich bin mir nicht sicher, was die genaue Syntax für einen Netzwerkdrucker ist. Ich greife immer einfach die Zeichenfolge aus dem Drucken-Dialogfeld und verwende diese. – Stewbob

2

Das ist für mich gearbeitet, wenn ich einen freigegebenen Netzwerkdrucker verwendet:

xPrintDialog.PrintQueue = New PrintQueue(New PrintServer("\\computer name"), "printer name")