查看来自 SSRS / RDL 的 PDF

本文关键字:RDL PDF SSRS | 更新日期: 2023-09-27 18:31:25

我想访问RDL以获取PDF格式的报告。 我有

    static void Main()
    {
        string pdfOutputFIleName = @"C:'Development'testoutputAsPdf.pdf";
        var urlAsPdf = @"http://serverName/ReportServer/Reserved.ReportViewerWebControl.axd?ExecutionID=xxx&Culture=1033&CultureOverrides=False&UICulture=9&UICultureOverrides=False&ReportStack=1&ControlID=yyy&OpType=Export&FileName=Bug+Status&ContentDisposition=OnlyHtmlInline&Format=PDF";
        var client = new WebClient();
        client.UseDefaultCredentials = true;
        //client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
        client.Headers.Add("Content-Type", "application/pdf");
        Process(client, urlAsPdf, pdfOutputFIleName);
        Console.Read();
    }
    private static void Process(WebClient client, string url, string outputFileName)
    {
        Stream data = client.OpenRead(url);
        using (var reader = new StreamReader(data))
        {
            string output = reader.ReadToEnd();
            using (Stream s = File.Create(outputFileName))
            {
                var writer = new StreamWriter(s);
                writer.Write(output);
                Console.WriteLine(output);                                        
            }
        }
    }

该 URL 在我的浏览器中工作正常。 程序运行。 当我打开PDF时,我在Adobe中收到错误:

打开此文档时出错。 文件已损坏,并且 无法修复。

查看来自 SSRS / RDL 的 PDF

由于您已经指定了输出文件名和要从中读取的 URL,因此也许您可以使用 WebClient.DownloadFile(string address, string filename) 成员。

private static void Process(WebClient client, string url, string outputFileName)
{
    client.DownloadFile(url, outputFileName);
}