将SSRS .RDL呈现为PDF并打开它

时间:2010-04-23 14:09:34

标签: .net asp.net vb.net pdf-generation reporting-services

我试图成为最具描述性的。

好的,所以既然我之前从未做过这样的事情,我想最好在开始之前先问一下,不要让整个过程出错。

我们有一个必须从ASP.NET应用程序调用的报告,它可以是一个简单的按钮。通过代码隐藏,我必须传递一个参数,渲染报告,不要将它保存在任何地方,只是打开它给用户,作为.pdf文件,这样他就可以保存或打印它。 所以,请给我链接或提示,我正在阅读MSDN文档...

如果您对其他技术有任何建议,那么我希望听到它,但是必须从ASP.NET调用它。

提前致谢!

编辑:


现在我已经完成了报告,我只需要知道最好的方法来调用它。 它不能直接从URL完成,因为这允许用户保存或关闭pdf文件,这不是我想要的。

我开始认为实现这一目标的最佳方法如下: 我以编程方式呈现PDF,并在我的应用程序结构中的临时文件夹中创建.PDF文件,然后启动一个新线程来打开文件,等待用户关闭它,当他这样做时,我删除文件和线程已经死了。

你们觉得怎么样?你们都有更好的选择吗?

2 个答案:

答案 0 :(得分:9)

好吧,如果报告在报告服务器上,可能最简单的方法就是将用户发送到将根据需要生成报告的URL。在您的浏览器地址栏中尝试这样的操作,看看我的意思:

http://SERVER_NAME/ReportServer/Pages/ReportViewer.aspx?%2fFOLDER_NAME%2fREPORT_NAME&rs:Command=Render&rs:Format=PDF&PARAMETER_NAME=VALUE

有关详细信息,请参阅this knowledge base article on Report Server URLs。 编辑:开始here on MSDN可能会有帮助。

答案 1 :(得分:2)

如果您查看编辑记录,您会看到我完全改变了这一点。

再次回答我自己的问题:

我认为最好的方法是:

  • 在SQL Reporting Services报表服务器中生成报表;
  • 通过用.NET编写的代码渲染它,并捕获一个字节数组作为响应;
  • 将字节数组写入Response.OutputStream;
  • 添加附件标题,以便该文件可以下载给用户;

希望如果有人必须这样做,这会有所帮助。