我想使用背景图片,当我将它放在Reporting Services 2008 R2中时,图像dpi降低到96 dpi。 (而不是300)
这太低了,用户无法读取,我担心。
当我上网时,我发现了这个结果:
问题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中得到解决。有人有一些信息吗?
此致
答案 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中进行设计时隐藏图像的方法,因为预览仍然可以显示它大得多。