【问题标题】:Asp.net- Report viewer export to Image in a local processing modeAsp.net-报表查看器以本地处理模式导出到图像
【发布时间】:2011-12-29 05:19:10
【问题描述】:

我用来在本地处理模式下导出为图像的以下代码是

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

【问题讨论】:

    标签: asp.net report viewer


    【解决方案1】:

    您只能从 ReportViewer 控件获取一页的图像。您可以做的是为所有页面生成图像 - 通过更改控件的CurrentPage 属性或使用采用 CreateStreamCallback 的Render overload,例如

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

    在这种情况下,Render 方法会一直调用回调,直到页面完成,因此您的 m_pages 集合将填充所有页面图像的数据。现在,您可能可以压缩所有这些图像并通过响应发送,或者您可以使用一些图像处理库将这些图像拼接在一起以形成一个大图像以返回(这不是一个好主意,因为它会给您的服务器带来相当大的负载)。

    通常,如果您要创建预览之类的东西,那么好主意是缓存这些图像并返回包含指向这些图像的超链接的 html。

    【讨论】:

      【解决方案2】:

      尝试将 StartPage 元素添加到您的设备信息中并将其设置为“0”。见http://msdn.microsoft.com/en-us/library/ms155373.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 2012-10-01
        • 2016-05-11
        相关资源
        最近更新 更多