如何在当前浏览器窗口中打开PDF格式的报表,而不是报表服务的新浏览器窗口?

时间:2010-01-17 19:58:10

标签: sql-server-2008 reporting-services

SQL Server 2008 Reporting Services允许以PDF格式打开报告,并具有以下网址访问权限:

http://localhost:8080/reportserver?/MyReports/Report1&rs:Command=Render&rs:Format=PDF

但PDF将在新的浏览器窗口中打开。如何设置正确的参数并在当前浏览器窗口中打开它?

1 个答案:

答案 0 :(得分:0)

好的很酷,我们有一些事情可以开始。 弄清楚如何做到这一点很困难(花了一个合理的小时数),而且我不能自由地给你确切的代码(因为它属于我为其编写的人),但我可以给你做的方法。使用这种方法,您应该能够很好地在asplight控件中托管aspx页面,尽管您可能需要考虑渲染报表的物理大小,这样在托管时可能会有点紧张。

  • 在您的aspx页面中,创建一个HttpWebRequest,该URL应该指向SSRS安装中相应的reports文件夹
  • 创建包含报告参数的查询字符串,使用Encoding.UTF8.GetBytes(parameterString)将其转换为byte []
  • 将该字节数组写入您创建的HttpWebRequest的RequestStream
  • 执行request.GetResponse(),将其输出分配给新的HttpWebResponse对象(让我们称之为ssrsResponse)
  • 获取当前页面的响应对象(让我们称之为currentResponse)
  • 将currentResponse的内容类型设置为Application / PDF
  • Content-Disposition标头添加到currentResponse,将其值设置为inline;filename=[insert filename here]
  • 从ssrsResponse读取响应流并将其写入currentResponse(这只是将一个流的内容传输到另一个流的练习)
  • 致电currentResponse.End()