6

我想使用背景图像,当我将其放入 Reporting Services 2008 R2 时,图像 dpi 降低到 96 dpi。(而不是 300)

这太低了,用户无法阅读,我担心。

当我上网时,我发现了这个结果:

http://social.technet.microsoft.com/Forums/en-US/sqlreportingservices/thread/48de91f9-1844-40c1-9614-5ead0b4b69a5#P1Q14

问题 14:如何提高 Reporting Services 2005 中导出报表的 PDF 质量?

回答: Reporting Services 2005 中的 PDF 渲染器会调整以 96 DPI 提供的所有图像的大小,无论您将图像传递给渲染器时图像的 DPI 是多少。这意味着 300 DPI 图像或什至 600 DPI 图像在 PDF 中的大小将如同只有 96 DPI 一样。换句话说,您的高 DPI 图像可能会渲染得比预期大。
尽管将图像大小设置为 96 DPI,但 PDF 渲染器似乎以高于 96 DPI 的质量渲染更高 DPI 的图像。即使尺寸错误,图像实际上也会以更高的质量呈现。一个必要的解决方法是根据 96 DPI 计算将图像大小调整为适当的英寸数。然后使用 Bitmap.SetResolution 将图像设置为至少 300 DPI。这可能会提供更高质量的图像,该图像具有适当数量的像素以适合报告。

但我不知道如何使用 Bitmap.SetResolution,我使用的是经典的报表查看器 Web 控件,我需要一个功能齐全的 pdf 导出。

PS:也许该问题已在 Reporting Services 2012 中解决。有人有一些信息吗?

问候

4

3 回答 3

4

我找到了一个网页,它解释了如何以良好的 dpi 导出 PDF。http://codeproject.com/Articles/95750/High-fidelity-printing-through-the-SSRS-Report-Vie

关键是用xml代码初始化deviceInfo字符串

       var sb = new System.Text.StringBuilder(1024);
       var xr = System.Xml.XmlWriter.Create(sb);
       xr.WriteStartElement("DeviceInfo");
       xr.WriteElementString("DpiX", "296");
       xr.WriteElementString("DpiY", "296");
       xr.Close();

        deviceInfo = sb.ToString();

        rsExec.SetExecutionParameters(parameters, "fr-fr");

        results = rsExec.Render(format, deviceInfo,
                  out extension, out encoding,
                  out mimeType, out warnings, out streamIDs);

在这种情况下,此解决方案有效。我可以生成具有良好 dpi 的 pdf 文件,但是带有 activex 的打印按钮不起作用(这应该不是问题)和导出按钮也不起作用。我必须添加一个下载按钮才能打印。这是部分解决方案恕我直言

于 2012-12-07T15:37:59.843 回答
1

如果您使用 Reporting Services 的 WebAPI 接口,我发现这种方式有效:

为了获得更好的图像 PDF 渲染,像这样传递设备信息: http://serverName/ReportServer?/pathtoReport/ReportName&InvoiceIdOrOtherParameter=24013&rs:Command=Render&rs:Format=PDF&rs:DeviceInfo=<DpiX>300<%2FDpiX><DpiY>300<%2FDpiY>

于 2017-05-19T11:57:42.657 回答
0

上面的答案让我明白了这一点,但我想为那些使用不同编码平台的人澄清一下。目标是构建以下要作为 DeviceInfo 参数发送的字符串:

    DeviceInfo = '<DeviceInfo><DpiX>300</DpiX><DpiY>300</DpiY></DeviceInfo>'

通过这样做,我能够使用 300dpi 图像作为背景图像并正确渲染为 pdf,尽管您会想在 reportviewer 中设计时找到一种隐藏图像的方法,因为预览仍然显示它更大。

于 2020-07-08T21:28:25.400 回答