我开发了一种自动化的Web服务,该服务使用SAP的Crystal Reports SDK生成pdf,word和excel报告。在过去的某一时刻,需要动态图像(特别是照片),因此该功能是通过以下方式实现的:
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;
}
问题:让我们以文字格式(.doc)的4:3图像为例。使用上述方法将两个具有相同文件扩展名(.jpg)的图像调整为800x600,并在相同的rpt文件中输入并且实际上使用具有相同设置的相同占位符图像对象(我已将所有占位符图像设置为0.7 CR设计器中的X和Y缩放比例)在报告中显示的方式完全不同。一幅4:3的图像可能会占据页面的50-60%(在导出的文档中),而另一幅实际上设置相同的图像可能太大,以至于溢出到另外两三页。
我的问题:这是Crystal报表的一个众所周知的或已记录的问题,还是我描述的过程的不同部分导致了这种不一致? 如果是CR问题,是否有任何已知的解决方法?
我期待每个人的答复以及对我所描述内容的任何反馈。
答案 0 :(得分:0)
请确保未调整用作动态图像的虚拟占位符的静态图像的大小。它们应该从已经具有所需大小的图像中插入。
如果这不是问题,请提供rpt示例。
顺便说一下,您可以使用UFL在Crystal中即时创建调整大小的图像版本。