Я работаю над веб-приложением ASP.Net, которое должно печатать динамически созданные этикетки на стандартных листах этикеток в стиле Avery (один определенный размер, поэтому только один общий макет). Метки имеют различное количество строк (3-6) и могут содержать либо строки текста, либо графическое изображение штрих-кода.
Наш первый урез, который я унаследовал, использовал моноширинные шрифты, чтобы уменьшить проблемы с форматированием, но это не позволило достаточному количеству текста поместиться на этикетках, и клиент был недоволен. В основном это был отформатированный текст.
В моей следующей версии использовались TABLE, DIV, CSS и немного JavaScript-вычислений для форматирования меток с использованием пропорциональных шрифтов. Это все еще требовало некоторой настройки (пользователь должен был правильно задать поля печати и отключить верхние и нижние колонтитулы печати), но, похоже, это сработало.
Тем не менее, кажется, что существуют различия в том, как разные принтеры отображают текст (WYS не WYG), поэтому, несмотря на то, что мы тестировали в разных браузерах, используя как минимум два разных принтера (струйный и лазерный принтер), ярлыки некоторых пользователей не совпадают. Небольшие изменения полей можно отрегулировать, отрегулировав поля в диалоговом окне настройки страницы, но более сложная проблема заключается в том, что расстояние между метками может быть уменьшено на крошечную долю дюйма, так что, если первая метка довольно хорошо отцентрирована, В конце страницы текст метки и изображения поползли сверху или снизу меток.
Мы собираемся перейти к созданию вывода Word, Excel или PDF, что займет довольно много времени на разработку и, возможно, добавит дополнительные шаги в процессе печати.
Итак, есть ли у кого-нибудь предложения о том, как сделать макет HTML / CSS, который будет точно отображаться на разных типах принтеров? Мне действительно все равно, если разрывы строк / слов немного отличаются, но мне нужно иметь возможность предсказуемо расположить верхние левые углы каждой области надписи.
Прямо сейчас метки текут вниз по странице в таблице, и мы настраивали блочную модель ячеек и внутренних DIV, чтобы сделать их одинаковой высоты. Я подозреваю, что использование абсолютного позиционирования каждого элемента может быть лучшим ответом, но это также будет сложно из-за генерации элементов меток в ASP.Net. Если бы я точно знал, что это сработает, я бы лучше попробовал, чем выбросил все, что нам нужно, чтобы перейти к другому методу генерации.
Небольшое обновление:
Прямо сейчас я делаю несколько тестов с абсолютным позиционированием - устанавливаю только верхнюю и левую координаты элемента, содержащего блок. Пока что есть незначительные отклонения смещения на странице (поля, выравнивание бумаги и т. Д.), Но все протестированные браузеры и принтеры помещают элементы в точно в правильных местах относительно друг с другом. Я ценю советы в формате PDF, но кто-нибудь знает о дополнительных "хитростях" при использовании абсолютного позиционирования таким образом?
Обновление:
Для записи я переписал часть печати этикеток, используя iTextSharp, и она отлично работает - определенно, способ сделать это в будущем ...