2012-02-14 26 views
5

por lo que he leído, el botón printviewer print no funciona en Google Chrome y Firefox porque está hecho con un control ActiveX que solo funciona en IE. Así que estaba tratando de crear un botón asp.net fuera del informe e imprimir el informe programáticamente, pero está siendo un problema y me preguntaba si existe una solución más simple para hacer que el informe se imprima en Google Chrome.Botón Printview ReportViewer en Google Chrome

Editar/Actualizar: He encontrado este botón de impresión ReportViewer que se supone que funciona para Firefox y Google Chrome, parece que funciona para Firefox pero me imprime una página en blanco en Google Chrome. http://cafalse.blogspot.com/2011/04/reportviewer-print-button-for-firefox.html

Respuesta

1

Si no te importa agregar tu propio botón en algún lugar de la página. Esto solo funciona si tu forma de generar el informe es similar a la mía. Básicamente tomo el Informe, lo renderizo en bytes y envío esos bytes como Respuesta en formato pdf. Esto abrirá el archivo como PDF, que la mayoría de los navegadores admiten, como Chrome. Esto requiere que el usuario dé un paso más y haga clic en imprimir.

ServerReport sr = new ServerReport(); 
ReportViewer.ProcessingMode = ProcessingMode.Remote; 
sr = ReportViewer.ServerReport; 
sr.ReportServerUrl = new Uri("http://****/****"); 
sr.ReportPath = "/Report"; 
ReportParameter paramDateFrom = new ReportParameter(); 
ReportParameter paramDateTo = new ReportParameter(); 
ReportParameter paramState = new ReportParameter(); 
ReportParameter paramCounty = new ReportParameter(); 
string dateFrom = TB_Date_From.Text; 
string dateTo = TB_Date_To.Text; 
string state = DDL_State.SelectedValue; 
string county = DDL_County.SelectedValue; 
paramDateFrom.Name = "DateFrom"; 
paramDateFrom.Values.Add((dateFrom != "" ? dateFrom : null)); 
paramDateTo.Name = "DateTo"; 
paramDateTo.Values.Add((dateTo != "" ? dateTo : null)); 
paramState.Name = "State"; 
paramState.Values.Add((state != "" ? Common_Functions.resolveStateID(state) : null)); 
paramCounty.Name = "County"; 
paramCounty.Values.Add((county != "" ? Common_Functions.resolveCountyID(county) : null)); 
ReportViewer.ServerReport.SetParameters(new ReportParameter[] { paramDateFrom, paramDateTo, paramState, paramCounty }); 
// DUMP PDF TO BROWSER 
Warning[] warnings; 
string[] streamids; 
string mimeType, encoding, extension; 
byte[] bytes = ReportViewer.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings); 
Response.Buffer = true; 
Response.Clear(); 
Response.ContentType = mimeType; 
Response.AddHeader("content-disposition", "inline; filename=myfile." + extension); 
Response.BinaryWrite(bytes); 
string pdfPath = Server.MapPath("~") + "pdf." + extension; 
FileStream pdfFile = new FileStream(pdfPath, FileMode.Create); 
pdfFile.Write(bytes, 0, bytes.Length); 
pdfFile.Close(); 
Response.Flush(); 
Response.End();