Imprimir ReportViewer directo a la impresora
-
jueves, 13 de octubre de 2011 14:14
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 codigoespero sus prontas respuestas
Todas las respuestas
-
jueves, 13 de octubre de 2011 14:18Sospecho 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...
-
domingo, 23 de octubre de 2011 9:21Moderador
Hola,
Aquí tienes información sobre como imprimir desde e tu control.
Un Saludo!
Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.es} | {secondnug.com}- Propuesto como respuesta Alberto PoblacionMVP, Moderator domingo, 23 de octubre de 2011 15:34
-
viernes, 04 de noviembre de 2011 16:06
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
-
domingo, 06 de noviembre de 2011 8:52Moderador
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}- Marcado como respuesta Alberto PoblacionMVP, Moderator sábado, 03 de diciembre de 2011 18:04
-
sábado, 14 de enero de 2012 1:25
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?
-
martes, 31 de enero de 2012 7:29Moderador
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, 10 de abril de 2012 15:04Hola 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
-
miércoles, 11 de abril de 2012 6:42Moderador
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 17:34Entiendo 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.
-
jueves, 12 de abril de 2012 6:47Moderador
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}
-
viernes, 13 de abril de 2012 20:17
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.
-
domingo, 15 de abril de 2012 18:03Moderador
-
martes, 05 de febrero de 2013 8:53
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();
}
}
}
-
jueves, 14 de febrero de 2013 17:24
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


