【问题标题】:Dynamic image inconsistencies in Crystal ReportsCrystal Reports 中的动态图像不一致
【发布时间】:2019-06-12 10:25:49
【问题描述】:

我开发了一个使用 SAP 的 Crystal 报表 SDK 生成 pdf、word 和 excel 报表的自动化 Web 服务。在过去的某个时间点,出现了对动态图像(特别是照片)的需求,因此该功能是通过以下方式实现的:

  • 图像从静态目录中提取,根据纵横比调整为特定尺寸(例如,手动将 4:3 图像调整为 800x600)并放置在新的子文件夹中。调整大小是通过以下方法完成的:
    private Bitmap ResizeImage(Bitmap image, int width, int height) {
        var destRect = new System.Drawing.Rectangle(0, 0, width, height);
        var destImage = new Bitmap(width, height);
        destImage.SetResolution(image.HorizontalResolution, 
        image.VerticalResolution);
        using (var graphics = Graphics.FromImage(destImage)) {
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.CompositingQuality = CompositingQuality.HighQuality;
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.SmoothingMode = SmoothingMode.HighQuality;
            graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
            using (var wrapMode = new ImageAttributes()) {
                wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                graphics.DrawImage(image, destRect, 0, 0, image.Width, 
                image.Height, GraphicsUnit.Pixel, wrapMode);
            }
        }
        return destImage;
    }
    
  • 放置在该子文件夹中的所有图像都将其完整路径输入为 Crystal Reports 自定义对象集合数据源(最多 10 张照片有 10 个字符串变量,以及其他图像的一些其他变量,所有这些变量都有自己的占位符图像隐藏部分中的对象)。
  • 在报告中,抑制部分中的占位符图像具有包含其“图形位置”公式中的图像路径的变量。如果在图形位置输入的变量是来自已存在图像的有效路径,则该部分会以编程方式解除抑制,并且占位符图像将替换为目录中的图像。

问题:我们以文字格式 (.doc) 的 4:3 图像为例。使用上述方法调整大小为 800x600 的两个图像,具有相同的文件扩展名 (.jpg),输入到相同的 rpt 文件中,并且确实使用具有相同设置的相同占位符图像对象(我已将所有占位符图像设置为 0.7 CR 设计器中的 X 和 Y 缩放)在报表中的显示完全不同。一张 4:3 的图片可能会占用大约 50-60% 的页面(在导出的文档中),而另一张具有相同设置的图片可能会太大,以至于溢出到两三个页面。

我的问题:这是水晶报告中众所周知或记录在案的问题,还是我所描述的流程的不同部分导致了这种不一致? 如果是 CR 问题,是否有任何已知的解决方法?

我期待大家的回复,以及对我所描述内容的任何反馈。

【问题讨论】:

    标签: c# asp.net-web-api crystal-reports


    【解决方案1】:

    确保用作动态图像的虚拟占位符的静态图像未调整大小。它们应该从已经是所需大小的图像中插入。

    如果这不是问题,请提供 rpt 示例。

    顺便说一句,您可以使用 UFL 在 Crystal 中动态创建调整大小的图像版本。

    【讨论】:

    • 您好,感谢您的回复。我暂时将占位符的 X&Y 缩放比例更改为 1,但问题仍然存在。这是我的报告模板的链接:mega.nz/#!IxIFxC7C!jqAORqy2I8CpGTq9jrwOf7u8ucOViV4zyxQNQD2SBRs
    • 关键不在于改变 x&y 缩放。这是关于在插入报告后不更改图像对象的大小。
    • 我明白了,所以您的意思是占位符图像应该,例如,在 800x600 图像的情况下具有 800x600 的静态尺寸?如果是这样,那可能很难实现,因为占位符被各种尺寸的图像所取代
    • 我还想补充一点,如果您指的是在 替换占位符图像之后保持静态的图像,那已经发生了。所有调整大小均在图像放入报表之前完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多