12

我有一份报告,它呈现从各种来源收集的图像 (jpg)。这在报表查看器中以及通过 Excel 导出时都可以正常工作。

但是,当导出为 PDF 时,大约 5% 的图像渲染不正确,如下图所示,左侧是原始图像,右侧是渲染的内容;

在此处输入图像描述 渲染图像图像

我发现,如果我在 mspaint 中打开其中一张图像,然后单击保存,则在下一次运行报告时,图像现在可以正确呈现。

对于 SSRS 在 PDF 中正确呈现图像的有效图像属性/格式是否有任何规则?本质上,我想以某种方式找到这些在报告运行之前会错误呈现的图像并事先修复它们......

4

4 回答 4

6

当前的解决方法

我从来没有最终让 SSRS 按原样显示问题图像,但是,在运行报告之前确定哪些图像将包含在不可显示集中,以便它们可以转换为支持的格式(自动)也是一个解决方案.

就我而言,所有图像都是通过用户上传到网站提供的,因此我能够在图像到达时对其进行识别和转换。对于所有现有图像,我能够运行一个脚本来识别问题图像并进行转换。

识别问题图像

从我拥有的数千张图像中,我能够确定无法正确渲染的图像具有以下属性:

  1. 图像具有 CMYK 颜色空间或;
  2. 图像具有扩展的颜色配置文件或;
  3. 以上两种

转换图像

我最初使用标准 .NET GDI ( ) 来处理图像,但是在处理具有额外System.Drawing数​​据的图像时,API 经常容易崩溃 ( )。OutOfMemoryException因此,我切换到使用ImageMagick,对于每个识别的图像,我:

  1. 剥离颜色配置文件;
  2. 转换为 RGB

请注意,在剥离颜色配置文件的情况下从 CMYK 转换为 RGB 不足以让所有图像正确渲染。

在将上传的图像保存到磁盘之前,我最终只是在从用户那里收到的每个图像字节流上执行这些项目(没有首先确定问题)。之后,我再也没有遇到过渲染问题。

于 2015-07-31T03:17:05.897 回答
4

由于输出看起来的方式,我会说那些 JPEG 图像具有 CMYK 色彩空间,但 SSRS 假设它们使用 RGB 色彩空间并在 PDF 中设置错误的色彩空间。
如果您可以发布 JPEG 图像和示例 PDF,我可以为您提供更多详细信息。

于 2013-03-27T09:13:58.007 回答
2

我在屏幕上正确渲染图像时遇到了完全相同的问题,但是当我将报告导出为 PDF 时,它看起来就像问题中的问题一样。这是我解决它的方法。

问题

第一个线索是我在 MSDN 上看到的这篇文章。似乎无论原始图像密度如何,SSRS 中的 PDF 渲染器都会将所有图像的大小调整为 96 DPI。如果图像的原始大小大于页面(或容器)的大小,那么您将遇到此问题。

解决方案

解决方案是调整源图像的大小,使其适合您的页面。这需要根据您的页面大小和边距设置进行一些计算。

就我而言,我使用的是 A4 纸尺寸,即 21 厘米 x 29.7 厘米。但是,我的左边距为 1.5 厘米,右边距为 0.5 厘米,总内宽为 19 厘米。我允许额外的 0.5 厘米作为误差范围,因此我使用 18.5 厘米的内部宽度。

21 cm - 1.5 cm - 0.5 cm - 0.5 cm = 18.5 cm

如前所述,PDF 渲染器生成的分辨率为 96 DPI(每英寸点数)。对于我们这些不在美国或利比里亚共和国的人来说,这是 37.79 DPC(每厘米点数)。所以,要得到我们的宽度:

18.5 cm * 37.79 dpc = 699 pixels

您的结果可能会有所不同,具体取决于 (1) 您使用的纸张尺寸,以及 (2) 左右边距。

由于页面高于宽度,我们只需要在保持图像比例的同时调整宽度。如果您使用的纸张尺寸比它的高宽,您可以使用长度。

因此,现在在 Paint(或您选择的图像编辑器)中打开源图像,并按比例将图像大小调整为所需的宽度(或长度)(以像素为单位),保存它,将其导入到您的容器中,并根据视觉调整图像大小容器。它在屏幕上应该看起来一样,现在可以正确呈现为 PDF。

于 2014-12-18T00:33:50.690 回答
0

这是向 Microsoft Connect 报告的问题。
SSRS 2008 如何获得最好的图像质量?

您在 PDF 中看到的图像行为是 PDF 渲染器执行的某些图像转换的结果,基于 PDF 规范要求将图像序列化为 PDF 的方式。

我们知道这并不理想,我们将图像质量损失归类为产品问题。因此,很难真正说出如何才能获得最佳质量的图像。

有趣的是,我听说客户在原始图像是 BMP 时效果很好

于 2014-12-17T19:37:09.633 回答