Масштабирование при печати

Обсуждение Stimulsoft Reports.WPF
Ruslan
Сообщения: 38
Зарегистрирован: 24 ноя 2011, 14:10
Откуда: Russia

Масштабирование при печати

Сообщение Ruslan »

Добрый день!

При создании отчетов с большим объемом данных приходится изменять стандартный размер листа отчета. Но после этого при печати отчета он не влазит на стандартный лист А4. Есть ли какая-то возможность масштабирования отчета перед печатью?
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Масштабирование при печати

Сообщение Ivan »

Здравствуйте.

На панели вьювера есть кнопка "Page Size", которая вызывает меню масштабирования отчета.
Эти же действия можно произвести из кода вашего приложения, например:

Код: Выделить всё

            StiReport stiReport = new StiReport();
            stiReport.Load(@"d:\SimpleList.mrt");
            stiReport.Render();

            PaperSize newSize = new PaperSize("A5", 583, 827);
            newSize.RawKind = (int)PaperKind.A5;

            StiResizeReportHelper.ResizeReport(stiReport,
                StiPageOrientation.Portrait,
                newSize.Kind,
                stiReport.Pages[0].Margins,
                stiReport.Unit.ConvertFromHInches(newSize.Width),
                stiReport.Unit.ConvertFromHInches(newSize.Height),
                StiResizeReportOptions.RescaleContent | StiResizeReportOptions.ProcessAllPages,
                0);

            stiReport.Print();
Спасибо.
Ruslan
Сообщения: 38
Зарегистрирован: 24 ноя 2011, 14:10
Откуда: Russia

Масштабирование при печати

Сообщение Ruslan »

Здравствуйте!

А возможно ли как-то масштабировать отчет непосредственно перед печатью? Чтобы в репорт-вьюере он отображался нормально, а перед печатью масштабировался.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Масштабирование при печати

Сообщение Aleksey »

Здравствуйте,

Как вариант, использовать следующий код в событии Printing отчета:

Код: Выделить всё

System.Drawing.Printing.PaperSize newSize = new System.Drawing.Printing.PaperSize("A5", 583, 827);
newSize.RawKind = (int)System.Drawing.Printing.PaperKind.A5;
StiResizeReportHelper.ResizeReport(this,
       StiPageOrientation.Portrait,
       newSize.Kind,
       this.Pages[0].Margins,
       this.Unit.ConvertFromHInches(newSize.Width),
       this.Unit.ConvertFromHInches(newSize.Height),
       StiResizeReportOptions.RescaleContent | StiResizeReportOptions.ProcessAllPages,
       0);
Спасибо.
Ruslan
Сообщения: 38
Зарегистрирован: 24 ноя 2011, 14:10
Откуда: Russia

Масштабирование при печати

Сообщение Ruslan »

Добрый день,

Событие Printing почему-то не срабатывает при печати отчета.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Масштабирование при печати

Сообщение Ivan »

Здравствуйте.

Проверили еще раз на Net и Wpf версиях, у нас всё работает.
Пришлите пожалуйста пример проекта, на котором воспроизводится проблема, для анализа.

Спасибо.
Ruslan
Сообщения: 38
Зарегистрирован: 24 ноя 2011, 14:10
Откуда: Russia

Масштабирование при печати

Сообщение Ruslan »

Добрый день,

вот пример приложения
Вложения
WpfApplication1.7z
(2.2 МБ) 274 скачивания
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Масштабирование при печати

Сообщение Ivan »

Здравствуйте.

Проблема в том, что вы подписываетесь на событие базового отчета, а печать вызывается у скомпилированного отчета.
Если добавлять код в событие в дизайнере, на закладке Events, то он скомпилируется вместе с отчетом.
Если надо добавить событие из вашего кода, то нужно изменить ваш код:

Код: Выделить всё

                report.Compile();
                report.CompiledReport.Printing += (sender, args) =>  .....
Спасибо.
Ruslan
Сообщения: 38
Зарегистрирован: 24 ноя 2011, 14:10
Откуда: Russia

Масштабирование при печати

Сообщение Ruslan »

Получается, что при этом меняется размер самого отчета? Т.е. после печати во вьюере размер отчета тоже изменится?
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Масштабирование при печати

Сообщение Aleksey »

Здравствуйте,

Как вариант, в событии Printed вернуть исходный размер.

Спасибо
Ответить