Как добавить поддержку штрих-кода в html2ps? - PullRequest
2 голосов
/ 25 февраля 2010

Мы используем Perl-скрипт html2ps для преобразования HTML в PostScript. Я знаю, что это не лучшее решение, но разработчики сделали это (это было до моего времени).

Теперь нам нужно реализовать поддержку шрифтов штрих-кода, который показывает каждый HTML и должен отображаться в каждом преобразованном файле PostScript. Как ты это делаешь?

Ответы [ 5 ]

6 голосов
/ 06 марта 2010

ОК, у меня это работает только со шрифтами (без изображений, как требуется). Вот как:

  • Возьмите ваш шрифт штрих-кода (я ничего не знаю о штрих-кодах, поэтому я взял Code 128 бесплатный шрифт TrueType; ссылка для скачивания ).
  • Превратить его в шрифт Postcript (тип 1) с расширением .pfa. Я использую fontforge для выполнения этого преобразования, например так: откройте шрифт ttf, выберите «Файл»> «Создать шрифты» с «PS Type 1 (ASCII)» и отклоните возможные предупреждения.
  • Итак, теперь у меня есть шрифт «Code128bWin» в формате PS Type 1 в файле с именем Code128bWin.pfa.
  • Создать минималистичный тестовый документ (test.html):
<html>
 <head></head>
 <body>
  <p>This is a test:</p>
  <h4>BARCODE</h4>
 </body>
</html>
  • Создайте файл конфигурации (это то, что потребовалось для понимания; вы не можете поместить его как встроенный CSS в HTML; это должен быть файл конфигурации для html2ps). Итак, создайте файл с именем config:
H4 { font-family: Code128bWin }

@html2ps {
  font {
    Code128bWin {
      names: "Code128bWin";
      files: "Code128bWin.pfa";
    }
  }
}
  • Таким образом, текст в тегах <h4> будет отображаться с использованием шрифта кодовой строки. Теперь вы генерируете вывод Postscript, выполнив: html2ps -f config test.html > test.ps

Комментарии приветствуются!

Как примечание: это явно уродливо, но иногда необходимо взломать существующий процесс, поэтому я не буду судить об ОП. Я думаю, что это решение удовлетворяет всем ограничениям :)

3 голосов
/ 06 марта 2010

так что, если видно в комментариях:

  1. вы не можете использовать изображения, созданные ранее, которые встроены в html, используя <img /> -tag
  2. вы не можете включить дополнительные шрифты для создания штрих-кода (не работает)

К # 1 : невозможно, поскольку вы не можете хранить изображения? Если это причина, попробуйте использовать онлайн-создатели кода, такие как barcodesinc, например ::

http://www.barcodesinc.com/generator/image.php?code=Hello Мир и стиль = 197 & тип = C128B & ширина = 200 & высота = 50 & xres = 1 & font = 3

Пример:

Barcode2

Если вы не можете полагаться на внешних поставщиков услуг, в Интернете есть бесплатные уроки, например, бесплатно. Генератор штрих-кода . Разверните на веб-сервере и используйте тег типа <img src="http://myserver/myscript.php?code=HelloWorld"/>, указывающий на этот скрипт. html2ps поддерживает рендеринг встроенных изображений.

Существует также средство записи штрих-кода postscript с открытым исходным кодом, доступное по адресу http://www.terryburton.co.uk/barcodewriter/. После использования html2ps вы можете манипулировать файлами ps и встраивать директиву barcodewriter, например ::

50 450 moveto (978-1-86074-271) (includetext) /isbn /uk.co.terryburton.bwipp findresource exec

К # 2 : Не могли бы вы предоставить сообщение об ошибке? На каком этапе у вас проблемы?

Эмм ... # 3 : Использование только html + css (будет использоваться только в случае неудачи всех остальных)

Штрих-коды могут быть созданы с использованием простых CSS и Span-элементов:

        <style>
        .barcode {
            border:5px solid white;
            background:white;
            width:310px;
            text-align:center;

        }
        .ns{
            border-left:2px solid white;
            height:30;
        }
        .nb{
            border-left:2px solid black;
            height:30;
        }
        .ws{
            border-left:5px solid white;
            height:30;
        }
        .wb{
            border-left:5px solid black;
            height:30;
        }

    </style>
<div class='barcode' id='bcx2_bc' ><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><br>TEST8052</div>
* * Пример тысячу сорок четыре: * * 1045

Штрих-код http://img689.imageshack.us/img689/4360/barcodeg.jpg

Этот код был создан с использованием HTML штрих-кодов , также класса php. Вы можете либо

  • вызовите это через интерфейс командной строки и вставьте его в ваш обычный html для каждой html-страницы (для динамических штрих-кодов)
  • создайте свой код один раз, используя cli / server, и поместите его в жестко запрограммированный html (подходит только в том случае, если ваш штрих-код не должен меняться с каждой html-страницей)

Я не могу представить другие возможности.

2 голосов
/ 26 февраля 2010

Хм, ну, в html2ps руководстве пользователя есть раздел под названием «Блок шрифтов», в котором говорится:

В настоящее время html2ps распознает шрифты: Times, New-Century Schoolbook, Helvetica, Helvetica-Narrow, Palatino, Avantgarde, Bookman и Courier.

Далее объясняется, как определить новый тип шрифта для использования в html2ps. Возможно, это могло бы помочь?

2 голосов
/ 25 февраля 2010

Я считаю, что штрих-коды, составленные из шрифтов, представляют собой ужасный взлом. Я предлагаю генерировать собственно PostScript: http://www.terryburton.co.uk/barcodewriter/

1 голос
/ 05 марта 2010

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

Вы можете использовать проект, подобный этому, для достижения этой цели: генератор штрих-кода или GNU Barcode

Используя штрих-код GNU, я бы сделал следующее:

  1. Сгенерируйте нужный мне штрих-код в формате EPS.
  2. Используйте imagemagick для преобразования его в дружественный HTML-формат, такой как PNG
  3. Использовать сгенерированное изображение на html-странице.

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

...