Buscar

martes, 12 de mayo de 2009

Imprimir en la impresora por defecto un reporte de Crystal Report en C#

Este código busca la impresora por defecto del equipo, y se la asigna a un reporte, para imprimirlo, sin necesidad de mostrar el reporte, ni de mostrar el cuadro de dialogo de impresión.

public void Imprimir()
{
string NombreImpresora = "";//Donde guardare el nombre de la impresora por defecto

//Busco la impresora por defecto
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
{
PrinterSettings a = new PrinterSettings();
a.PrinterName = PrinterSettings.InstalledPrinters[i].ToString();
if (a.IsDefaultPrinter)
{
NombreImpresora = PrinterSettings.InstalledPrinters[i].ToString();

}
}


rptReporte rpt = new rptReporte ();// Instancio el reporte


rpt.SetDataSource(Dt);//Asigno la fuente de datos a mi reporte.
rpt.PrintOptions.PrinterName =NombreImpresora; );//Asigno la impresora
rpt.PrintToPrinter(2, false, 0, 0); );//Imprimo 2 copias
}


Si necesitamos imprimir el reporte en una impresora especifica, simplemente asignamos el nombre de la impresora al reporte

rpt.PrintOptions.PrinterName =”ElNombreImpresora”;


Nombre de espacios utilizados

using System.Drawing.Printing;

14 comentarios:

  1. Me gustaría saber que ta pesado es ese proceoss para una aplciación que se está actualziandop por cada 10 segundos.

    ResponderEliminar
  2. En realidad quiciera saber que tan pesado es este proceso de buscar una impresora. pues me interesa implementarlo en un sistema donde el acceso a disco debe ser muy rapido.

    ResponderEliminar
  3. Pues la verdad es un poco pesado, lo que yo hago es leer la impresora por defecto al inicio del programa y no la vuelvo a leer hasta que termine la aplicación; pero para correr este proceso cada 10 segundos creo que no te funcionaria como esperas.

    ResponderEliminar
  4. ok gracias por responder.. eso se agradece ya estareos enviando más dudas jeje saludos bye!!

    ResponderEliminar
  5. Buen post, es Código util! Gracias por el amor al arte. Saludos

    ResponderEliminar
  6. Muchisisisimas Gracias por Tu codigo, yo lo use solamente para cuando necesite un formato especifico, y cuando no uso la impresora por default sin necesidad de tu codito... me ayudo bastante con un problemita que tenia y asi no tener que cambiar de impresora predeterminada

    ResponderEliminar
  7. que bueno que les allá gustado el código, si tienen código bueno que deseen publicar, me lo pueden enviar y lo publicamos, para seguir ayudando a toda la comunidad.

    ResponderEliminar
  8. Como hago para espicificar el nombre del informe a imprimir?

    Porque cuando envio el informe, en el buffer de la impresora me aparece "document" y quiero que diga "informe x"

    saludos!

    ResponderEliminar
  9. Exelente es preciso lo que estaba buscando

    ResponderEliminar
  10. si la impresion es desde aspx ?? cuando ajecuta esa linea de codigo ya no regresa el debug, me paso antes para visualizarlo y eran permisos del iis donde se crean el docuemnto temporal. crees que sea lo mismo ?

    ResponderEliminar
  11. hola espero siga abierto el foro, bueno, muy buen codigo para imprimir directo a la impresora, ahora lo que necesito es ver si la impresora esta prendida, o le falta papel, o tiene algun problema, necesito capturar eso y mostrar al usuario
    gracias

    ResponderEliminar
  12. alguien me puede ayudar? yo quiero imprimir desde una aplicación de consola en c# un reporte de crystal repòrt con mysql. es para imprimir un ticket... mi correo es mariovargasgaxiola@outlook.com

    ResponderEliminar
  13. no hay nada importante aqui

    ResponderEliminar