При выводе данных на готовые типографские бланки строгой отчетности (например, бланки воинского учета или извещения) разработчики и пользователи часто сталкиваются с проблемой: печатный текст смещается по вертикали на 1–2 миллиметра. На одном и том же устройстве печать может выводиться корректно, а при следующем прогоне съезжать вниз или вверх, из-за чего буквы наплывают на рамки или границы ячеек.
Рассмотрим причины возникновения такой погрешности, а также проанализируем программные и аппаратные способы решения этой задачи.
Проанализируем технические особенности офисных лазерных принтеров (например, HP LaserJet). Для большинства офисных лазерных устройств погрешность позиционирования листа составляет от ±1 мм до ±5 мм. Это считается технической нормой и обусловлено следующими факторами:
Если изменить аппаратную точность офисного принтера невозможно, проблему можно решить на стороне платформы 1С путем адаптации макета печатной формы и управления свойствами табличного документа.
1. Отключение автоматического масштабирования
Платформа 1С по умолчанию может подгонять размер страницы под область печати драйвера. Чтобы предотвратить динамический пересчет координат ячеек, необходимо жестко зафиксировать масштаб макета в коде:
ТабличныйДокумент.АвтоМасштаб = Ложь;
ТабличныйДокумент.Масштаб = 100;
2. Реализация пользовательских смещений (полей)
Выясним, как дать пользователю возможность индивидуально подстраивать печать под конкретный экземпляр принтера. Для этого добавляем в настройки печатной формы параметры смещения по вертикали и горизонтали, после чего применяем их к свойствам ПолеСверху и ПолеСлева табличного документа перед выводом:
// НастройкиСмещенияСверху и НастройкиСмещенияСлева задаются в миллиметрах
ТабличныйДокумент.ПолеСверху = НастройкиСмещенияСверху;
ТабличныйДокумент.ПолеСлева = НастройкиСмещенияСлева;
3. Верстка и оформление макета
Чтобы погрешность в 1 мм не приводила к наложению текста на типографские линии бланка, применим следующие приемы оформление макета:
АвтоКонтрольПропорций или отрегулируем ширину колонок так, чтобы при небольшом сдвиге данные не выходили за границы отведённых полей.Разберем по шагам, как уменьшить механическую погрешность захвата листа средствами самого принтера:
Если к точности позиционирования предъявляются строгие требования и допуски лазерного принтера не подходят, рассмотрим выбор альтернативного оборудования: