【问题标题】:Display a PDF from Reporting Services从 Reporting Services 显示 PDF
【发布时间】:2011-04-01 13:22:18
【问题描述】:

我想在我的 WinForms 应用中显示从 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

【问题讨论】:

    标签: c# pdf reporting-services


    【解决方案1】:

    您可以将 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);
    

    更新:

    如果默认情况下不起作用,请尝试在 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)");
    

    【讨论】:

    • 谢谢,看起来不错,但是我尝试了,得到以下错误“远程服务器返回错误:(401)未经授权。”我的原始代码没有任何错误。我有什么需要做的吗?
    • @HABAN,很遗憾我无法访问所有用户密码。我可以做些什么来确保我使用集成身份验证?
    • @HABAN,好的,我明白了:webClient.Credentials = CredentialCache.DefaultCredentials;
    • 我目前正在尝试同样的事情并收到 403(禁止)。在本地工作,但不在生产中。 URL 在粘贴到浏览器时有效。知道为什么吗?尝试了一些用户代理和设置代理凭据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多