2011-04-01 84 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