Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 在Reporting Services中,将背景图像的质量提高到96 dpi以上_Reporting Services - Fatal编程技术网

Reporting services 在Reporting Services中,将背景图像的质量提高到96 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

我想使用一个背景图像,当我把它放在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,我使用的是经典的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中进行设计时找到隐藏图像的方法,因为预览显示的图像仍然要大得多