2011-11-15 12 views
0

私はローカル処理モードで画像としてエクスポートするために使用しています次のコードは、コードが正常に動作して、ここでAsp.net-レポートビューアの輸出は

Response.Buffer = true; 
Response.Clear(); 
Response.ContentType = mimeType; 
Response.AddHeader("content-disposition", "attachment; filename= hi." + "jpeg"); 
Response.BinaryWrite(byts); 
Response.Flush(); 
Warning[] warnings; 
string[] streamids; 
string encoding; 
string extension; 
string mimeType = "image/png";' 
string deviceInfo ="<DeviceInfo><OutputFormat>PNG</OutputFormat></DeviceInfo>"; 
byte[] byts = null; 
byts = ReportViewer1.LocalReport.Render("Image", deviceInfo , out mimeType, out encoding, out extension, out streamids, out warnings); 
Response.Buffer = true; 
Response.Clear(); 
Response.ContentType = mimeType; 
Response.AddHeader("content-disposition", "attachment; filename= hi." + "jpeg"); 
Response.BinaryWrite(byts); 
Response.Flush(); 

ですが、それはしていませんShanmugapriya.D

答えて

2

することができます

事前にイメージとして完全なレポートをエクスポートし、最初のページのみを画像としてエクスポートしている、私は画像のような第2のページを見ることができなかった、 私を助けてください 感謝の画像を取得するReportViewerコントロールから1ページ。何ができることはすべてのページの画像を生成することである - このような場合には

private Stream LocalReportCreateStreamCallback(string name, string extension, 
     Encoding encoding, string mimeType,bool willSeek) 
{ 
    var stream = new MemoryStream(); 
    m_pages.Add(stream); 
    return stream; 
} 

としてCreateStreamCallbackをとり、そのコントロールのCurrentPageプロパティを変更したり、Render overloadを使用するか、Renderメソッドはまでコールバックに呼びかけ続けますあなたのm_pagesコレクションはすべてのページ画像のデータで満たされます。さて、あなたはおそらくそれらの画像をすべて圧縮して応答を送ることができます。あるいは、画像操作ライブラリを使ってそれらの画像をつなぎ合わせると大きな画像を形成して戻ってくることもできます(サーバーにかなりの負荷がかかるので)。

通常、プレビューの種類のものを作成する場合は、そのイメージをキャッシュし、それらのイメージへのハイパーリンクを含むHTMLを返すことをお勧めします。

+0

+1優れた答えと良いアドバイス – Icarus