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