Настройка принтера и страницы.

Обсуждение Stimulsoft Reports.NET
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Настройка принтера и страницы.

Сообщение Vital »

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

Тут есть вопрос ключевой. Вы хотите изменить параметры страниц до просмотра или до построения отчета?

Спасибо.
vlsaf
Сообщения: 46
Зарегистрирован: 26 июн 2008, 09:17

Настройка принтера и страницы.

Сообщение vlsaf »

Я хочу изменить параметры страницы до просмотра отчета.
Мне нужно, чтобы пользователь увидел при предпросмотре реальную картину вещей.

Если параметры страницы загружать, как вы до этого писали, перед печатью, то возможны проблемы.
Если, к примеру, отступы для загружаемой страницы слишком велики, то при печати возможно урезание текста.
А при предпросмотре пользователь этого не увидит, т.к. параметры страницы еще не загружены.

У меня каждый отчет имеет свои параметры страницы:
Ориентация: Портрет или ландшафт
Отступы от края листа: для точного позиционирования приментельно к конкретному принтеру.

Эти параметры хранятся в отдельном месте, и я их могу для конкретного рабочего места вытягивать.

У одного пользователя принтер Canon S450. Он печатает по одному.
У другого HP. Он печатает немного по другому.

Поэтому один и тот же отчет пользователи могут "подгонять" под свой конкретный принтер.

.............................
Реальный пример, для чего это нужно.
Печатается форма. После печати она вкладывается в почтовый конверт, в котором имеется прозрачное окошко для почтового адреса. Следовательно на отпечатаном листе адрес должен точно попадать в это окошко на конверте. Немного изменив отступы для страницы, пользователь может точно позиционитовать печатный лист для своего принтера.
.............................

Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Настройка принтера и страницы.

Сообщение Vital »

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

Изменить поля страницы Вы можете как до построения отчета так и после.

До построения отчета:

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

report.Pages["MyPage"].Margins = new StiMargins(10, 10, 10, 10);//Нужно использовать единицы измерения отчета
report.Render();
После построения отчета:

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

report.Render();
foreach (StiPage page in report.RenderedPages)
{
   if (page.Name == "MyPage")
  {
     page.Margins = new StiMargins(10, 10, 10, 10);//Нужно использовать единицы измерения отчета
   }
}
По поводу изменения ориентации страницы. Это точно приведет к сильному искажению вида отчета. Можно конечно выполнить масштабирование содержимого страницы при помощи метода ResizePage. Например:

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

page.ResizePage(1.4, 1);
Но лучше всего иметь в отчете обе страницы в разной ориентации и включать нужные перед построением. К примеру:

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

report.Pages["Portrait"].Enabled = isPortrait;
report.Pages["Landscape"].Enabled = !isPortrait;
Спасибо.
Ответить