ASP.NET - Imprimir un local report

 
Vista:

Imprimir un local report

Publicado por Hernaldo Sanchez (7 intervenciones) el 27/06/2007 00:17:28
Buenas tardes, primero que todo quiero agradecerles por toda la ayuda que me puedan brindar
segundo, mi problema es el siguiente, tengo un x cantidad de reportes con local report, quiero que se puedan imprimir, he investigado y solo se puede hacer eso con un server report, pero los que hice son muchos y ameritaria muchissssimo trabajo,
en la pagina de microsoft encontre en la buena teoria un ejemplo de como imprimir un local report, pero no he logrado que me funcione.

ok gracias por todo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Imprimir un local report

Publicado por hansellkopp (1 intervención) el 09/07/2007 22:54:47
Hola yo tenia ese problema y baje un codigo de internet y lo puede dentro de una clase y me funciono perfecto, te anexo el codigo

// EJEMPLO DE USO
// report.ReportPath = "C:\Reportes\FacturaPrevia.rdlc";
// report.DataSources.Clear();
// report.DataSources.Add(new ReportDataSource("Myds_VistaFactura", //ds.VistaFactura));
// clsDirectPrint dp = new clsDirectPrint();
// dp.Run(report);

// CLASE
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.Collections.Generic;
using Microsoft.Reporting.WinForms;
public class clsDirectPrint : IDisposable
{
private int m_currentPageIndex;
private IList<Stream> m_streams;

private Stream CreateStream(string name, string fileNameExtension, Encoding encoding,
string mimeType, bool willSeek)
{
Stream stream = new FileStream(name + "." + fileNameExtension, FileMode.Create);
m_streams.Add(stream);
return stream;
}

private void Export(LocalReport reportl)
{
ReportPageSettings p = report.GetDefaultPageSettings();
;

string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.25in</MarginTop>" +
" <MarginLeft>0.25in</MarginLeft>" +
" <MarginRight>0.25in</MarginRight>" +
" <MarginBottom>0.25in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);

foreach (Stream stream in m_streams)
stream.Position = 0;
}

private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, ev.PageBounds);

m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}

private void Print(LocalReport report)
{

if (m_streams == null || m_streams.Count == 0)
return;

PrintDocument printDoc = new PrintDocument();

if (!printDoc.PrinterSettings.IsValid)
{
string msg = String.Format("Can't find printer \"{0}\".", printerName);
Console.WriteLine(msg);
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}

public void Run(LocalReport report)
{
report.Refresh();
Export(report);
m_currentPageIndex = 0;
Print(report);
}

public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir un local report

Publicado por ronal gomez (1 intervención) el 06/03/2014 23:07:47
buenas me gustaria saber como implemento este codigo pero en asnet c#
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar