2012-06-26 15 views
5

Tengo una aplicación .net 2.0 (C#) con un componente ejecutándose como un servicio y una interfaz de usuario para configurar el servicio.¿Cómo puedo saber si una impresora imprimirá en un archivo?

La interfaz de usuario proporciona una manera para que el usuario seleccione una impresora que será utilizada por el servicio.

Quiero que la IU filtre las impresoras configuradas para imprimir en archivo porque estos pritners causarán problemas para el servicio (se abrirá un cuadro de diálogo 'guardar como' pero el diálogo es invisible porque pertenece al servicio) .

El problema es que no puedo encontrar ningún método para detectar una impresora que está configurada para imprimir en un archivo.

System.Drawing.Printing.PrinterSettings tiene una propiedad llamada PrintToFile, ¡pero esto siempre se establece en falso!

+1

Y una impresora original puede mostrar "cargue más papel"; básicamente, cualquier impresora * puede * querer mostrar la IU. –

+0

Sí, a mi impresora de cañón le gusta mostrar barra de progreso y diálogos –

+0

Agregado a lo cual, creo que la mayoría de las impresoras se instalan por usuario, mientras que los servicios tienden a ejecutarse en cuentas de máquina, por lo que el servicio puede no tener acceso a la impresora de todas formas. –

Respuesta

1

PrinterSettings.PrintToFile solo se puede configurar mediante la clase System.Windows.Forms.Printing.PrintDialog. La opción Imprimir en archivo solo aparece en System.Windows.Forms.Printing.PrintDialog cuando la propiedad System.Windows.Forms.Printing.PrintDialog.AllowPrintToFile está establecida en verdadero.

Espero que resuelva su problema.

+0

Gracias por su sugerencia, pero no me ayuda. Necesito saber si una impresora ya se ha configurado, a través de las propiedades de la impresora, para imprimir en un archivo. Y necesito saber esto antes de enviar un nuevo trabajo de impresión. Además, hay aplicaciones "disponibles" que agregan una impresora virtual para imprimir en PDF. ¡Me gustaría saber cómo puedo detectarlas también! De las respuestas hasta ahora, parece que no se puede hacer. – user1483326

+0

Primero, tome la segunda parte de su pregunta: utilice la propiedad 'System.Drawing.Printing.PrinterSettings.installedprinters'. Obtiene una colección de impresoras instaladas. Puede usar la colección de nombres de impresora instalados para proporcionar al usuario una selección de impresoras para imprimir. Para la primera parte de su pregunta, consulte la clase PrinterSettings si le resulta útil. – mrd

Cuestiones relacionadas