Как я могу улучшить производительность метода LocalReport.Render при экспорте PDF из .rdlc в коде?

Я хочу рендерить большие неграфические отчеты (тысячи страниц) на уровне кода, опуская элемент управления ReportViewer , который просто мешает браузеру, из .rdlc файлы. Когда я тестирую рендеринг отчета объемом около 2000 страниц, метод Microsoft.Reporting.WebForms.LocalReport.Render занимает около получаса, что считается неудовлетворительным для пользователя.

Существуют ли какие-либо уловки или альтернативные решения для повышения производительности рендеринга: в коде, переделывая файл .rdlc или где-то еще, например, просто увеличивая оборудование?

Пример кода:

LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/report.rdlc");

SetDataSources(ref localReport);

string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;

string deviceInfo =
"<DeviceInfo>" +
"  <OutputFormat>PDF</OutputFormat>" +
"  <PageWidth>8.5in</PageWidth>" +
"  <PageHeight>11in</PageHeight>" +
"  <MarginTop>0in</MarginTop>" +
"  <MarginLeft>0in</MarginLeft>" +
"  <MarginRight>0in</MarginRight>" +
"  <MarginBottom>0in</MarginBottom>" +
"</DeviceInfo>";
}

Warning[] warnings;
string[] streams;
byte[] renderedBytes;

//Render the report
renderedBytes = localReport.Render(
            reportType,
            deviceInfo,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

Любая помощь приветствуется, заранее спасибо!

10
задан Chepene 6 August 2012 в 09:26
поделиться