2011-04-01 69 views
5

我想在我的WinForms应用程序中显示从Reporting Services生成的PDF。显示来自Reporting Services的PDF

我试过如下:

Uri uri = new Uri("http://myReportServer?MyReport&rs%3aCommand=Render&rs:Format=pdf"); 
System.Diagnostics.Process.Start(uri.ToString()); 

其中启动浏览器,然后又提示我打开或保存此文件。

理想情况下,我想仅在浏览器或PDF阅读器中显示文件。问题是我必须打开浏览器,然后打开用户不需要的PDF查看器。

有没有一种简单的方法来使用URL来做到这一点?

我的另一种选择是只写一些看起来很简单的C#代码。有一些例子在这里:

http://geekswithblogs.net/bsherwin/archive/2007/04/29/112094.aspx

这里:

http://www.codeproject.com/KB/reporting-services/PDFUsingSQLRepServices.aspx

回答

4

您可以下载PDF格式的磁盘,然后使用的Process.Start表现出来。

看看这个例子:

 Uri uriDownload = new Uri("http://myReportServer?MyReport&rs%3aCommand=Render&rs:Format=pdf"); 
     string strSavePath = @"C:\test\test123.pdf"; 

     System.Net.WebClient wcli = new System.Net.WebClient(); 
     wcli.DownloadFile(uriDownload, strSavePath); 
     System.Diagnostics.Process.Start(strSavePath); 

UPDATE:

如果默认情况下不工作,尝试wcli.DownloadFile()之前,补充一点:

 wcli.Credentials = new NetworkCredential("username", "password", "domain"); 
     wcli.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
+0

谢谢,看起来不错,但我试过,并得到以下错误'远程服务器返回错误:(401)未经授权。'我没有收到我的原始代码的任何错误。有什么我需要做的吗? – openshac 2011-04-01 14:21:26

+0

@openshac:我更新了我的答案,看看。 – HABJAN 2011-04-01 14:38:08

+0

@HABAN,不幸的是我没有访问所有的用户密码。有什么我可以做,以确保我使用集成身份验证? – openshac 2011-04-01 15:06:59