вторник, 15 июня 2010 г.

Использование отчетов .NET Reporting для печати объектов

Как правило внешний вид данных на форме отличается от того вида, в котором их необходимо вывести на печать, поэтому для формирования печатной страницы удобно использовать отчеты, например, входящие в состав .NET Framework 2.0, rdls файлы.
Программный вывод отчета описан в этой статье, но для вывода на печать оптимальнее всего получить отчет в формате EMF. Xml для описание экспорта будет выглядеть следующим образом:
<DeviceInfo>
<SimplePageHeaders>True</SimplePageHeaders>
<OutputFormat>EMF</OutputFormat>
</DeviceInfo>

Полный текст для получения результата отчета будет выглядеть следующим образом:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Microsoft.Reporting.WinForms.LocalReport report = new Microsoft.Reporting.WinForms.LocalReport();
report.ReportPath = "Report1.rdlc";

string MimeType;
string Encoding;
string FileNameExt;
string[] streams;
Microsoft.Reporting.WinForms.Warning[] aWarn;

string deviceInfo =
"<DeviceInfo>" +
"<SimplePageHeaders>True</SimplePageHeaders>" +
"<OutputFormat>EMF</OutputFormat>" +
"</DeviceInfo>";

byte[] aReport = report.Render("IMAGE", deviceInfo, out MimeType, out Encoding, out FileNameExt, out streams, out aWarn);

MemoryStream memImage = new MemoryStream(aReport);
Image imgReport = Image.FromStream(memImage);

e.Graphics.DrawImage(imgReport, 0, 40);
}

Комментариев нет:

Отправить комментарий