在Reporting Services中,将背景图像的质量提高到96 dpi以上

时间:2012-12-07 14:11:27

标签: reporting-services

我想使用背景图片,当我将它放在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质量?

     

回答:无论图像的DPI是什么,Reporting Services 2005中的PDF呈现器都会调整以96 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 个答案:

答案 0 :(得分: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的打印按钮不起作用(这应该不是问题)和导出按钮。我必须添加一个下载按钮进行打印。这是一个部分解决方案imho

答案 1 :(得分:0)

我遇到了同样的问题,我设法找到了解决方案:

SQL Server Reporting Services and Working with Overlay Data

您可能需要下载示例项目以查看输出。

祝你好运。

答案 2 :(得分:0)

如果您使用ReportingAP的WebAPI界面,我发现这种方式有效:

为了获得更好的PDF图像呈现效果,请按照以下方式传递设备信息:http://serverName/ReportServer?/pathtoReport/ReportName&InvoiceIdOrOtherParameter=24013&rs:Command=Render&rs:Format=PDF&rs:DeviceInfo=<DpiX>300<%2FDpiX><DpiY>300<%2FDpiY>

答案 3 :(得分:0)

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

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

通过这样做,我能够使用300dpi的图像作为背景图像并正确呈现为pdf,尽管您希望找到一种在Reportviewer中进行设计时隐藏图像的方法,因为预览仍然可以显示它大得多。