Печать ярлыков штрих-кодов с веб-страницы

Я работаю над веб-приложением ASP.Net, которое должно печатать динамически созданные ярлыки на стандартных листах стилей Avery (один конкретный размер, поэтому только один общий макет). Ярлыки имеют переменное количество строк (3-6) и могут содержать либо строки текста, либо изображение графического штрих-кода.

Наш первый разрез, который я унаследовал, использовал моноширинные шрифты для уменьшения проблем с форматированием, но это не позволяло достаточно текста подходить на этикетках, а клиент был недоволен. В основном это был отформатированный текст.

В моей следующей версии TABLEs, DIVs, CSS и несколько JavaScript-вычислений используются для форматирования меток с использованием пропорциональных шрифтов. Он по-прежнему требовал некоторой настройки (пользователь должен был правильно установить поля печати и отключить верхние и нижние колонтитулы), но, похоже, это сработало.

Однако кажется, что существуют некоторые варианты того, как разные принтеры визуализируют текст (WYS не WYG), поэтому, хотя мы тестировали в разных браузерах, используя по крайней мере два разных принтера (струйный принтер и лазерный принтер) некоторые пользовательские ярлыки не выстраиваются в линию. Небольшие вариации полей можно отрегулировать, отрегулировав поля в диалоговом окне настройки страницы, но более сложная проблема заключается в том, что интервал между метками может быть отключен крошечной долей дюйма, так что, если первая метка довольно хорошо центрирована, в конце страницы текст и изображения меток отскакивают сверху или снизу ярлыков.

Мы собираемся перейти к генерации вывода Word, Excel или PDF, который займет довольно много времени разработки и, возможно, добавит дополнительные шаги в процессе печати. ​​

Итак, есть ли какие-либо предложения о том, как сделать макет HTML/CSS, который будет точно отображаться на разных типах принтеров? Меня не волнует, что разрыв строки/слова немного отличается, но мне нужно иметь возможность предсказуемо позиционировать верхние левые углы каждой области ярлыков.

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

Небольшое обновление: Сейчас я делаю некоторые тесты с абсолютным позиционированием - устанавливая только верхнюю и левую координаты содержащего элемента блока. До сих пор существуют незначительные изменения смещения на странице (поля, выравнивание бумаги и т.д.), Но все проверенные браузеры и принтеры помещают элементы в точно в правильные точки относительно друг друга. Я ценю советы PDF, но кто-нибудь знает о дополнительных "gotchas" об использовании абсолютного позиционирования таким образом?

Update: Для записи я переписал часть печати этикеток с помощью iTextSharp, и она отлично работает - определенно способ сделать это в будущем...

Ответы

Ответ 1

Забудьте HTML и сделайте PDF. HTML-печать чрезвычайно изменчива - не только в браузерах, но и в разных версиях одного и того же браузера. PDF намного проще.

Даже если вы получите это точно с помощью настройки браузера/шрифта/принтера/фазы луны, это будет самая хрупкая вещь, которую вы когда-либо должны были поддерживать. Независимо от того, как долго вы думаете, что потребуется, чтобы сделать PDF (и это не так уж сложно, как там есть некоторые бесплатные библиотеки), HTML в конечном итоге займет гораздо больше времени. Читатели PDF широко развернуты и печатают более последовательно, чем даже файлы Word.

Ответ 2

Веб-интерфейс не является форматом, гарантирующим получение согласованных результатов печати. Учитывая стандартную поддержку печати этикеток с помощью MS Word и относительную простоту автоматизации и генерации, я настоятельно рекомендую идти по этому маршруту.

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

Ответ 3

"точно" и "печать" - это не два слова, которые действительно хорошо работают вместе. Я сделал приложение OCR/OMR год назад, и даже при создании PDF я видел значительные различия между разными драйверами печати и т.д. Из-за этого моя кишка должна сказать вам, что у вас может не быть успеха на 100%.

Если проблемы с CSS и макетами не так хорошо работают для вас, возможно, вам придется прибегнуть к созданию меток в качестве изображений с использованием GDI + - по крайней мере, таким образом вы можете использовать GetFontMetrics() и т.д.

Удачи!

Ответ 4

У меня была аналогичная проблема, и ответ заключается в том, что вы не можете этого сделать. Вместо этого я сгенерировал PDF файл в реальном времени с помощью iTextSharp и передал его в ответ.

Ответ 5

Используя службы отчетов SQL Server, я создаю PDF файл для отправки на принтер, но его можно увидеть как HTML на экране, используя элемент управления, который вы можете включить в свои веб-страницы. Существуют файлы RDLC, доступные в Интернете для печати в различных форматах Avery.

Ответ 6

Я переписал код SharpPDFLabel, который был упомянут еще в 2011 году на этой неделе, поскольку мне было нужно, чтобы он был намного более гибким (и для работы с текущей библиотекой iTextSharp).

Вы можете получить его здесь: https://github.com/finalcut/SharpPDFLabel

Я добавил возможность указать содержимое каждой отдельной метки, если вы хотите (или продолжать создавать листы одинаковых ярлыков тоже). Расширяя класс LabelDefinition, вы можете легко определить расположение своих ярлыков.

Ответ 7

Я также боролся с подходом HTML/CSS из-за несогласованного поведения печати в браузерах.

Я создал библиотеку С# для создания ярлыков Avery из ASP.NET, которые, надеюсь, могут оказаться полезными:

https://github.com/wheelibin/SharpPDFLabel#readme

Вы можете добавлять изображения и текст к меткам, а также легко определять больше типов меток.

(Я использую его для ярлыков штрих-кода, штрих-код генерируется как изображение, а затем добавляется к метке с использованием этой библиотеки.)

Приветствия

Ответ 8

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

Ответ 9

Flash также является хорошим способом подталкивания к печати, например, ярлыком, хотя и немного сложнее реализовать и поддерживать. В большинстве случаев он отображается намного быстрее, чем PDF, и вы можете вставлять его в дизайн страницы и просто добавлять кнопку "Печать" во флэш-памяти.

Я сделал это несколько лет назад, когда мы использовали HTML и PDF для получения подтверждающих квитанций. HTML "хорошо", но находится во власти веб-браузера конечных пользователей, поэтому мы быстро сбрасываем этот метод. PDF хороши, пока у них есть программа для чтения PDF, что, к нашему удивлению, у многих наших клиентов этого не произошло. Таким образом, это было сбрасыто также после того, как мы перешли на FLASH-версию, используя простой флеш-ролик, который включал несколько динамических текстовых областей и кнопку "Печать". Я передал данные между страницей и вспышкой, используя несколько флеш-варов. Вы также можете использовать веб-службу.

Когда мне нужно что-то большее, чем просто простой текст, я использую бесплатную версию сообщества компонента PDF Generator из DynamicPDF.com. Он отлично работает и очень быстро.

Ответ 10

Я просто пережил то же самое. Закончилось переключение и создание небольшого JSF-приложения (работающего на Glassfish), которое использует JasperReports для печати непосредственно на принтере-макете. Нажатие кнопки, мгновенная метка на принтере, даже не нужно просматривать ее на экране, если вы не хотите, поскольку Jasper может напрямую выводить на принтер (а также PDF в браузере).