10

ReportViewer.rdlcファイルから、ブラウザーを妨害するだけのコントロールを省略して、コードレベルで大きな非グラフィカルレポート(数千ページ)をレンダリングしたいと思います。約2000ページのレポートをレンダリングするためにテストすると、Microsoft.Reporting.WebForms.LocalReport.Renderメソッドが完了するまでに約30分かかります。これは、ユーザーエクスペリエンスが悪いと見なされます。

レンダリングのパフォーマンスを向上させるためのトリックや代替ソリューションはありますか?コードで、.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);

事前に感謝します、どんな助けでも大歓迎です!

4

5 に答える 5

0

大きな PDF ファイルを生成するにはメモリが必要ですが、必要に応じてメモリの使用を最適化する方法があります。

  1. 最大 5 ~ 10 ページの個別の PDF ドキュメントとしてレポートを生成します (無料の iTextSharpPDF ファイル ライターなどの特定の PDF ライブラリを使用)
  2. 次に、これらすべての PDF ファイルを 1 つの大きな PDF ドキュメントに結合します。

この手法は、レポート生成の進行状況を制御する場合にも役立ちます。

于 2015-02-10T15:02:05.910 に答える
0

データソースとしてデータテーブルを返すと、オブジェクトのリストよりもはるかに高速に実行されます

于 2013-04-12T20:03:09.423 に答える