Динамические несоответствия изображений в Crystal Reports - PullRequest
0 голосов
/ 12 июня 2019

Я разработал автоматизированный веб-сервис, который генерирует отчеты в формате 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?

Я с нетерпением жду ответов каждого, а также любых отзывов о том, что я описал.

1 Ответ

0 голосов
/ 12 июня 2019

Убедитесь, что статические изображения, которые используются в качестве фиктивных заполнителей для динамических, НЕ изменены.Они должны быть вставлены из изображений, которые уже имеют желаемый размер.

Если проблема не в этом, предоставьте образец rpt.

Кстати, вы можете создавать измененные версии изображений на лету в Crystal, используя UFL.

...