none
Imprimir ReportViewer directo a la impresora RRS feed

  • Pregunta

  • Hola a todos en esta oportunidad escribo para que me puedan ayudar necesito  imprimir un reporte ubicado en un servidor de reportes
    mi aplicación es wpf browser aplication he agregado un repotviewer pero necesito que imprima directo a la impresora predeterminada sin que me muestre la vista previa he leido en foros que  ya lo han hecho pero pruebo el codigo y no funciona tal vez me estoy equivocando o falta mas codigo

    espero sus prontas respuestas

    jueves, 13 de octubre de 2011 14:14

Respuestas

Todas las respuestas

  • Sospecho que esa pregunta te la van a poder responder mejor en el foro de programación que aquí porque depende de las propiedades del propio control; en realidad poco tiene que ver con Reporting Services...
    jueves, 13 de octubre de 2011 14:18
  • Hola,

    Aquí tienes información sobre como imprimir desde e tu control.

    Enlace: http://geeks.ms/blogs/fdiaz/archive/2009/07/21/enlaces-ssrs-imprimir-informes-a-partir-del-reportviewer.aspx

    Un Saludo!


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.es} | {secondnug.com}
    domingo, 23 de octubre de 2011 9:21
    Moderador
  • Hola A todos

    Aun sigo con el mismo problema no logro avanzar por lo que veo esto es para imprimir reportes locales pero como se hace para imprimir directo a la impresora cuando mi reporte se encuentra alojado en un servidor de reportes

    he tratado de realizarlo de modo local como indica el ejemplo que me envias pero nada no se en que momento haces la llamada a la impresora

    por favor espero me puedan ayudar ya que no tengo experiencia es estos temas

    viernes, 4 de noviembre de 2011 16:06
  • Hola,

    Puedes exportar tu informe y una vez exportado mandarlo a imprimir. Para exportarlo sin que el usuario se entere de lo que haces, puedes usar los servicios web de Reporting Services para ello.

    Aquí tienes un ejemplo de como hacerlo: http://geeks.ms/blogs/fdiaz/archive/2006/10/17/Exportando-un-informe-desde-Reporting-Services.aspx

    Ya nos contarás que tal,

    Un Saludo!


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.es} | {secondnug.com}
    domingo, 6 de noviembre de 2011 8:52
    Moderador
  • Hola a todos por fin logre imprimir directo a la impresora despues de mucha lucha lo hice siguiendo los consejos de muchos foros

    primero el report viewer lo exporte a un pdf que lo guarde en una unidad de la pc luego ese documento es el que envio a la impresora como comentaba frank pero ahi no terminaba la lucha puesto que mi trabajo era imprimir libretas de notas  y no podia guardar tantos documentos en la pc asi que opte por borrar los pdf una vez estuvieran impresos.

     

    Ahora solo me falta saber como puedo hacer para que el pdf no se abra cada vez que se imprima investigue que se debe hacer en segundo plano pero como se hace alguien me puede explicar?

     

    sábado, 14 de enero de 2012 1:25
  • Hola,

    Prueba con Process.Start.

    http://msdn.microsoft.com/es-es/library/0w4h05yb(v=vs.80).aspx

     

    Un Saludo!


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.es} | {secondnug.com}
    martes, 31 de enero de 2012 7:29
    Moderador
  • Hola Como haz hecho al final.. yo tengo el mismo problema y me urge mandar a imprimir en pdf unos reportes, espero me puedas ayudar.. gracias de antemano
    martes, 10 de abril de 2012 15:04
  • Con los enlaces que tienes en este hilo puedes hacerlo ;).

    Por un lado te creas un botón de ejemplo de para imprimir (uno que lance el procedimiento), luego exporta el fichero a pdf y con procces.start lo envías a imprimir.

    Un Saludo


    Fran Díaz | twitter: @frandiaz_ | Blog: {geeks.ms/blogs/fdiaz/} | Communities: {onobanet.es} & {secondnug.com}

    miércoles, 11 de abril de 2012 6:42
    Moderador
  • Entiendo muy bien lo del boton, lo del proccess.start y lo de tu enlace "Exportando un informe desde Reporting Services" le he estado dando vueltas a tu blog sobre esto, pero el problema que tengo es que no quieren nada grafico, solo quiere que un servicio de windows este ejecutandose siempre y solo caundo se mande a llamar se impriman los reportes sin necesidad de hacer click en ningun lugar ni que se vea el pdf creado para imprimir, espero me puedas ayudar con este lio... gracias.
    miércoles, 11 de abril de 2012 17:34
  • Hola,

    Con process.start puedes hacer que no se vea el pdf y todo lo puedes hacer en segundo plano para que el usuario no se de cuenta. Para esto tendrás que programarte alguna aplicación para que te haga esto (el estar esperando, mirar si se cumplen las condiciones, etc).

    Para ello lo suyo es que te vayas a algún foro de c# o vb.net y preguntes para ver como hacer esto :).

    Saludos


    Fran Díaz | twitter: @frandiaz_ | Blog: {geeks.ms/blogs/fdiaz/} | Communities: {onobanet.es} & {secondnug.com}

    jueves, 12 de abril de 2012 6:47
    Moderador
  • Hola Fran,

    Solo te queria agradecer por toda tu ayuda... al final he podido realizar el servicio asi como lo tiene en tu blog de coverti a pdf un reporte imprimirlo y borrar el pdf, muchisimas gracias por todo y sigue asi.

    Saludos.

    viernes, 13 de abril de 2012 20:17
  • Me alegro que te haya servido y que visites mi blog ^^.

    Recuerda marcar la respuesta correcta ;).

    Un Saludo


    Fran Díaz | twitter: @frandiaz_ | Blog: {geeks.ms/blogs/fdiaz/} | Communities: {onobanet.es} & {secondnug.com}

    domingo, 15 de abril de 2012 18:03
    Moderador

  • Gracias de antemano!

    Edito::

    he conseguido imprimir pero hasta que no cierro manualmente el adobe reader no se borra el fichero creado ni sale de la aplicación , y la idea es que sea automático... alguien me puede echar una mano?? adjunto codigo:

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Reporting.WinForms;



    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {

            //declaracion de variables globales
            System.Diagnostics.Process printjob = new System.Diagnostics.Process();
            
            String v_mimetype = "";
            String v_encoding = "";
            String v_filename_extension = "pdf";
            String[] v_streamids;
            Microsoft.Reporting.WinForms.Warning[] o_warnings;
            byte[] content;
            //NOMBRE DEL FICHERO
            String v_filename = @"C:\temp\ejemplo"+DateTime.Now.ToString("ddMMyyyyhhmmssFFFF")+".pdf";

            
            public Form1()
            {
                InitializeComponent();
            }

            

            private void objReportViewer1_Load(object sender, EventArgs e)
            {
                try{
                //objReportViewer1.PrintDialog();
                }catch(Exception ex){}

            }



            private void Form1_Load(object sender, EventArgs e)
            {



               
                objReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Remote;
                Uri objUri = new Uri("http://...../reportserver");
                objReportViewer1.ServerReport.ReportServerUrl = objUri;
                objReportViewer1.ServerReport.ReportPath = "/carpeta/informe";

               
                //Set de parametros
                List<ReportParameter> paramList = new List<ReportParameter>();
                paramList.Add(new ReportParameter("COD", "6E", false));
                paramList.Add(new ReportParameter("ALB", "12-67540", false));
                paramList.Add(new ReportParameter("S", "CG", false));
                this.objReportViewer1.ServerReport.SetParameters(paramList);
                
                //Refresco de reporte
                
                objReportViewer1.RefreshReport();
               
           }

           
            
            private void objReportViewer1_RenderingComplete (object sender, EventArgs e) {

               //guardar el resultado del reporte en una cadena de bytes
                content = objReportViewer1.ServerReport.Render("PDF", null, out v_mimetype, out v_encoding, out v_filename_extension, out v_streamids, out o_warnings);
                            
                //guardar en un fichero lo anterior
                System.IO.FileStream o_fs = new System.IO.FileStream(v_filename, System.IO.FileMode.Create);             
                o_fs.Write(content, 0, content.Length);
                o_fs.Close();
                o_fs = null;
                
                /*
               //'abrir el fichero pdf
                System.Diagnostics.Process v_process   = System.Diagnostics.Process.Start(v_filename);
              

                 //esperar a que se abra el lector pdf
                v_process.WaitForExit();
                */

                //Imprimir
                //Console.WriteLine(DateTime.Now.ToString("ddMMyyyyhhmmssFFFF"));          
                printjob.StartInfo.FileName = v_filename;
                printjob.StartInfo.UseShellExecute = true;
                printjob.StartInfo.CreateNoWindow = false;
                printjob.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                printjob.StartInfo.Verb = "print";
                printjob.Start();
                //esperar a la ejecucion de la impresion para borrar el fichero
                printjob.WaitForExit();
                //borrar fichero
                System.IO.File.Delete(v_filename);
                Application.Exit();
               







            }




        }
    }


    • Editado JuanJoGrx martes, 5 de febrero de 2013 16:58 cambio de situación
    martes, 5 de febrero de 2013 8:53
  • ya lo he conseguido, sustituyendo adobe por foxit reader... todo bajo control

    Pero me asalta una duda.... como imprimir mas de una copia sin necesidad de un bucle?

    gracias de antemano

    jueves, 14 de febrero de 2013 17:24