Reporting services 在Reporting Services中,将背景图像的质量提高到96 dpi以上
我想使用一个背景图像,当我把它放在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图像的渲染可能比预期的大。Reporting services 在Reporting Services中,将背景图像的质量提高到96 dpi以上,reporting-services,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
尽管将图像大小设置为96 DPI,但PDF渲染器 似乎以高于96 DPI的质量渲染更高DPI的图像。 即使大小调整错误,图像实际上也是以一定的速度渲染的 更高的质量。一个必要的解决方法是将图像大小调整为 基于96 DPI计算的适当英寸数。然后使用 Bitmap.SetResolution可将图像设置为至少300 DPI。那可能 提供更高质量的图像,该图像的像素数应适当 在报告中适当地匹配 但是我不知道如何使用Bitmap.SetResolution,我使用的是经典的ReportViewer web控件,我需要一个功能齐全的pdf导出 PS:这个问题可能在Reporting Services 2012中得到解决。有人有一些信息吗
关于我发现了一个网页,介绍了如何使用良好的dpi导出PDF 关键是用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如果您使用WebAPI接口来报告服务,我发现这种方法是可行的:
为了获得更好的图像PDF呈现,请按如下方式传递设备信息:
http://serverName/ReportServer?/pathtoReport/ReportName&InvoiceIdOrOtherParameter=24013&rs:Command=Render&rs:Format=PDF&rs:DeviceInfo=300300
上面的答案让我想到了这一点,但我想为那些使用不同编码平台的人澄清一下。目标是构建以下字符串作为DeviceInfo参数发送:
DeviceInfo = '<DeviceInfo><DpiX>300</DpiX><DpiY>300</DpiY></DeviceInfo>'
DeviceInfo='300300'
通过这样做,我能够使用300dpi的图像作为背景图像并正确地渲染为pdf,尽管您希望在reportviewer中进行设计时找到隐藏图像的方法,因为预览显示的图像仍然要大得多