Страница 1 из 2

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

Добавлено: 20 мар 2012, 12:15
Ruslan
Добрый день!

При создании отчетов с большим объемом данных приходится изменять стандартный размер листа отчета. Но после этого при печати отчета он не влазит на стандартный лист А4. Есть ли какая-то возможность масштабирования отчета перед печатью?

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

Добавлено: 21 мар 2012, 07:06
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();
Спасибо.

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

Добавлено: 03 апр 2012, 08:42
Ruslan
Здравствуйте!

А возможно ли как-то масштабировать отчет непосредственно перед печатью? Чтобы в репорт-вьюере он отображался нормально, а перед печатью масштабировался.

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

Добавлено: 04 апр 2012, 13:21
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);
Спасибо.

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

Добавлено: 16 апр 2012, 09:42
Ruslan
Добрый день,

Событие Printing почему-то не срабатывает при печати отчета.

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

Добавлено: 16 апр 2012, 15:13
Ivan
Здравствуйте.

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

Спасибо.

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

Добавлено: 17 апр 2012, 08:31
Ruslan
Добрый день,

вот пример приложения

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

Добавлено: 18 апр 2012, 09:32
Ivan
Здравствуйте.

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

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

                report.Compile();
                report.CompiledReport.Printing += (sender, args) =>  .....
Спасибо.

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

Добавлено: 18 апр 2012, 10:59
Ruslan
Получается, что при этом меняется размер самого отчета? Т.е. после печати во вьюере размер отчета тоже изменится?

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

Добавлено: 20 апр 2012, 12:17
Aleksey
Здравствуйте,

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

Спасибо