P. *_*ohm 6 reporting-services
我想使用背景图像,当我将它放在Reporting Services 2008 R2中时,图像dpi降低到96 dpi.(而不是300)
我担心,这太低而不能被用户阅读.
当我上网时,我发现了这个结果:
问题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中得到解决.有人有一些信息吗?
问候
我找到了一个网页,其中解释了如何以良好的 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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该解决方案有效。我可以生成一个具有良好 dpi 的 pdf 文件,但是带有 activex 的打印按钮不起作用(这不应该是问题),导出按钮也不起作用。我必须添加一个下载按钮才能打印。恕我直言,这是部分解决方案