3

我正在通过 RDLC 文件生成报告。我的报告中有一些带有条形图的图表。当我将报告导出为 PDF 时,图表的分辨率很差,条形图会像素化。是否可以为在 RDLC 中以本地模式运行的报告定义更高分辨率的 PDF?

我发现这个链接说通过 ReportServer 生成的 pdf 可以被赋予更高的分辨率。但是我在任何地方都找不到这个配置文件。 http://msdn.microsoft.com/en-us/library/ms154682.aspx

它是 RDLC 文件的限制吗?RDLC 文件是否可行?

谢谢!

4

3 回答 3

2

我找到了解决此问题的方法。通过reportviewer设置可能无法更改PDF的dpiX和dpiY,但我们可以通过C#手动导出或渲染pdf来实现。这样做并在其 XMLReport.Render()的参数中使用 dpiX 和 dpiY 值。<deviceinfo>这是执行此操作的代码:

        string reportype = "PDF";
        string mimeType;
        string encoding;
        string fileNameExtension;

        string devinfo = "<DeviceInfo><ColorDepth>32</ColorDepth><DpiX>350</DpiX><DpiY>350</DpiY><OutputFormat>PDF</OutputFormat>"+
        "  <PageWidth>8.5in</PageWidth>" +
         "  <PageHeight>11in</PageHeight>" +
         "  <MarginTop>0.5in</MarginTop>" +
         "  <MarginLeft>0.5in</MarginLeft>" +
          "  <MarginRight>0in</MarginRight>" +
          "  <MarginBottom>0in</MarginBottom>" +
        "</DeviceInfo>";

        Warning[] warnings;
        string[] streams;
        byte[] renderedBytes;

        renderedBytes = this.reportViewer1.LocalReport.Render(reportype, devinfo, out mimeType,

    out encoding,

    out fileNameExtension,

    out streams,

    out warnings);

        using (FileStream fs = new FileStream("output3.pdf", FileMode.Create))
        {
            fs.Write(renderedBytes, 0, renderedBytes.Length);
        }
于 2013-07-31T17:57:58.047 回答
1

这些设置可以在 rsreportserver.config 中更改,查看属于您的报表服务器实例的设置。

此处的示例:http ://technet.microsoft.com/en-us/library/ms156281.aspx

希望对您有所帮助。

于 2013-07-26T00:13:32.560 回答
-2

PDF 导出中的图表是导出为 PDF 的位图。您可能无法使用 RDLC 来控制它们。使用 RDL,您可以使用 DeviceInfo 进行额外控制。

更正:我的印象是无法为 RDLC 设置设备信息,但我当然错了。快速查找并找到了 PDF 渲染器的这些可能的设备信息设置

于 2013-07-31T17:29:51.303 回答