Как распечатать из веб-приложения на чековый принтер?
Мой клиент попросил меня распечатать квитанции на Epson TM U220 ( http://pos.epson.com/products/TM-U220.htm) из моего веб-приложения. Я понятия не имею, как это сделать. Есть ли какие-либо Java-апплеты или что-то еще, что я могу использовать для печати? Должен ли я использовать JasperReports? (Помогает ли JasperReports справиться с этой проблемой?) Если есть флэш-приложения, которые можно использовать, я не возражаю против их использования.
Я использую Grails для своих веб-приложений.
3 ответа
Вам не нужен апплет, с контроллера Grails вы можете использовать любую библиотеку Java. Используйте сервисы печати Java, доступные для среды выполнения в javax.print. Это предполагает, что принтер установлен там, где работает Grails Runtime.
Чтобы это работало, просто установите ваш чековый принтер в качестве принтера по умолчанию и переименуйте его в "зебра":
Затем просто загрузите библиотеку jZebra, поместите jar-файл в каталог проекта и запустите:
<input type=button onClick="print()" value="Print">
<applet name="jzebra" code="jzebra.PrintApplet.class" archive="./jzebra.jar" width="100" height="100">
<param name="printer" value="zebra">
</applet>
<script>
function print() {
document.jzebra.append("PRINTED USING JZEBRA\n");
document.jzebra.print();
}
</script>
Я создал приложение для записи в принтер чеков для системы POS некоторое время назад. То, как мы это сделали, - это просто открыть принтер, который передает нужный принтер чеков. Мы вручную отправили коды символов на принтер для создания полужирного шрифта, подчеркивания, изменений шрифтов и т. Д. Из-за требований клиента, что мы делаем это таким образом (было другое приложение, которое использовало эти коды символов, и они хотели, чтобы мы также использовали их),
Если вы не хотите проходить ручной процесс, как я сделал, то хорошим выбором будет JavaPOS. В нем есть много вещей, связанных с печатью на чековых принтерах (определенно гораздо более элегантно, чем я описал выше). Вы найдете это на http://www.javapos.com/.