Задать вопрос
Ответы пользователя по тегу Java
  • Как работать с китайским POS принтером из Java в linux?

    @klirichek
    Это линейный принтер (lp). Он может просто печатать напрямую текст, который в него отправляют (т.е. просто открываете нужный порт и шлёте в него байтики).
    С помощью escape-последовательностей можно переключать принтер в графический режим и управлять дополнительными фичами, специфическими для POS (например, открывать крышку кассы. Или автоматически печатать штрих-код).
    Т.е. в простейшем случае - переводите принтер в нужную кодовую страницу с помощью esc-последовательности и потом просто шлёте в него текст в нужной кодировке.

    Если воспользоваться драйвером, то все возможности принтера сводятся к графической печати (это растровый фильтр CUPS. И, кстати @ntkt не совсем прав насчёт поддержки PostScript. PPD файлы в cups это своя собственная сущность, так у них принято описывать вообще все принтеры.) Тогда у вас появляется "стандартный" принтер с форматом бумаги шириной 58 мм. Весь рендеринг в растр берёт на себя CUPS, а фильтр лишь парсит настройки печати и затем добавляет нужные escape-последоватльности для вывода растра.

    К слову, фильтр, похоже, был написан индусами :)
    Настройки в PPD не показывает, а сам вылетает. Да и к тому же предоставлен только в виде 32-битного бинаря. Я провозился с ним пару дней, пытаясь настроить. В итоге психанул и написал свой фильтр. Он работает.

    https://github.com/klirichek/zj-58
    Ответ написан
    Комментировать
  • Чем сжать pdf-файл?

    @klirichek
    Всё зависит от характера изображений.
    Если это сканы печатного текста - можно распознать или пустить в djvu.
    Если это штриховая чёрно-белая графика (без полутонов) - можно пережать в CCIT-4 (факсовое сжатие) и положить назад.
    Ответ написан
    Комментировать
  • В чем отличие void от return на примере?

    @klirichek
    Какое значение из void?
    Ты же вызываешь просто:
    nn.GetJazz(12,12);
    и только потом уже, следующим оператором печатаешь поле nn.c
    Первая строчка просто вызывает метод (в данном случае - процедуру), который ничего не возвращает (т.е. "возвращает" void)
    А второй строчкой ты смотришь содержимое поля c у своего класса.
    Это РАЗНЫЕ строки; между собой никак не связанные!

    Убери у себя c=a+b и оставь просто a+b - и всё, выведется лишь сумма изнутри метода.

    Ровно так же ты можешь написать и
    sin(c=a+b)
    Это будет означать, что сперва вычислится сумма a+b, её значение будет присвоено c и одновременно возвращено как значение выражения с=a+b.
    От значения этого выражения будет взят синус. Но он никуда не будет присвоен; просто займёт проц вычислениями, а результат будет выброшен.
    В результате ты так же получишь значение c. Однако значение синуса - нет :).
    Ответ написан
    Комментировать