2011-04-18 23 views
7

Tengo una aplicación WPF donde uso un visor de documentos. También comienzo a imprimir mediante programación con documentviewer.Print(); Sin embargo, cuando se presiona, abre la pantalla con las impresoras de Windows y hace que el usuario tenga que hacer clic en "Aceptar" nuevamente en esa pantalla para comenzar. ¿Hay alguna manera de evitar la confirmación y hacer DocumentViewer.Print(); ¿Inician inmediatamente el trabajo de impresión en la impresora predeterminada de Windows?WPF DocumentViewer - Imprimir sin confirmación

Respuesta

7

Todo lo que necesita es la cola de impresión por defecto, que se puede obtener a través de

var pq = LocalPrintServer.GetDefaultPrintQueue() 

partir de esto, se puede crear una XpsDocumentWriter:

var writer = PrintQueue.CreateXpsDocumentWriter(pq); 

Ahora, se puede obtener el DocumentPaginator de su DocumentViewer a través del Document property, que devuelve un IDocumentPaginatorSource que tiene un DocumentPaginator property:

var paginator = documentviewer.Document.DocumentPaginator; 

y se puede enviar ese derecho a la XpsDocumentWriter's Write method:

writer.Write(paginator); 

simple, ¿verdad?

+0

¡WOW! Sí, es realmente simple, mucho menos de lo que había anticipado. Muchas gracias. –

+0

@JimBeam: (estaba siendo sarcástico sobre el bit "simple") – Will

Cuestiones relacionadas