Я разработал автоматизированный веб-сервис, который генерирует отчеты в формате PDF, Word и Excel, используя SAP Crystal Reports SDK. Однажды в прошлом возникла необходимость в динамических изображениях (в частности, в фотографиях), поэтому эта функция была реализована следующим образом:
- Изображения извлекаются из статического каталога, меняются до определенных размеров в зависимости от соотношения сторон (например, изображения размером 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 фотографий, а также некоторые другие переменные для других изображений, все с собственным заполнителем изображения объекты в подавленных секциях).
- В отчете изображения-заполнители в подавленных разделах имеют переменную, которая содержит путь к изображению в их формуле «Расположение графики». если переменная, введенная в графическом расположении, является допустимым путем к существующему изображению, раздел программно не подавляется, а изображение заполнителя заменяется изображением в каталоге.
Проблема: в качестве примера возьмем изображения в формате 4: 3 (.doc). Два изображения с размером 800x600, описанным выше способом, с одинаковым расширением файла (.jpg), введенные в один и тот же файл rpt и действительно использующие один и тот же объект изображения-заполнитель с одинаковыми настройками (я установил для всех изображений-заполнителей значение 0,7 Масштабирование X & Y в CR Designer) отображается в отчетах совершенно по-разному. Одно изображение 4: 3 может занимать около 50-60% страницы (в экспортированном документе), тогда как другое изображение с такими же настройками может быть настолько большим, что может охватывать еще две или три страницы.
Мой вопрос: это хорошо известная или задокументированная проблема с отчетами Crystal, или есть другая часть описанного мною процесса, вызывающая эту несогласованность?
Есть ли какие-либо известные обходные пути в случае, если это проблема CR?
Я с нетерпением жду ответов каждого, а также любых отзывов о том, что я описал.