Страница 2 из 2
Настройка принтера и страницы.
Добавлено: 04 июл 2008, 07:34
Vital
Здравствуйте,
Тут есть вопрос ключевой. Вы хотите изменить параметры страниц до просмотра или до построения отчета?
Спасибо.
Настройка принтера и страницы.
Добавлено: 04 июл 2008, 08:10
vlsaf
Я хочу изменить параметры страницы до просмотра отчета.
Мне нужно, чтобы пользователь увидел при предпросмотре реальную картину вещей.
Если параметры страницы загружать, как вы до этого писали, перед печатью, то возможны проблемы.
Если, к примеру, отступы для загружаемой страницы слишком велики, то при печати возможно урезание текста.
А при предпросмотре пользователь этого не увидит, т.к. параметры страницы еще не загружены.
У меня каждый отчет имеет свои параметры страницы:
Ориентация: Портрет или ландшафт
Отступы от края листа: для точного позиционирования приментельно к конкретному принтеру.
Эти параметры хранятся в отдельном месте, и я их могу для конкретного рабочего места вытягивать.
У одного пользователя принтер Canon S450. Он печатает по одному.
У другого HP. Он печатает немного по другому.
Поэтому один и тот же отчет пользователи могут "подгонять" под свой конкретный принтер.
.............................
Реальный пример, для чего это нужно.
Печатается форма. После печати она вкладывается в почтовый конверт, в котором имеется прозрачное окошко для почтового адреса. Следовательно на отпечатаном листе адрес должен точно попадать в это окошко на конверте. Немного изменив отступы для страницы, пользователь может точно позиционитовать печатный лист для своего принтера.
.............................
Настройка принтера и страницы.
Добавлено: 05 июл 2008, 08:01
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. Например:
Но лучше всего иметь в отчете обе страницы в разной ориентации и включать нужные перед построением. К примеру:
Код: Выделить всё
report.Pages["Portrait"].Enabled = isPortrait;
report.Pages["Landscape"].Enabled = !isPortrait;
Спасибо.