2013-04-08 16 views
8

Sto tentando di stampare un documento FlowPDF su una stampante particolare, senza chiedere conferma all'utente. La stampante è un convertitore PDF.Stampa WPF - Imposta la stampante automaticamente su WPF PrintDialog

Questa grande opera, se non che la stampa alla stampante predefinita:

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 c'è uno System.Drawing.Printing.PrinterSettings oggetto su documento che ha una proprietà PrinterName che può essere impostato per la stampante Voglio, ma non lo vedo in WPF.

risposta

15

Per prima cosa è necessario un riferimento nel progetto a System.Printing. Quindi è possibile utilizzare il seguente codice subito dopo aver dichiarato l'oggetto PrintDialog.

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

Il PrintQueue è un oggetto che rappresenta la stampante e tutto il resto che coda di stampa.

+0

Brilliant! Ho passato un'intera giornata e non sono riuscito a capirlo. Grazie per l'aiuto. – BrokeMyLegBiking

+1

A proposito, come si specifica una stampante di rete come \\ nomeserver \ printername – Praveena

+0

@Praveena, non sono sicuro di quale sia la sintassi esatta per una stampante di rete. Prendo sempre la stringa dalla finestra di dialogo Stampa e la uso. – Stewbob

2

Questo ha funzionato per me, quando ho usato una stampante di rete condivisa:

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