LINUX.ORG.RU

Настройка Epson LX-1050+ в Debian 8

 


1

1

К ноутбуку через переходник USB→LPT подключен принтер. DIP-переключатели выставлены так: 1(1-5)→On 1(6)→Off 2(1-4)→Off. В настройках CUPS выбран драйвер «eps9high». Печать предполагается на формате A4. PPD-файл модифицирован с целью увеличения области печати до максимальной — изменены следующие строки:

*1284DeviceID: «DRV:Deps9high;» — изменение вроде не повлияло ни на что. Что дают параметры по умолчанию «R0,M0,F1,P0,TG» ?

*HWMargins: 0 0 0 0

*ParamCustomPageSize Width: 1 points 0 100000

*ParamCustomPageSize Height: 2 points 0 100000

*FoomaticRIPOptionSetting PageSize=A4: " -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842"

*ImageableArea A4/A4: «0 0 595 842»

*PaperDimension A4/A4: «595 842»

Остальное не трогал. После включения принтера, вставки листа и нажатия кнопки «ON LINE» принтер втягивает лист так, что верхний край листа встает напротив головы. Но когда начинается печать, например пробная страница в веб-интерфейсе CUPS, принтер сначала прокручивает примерно 10 мм, т.е. переводит строку наверно сам, и получается верхнее поле, соответственно последняя строка на странице не печатается и принтер требует новый лист для нее, или страница на бумаге получается смещенной вниз.

Подскажите пожалуйста, есть ли команда принтера (<ESC>... ), которая открутит бумагу на строку назад перед началом печати каждой страницы? И куда эту команду вставить — в PPD-файл ? Или может быть еще как-то победить проблему?



Последнее исправление: Coyote112358 (всего исправлений: 1)
Ответ на: комментарий от Zubok

А сейчас PPD стандартный, с ненулевыми границами. Так что дело не в них. Я их нулевыми сначала делал. А когда начали с фильтром эксперименты, я использовал дефолтный уже.

Coyote112358
() автор топика
Ответ на: комментарий от Coyote112358

Отлично, но не совсем. Дело в том, что команда срабатывает только перед первой страницей в текущем задании и если страниц больше одной, то на остальных снова будут верхние поля.

Надо, кстати, подумать над тем, чтобы CUPS генерировал много заданий из документа. Одно задание - одна страница. Тогда каждое задание пройдет через фильтр и каждая страница отмотается. Остается только понять, можно ли это это сделать. Хак, конечно, но это было бы скорейшим решением задачи.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Лучи восхищения Zubok
Особенно учитывая сентенции от ТС наподобие

# — это же комментарий — смысл?

Считаю, Coyote112358 должен six-pack дорогого пива.

mos ★★☆☆☆
()
Ответ на: комментарий от Zubok

И еще попробуй другой растеризатор. Вон в том PPD, который я прислал, там используется rastertoepson из CUPS, а не foomatic-rip. Вдруг результат другой будет.

Вот этот PPD попробуй. Я поменял тут параметры для твоего принтера. только я помню, что тоже химичил с Margins, но не помню, с какого этапа экспериментов эта PPD. ImagableArea и HWMargins (боковые) отличны от умолчательных. В A3 почему-то я посчитал без учета границ, но припоминаю, что у меня были листы чуть больше A3 тогда, поэтому я, возможно, с ними экспериментировал. В общем, ты уже знаешь про все эти параметры - сам поиграешься. Главное - проверить с фильтром rastertoepson.

http://pastebin.com/4zimirUn

Zubok ★★★★★
()
Ответ на: комментарий от mos

Сам уже ржу над этой свой фразой. Пиво вредно для здоровья.

Coyote112358
() автор топика
Ответ на: комментарий от Zubok

Принтер будет после 18мск. А пока ... растер-то-епсон — это значит, что он на вход хочет только растер? А если на вход пойдет не растер?

Coyote112358
() автор топика
Ответ на: комментарий от Zubok

В твоем PPD-файле dpi кратны 60, а в моих epson9.ppd, epson9mid.ppd, epson9high.ppd вписаны 60х/72х dpi/dpi. Использование твоего PPD наверно приведет к сжатию образа по вертикали. А dpi в ppd можно изменить?

Coyote112358
() автор топика
Ответ на: комментарий от Coyote112358

В твоем PPD-файле dpi кратны 60, а в моих epson9.ppd, epson9mid.ppd, epson9high.ppd вписаны 60х/72х dpi/dpi.

Да, если таких разрешений нет, то вбей вместо них свои для 9-игольного принтера из твоего PPD. У меня был 24 иглы. Посмотри просто документацию на принтер, какие он разрешения поддерживает.

растер-то-епсон — это значит, что он на вход хочет только растер? А если на вход пойдет не растер?

На вход пойдет растр. По умолчанию запустится gs, который отрендерит в растр, но не будет специально для принтера что-то генерить. А дальше все пойдет в rastertoepson, который уже подготовит код непосредственно для принтера. Этот фильтр идет в кодовой базе CUPS, а не ghostscript.

В твоем PPD используется драйвера ghostscript epson9high, epson9mid и т. д (см. gs --help в секции Devices). Поэтому в FoomatocRIPCommandLine у gs указано -dDevice epson9mid... То есть gs сам растеризует и готовит поток на языке принтера Epson.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Ну и ImagableArea попробуй поствить сначала умолчательные. У меня были какие-то эксперименты, повторю. то есть можно для A4 поставить

*ImageableArea A4/A4: "18 36 577 806"

а для HWMargins:

*HWMargins: 18 36 18 36

А уже потом экспериментировать. Кстати, если ты напечатаешь тестовую страничку CUPS (можно из интерфейса localhost:631, но главное, чтобы ты был в группе lpadmin), то он там пишет какие Media Limits использует.

Zubok ★★★★★
()
Ответ на: комментарий от Coyote112358

Да, это я видел еще вчера и проверил этот вариант. Он не пройдет 100%. Я при помощи gs сгенерировал файл, который идет непосредственно на принтер — там десятки тысяч символов 0x0c в данных. Отлавливать FormFeed не представляется возможным.

Тебе надо сперва решить, стоит ли игра свеч, потому что внизу страницы ты все равно не сможешь печатать, так как принтер выплевывает бумагу автоматом при подходе к краю. Он не даст тебе ее протягивать до самого краешка. Получается, что ты борешься только за верхнюю границу.

Однако я вижу пока первые варианты пободаться:

1. Если это вообще возможно, то заставить CUPS делать одно задание на страницу. Беглым просмотром я пока не обнаружил ничего подобного, кроме limits per job, но это не то совсем.

2. Из единого задания при помощи gs генерировать один файл на страницу. Это можно сделать.

$ gs -q -dBATCH -dQUITE -dNOPAUSE -sDEVICE=eps9high -sOutputFile=epson%d  example.pdf

pdf или ps. После этой команды на диске появятся отдельные файлы epson<n> с потоком команд для epson и содержащие только одну страничку. Сколько страничек, столько и файлов. Можешь проверить сам на любом файле. Очевидно, что можно дальше эти странички последовательно кидать в фильтре в принтер, а между ними делать отмотку. И так напечатается документ. Можешь попробовать прямо вручную эти эти файлики один за другим направлять в /dev/usb/lp0 и между страничками делать отмотку назад. Или просто в начало каждого файла спереди прилепить sed-ом последовательность обратной отмотки и результат - в принтер.

Это пока только умозрительно. Может, еще какие-то варианты придут на ум.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 5)
Ответ на: комментарий от Zubok

Борюсь за то, чтобы поля образа были такими же как поля оригинала. Допустим, поля оригинала 20 мм и 20 мм сверху и снизу соответственно. Тогда, если не использовать команду отмотки назад, то поле образа сверху будет 30 мм, а последние две строки образа уйдут на второй лист. Вот в чем вся проблема. Команда отмотки назад необходима только для того, чтобы верхнее поле образа совпало с верхним полем оригинала. Печать от края до края я еще проверю.

Coyote112358
() автор топика
Ответ на: комментарий от Zubok

$ gs -q -dBATCH -dQUITE -dNOPAUSE -sDEVICE=eps9high -sOutputFile=epson%d example.pdf

И, кстати, вот можешь посмотреть, что в конце каждого файла стоит последовательность 0x0d 0x0c 0x1b 0x40. То есть вот <CR><FF> и еще какая-то команда (может, сброс? Лень смотреть описание языка Epson).

UPD. Ага, это команда инициализации принтера. ESC @ (0x1b 0x40) - Initialize printer

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от Coyote112358

Борюсь за то, чтобы поля образа были такими же как поля оригинала. Допустим, поля оригинала 20 мм и 20 мм сверху и снизу соответственно.

Тогда для начала надо проэкспериментировать с rastertoepson. Я сначала думал, что ты хочешь даже в технологическую зону залезть, в первые 8 мм.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Зная команду отмотки назад теперь не составит труда залезть в технологическую зону.

Coyote112358
() автор топика
Ответ на: комментарий от Zubok

Распечаталась пробная страница с твоими значениями границ.

Media Limits: 0.25 x 0.25 to 8.01 x 11.44 inches

Driver: Epson9.ppd (вот это я не понял откуда взялось? файл ppd у меня по другому назван...)

Coyote112358
() автор топика
Ответ на: комментарий от Zubok

Установленного принтера с таким именем нет и ппд-файла такого тоже нет. Автоопределился?

Coyote112358
() автор топика
Ответ на: комментарий от Coyote112358

Ну, я не знаю. Наверное, ставишь неправильно. Или я не знаю что. Мне трудно так сказать, что у тебя не так. Как файл назвал (я файл назвал сам в самом PPD)? Ну и покажи конечный результат.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Coyote112358

Никто не знает. Это разные программки, которые делают одну и ту же задачу. Пока у тебя фуматик не работает, как ты хочешь. разбираться лучше потом. А rastertoepson - это совершенно другой код (эппловский). И он может заработать. Просто я его использовал и у меня все печатало.

На самом деле, фуматик - это только посредник. В foomatic-rip в принтер рисует драйвер ghostscript, а в rastertoepson непосредственно в принтер код готовит он, а растровую картинку без всяких принтерных управляющих кодов - ghostscript.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Coyote112358

Вообще, PPD-шник такой существует, но по ссылке он очень старый и без А3. Я не знаю, может, где-то он у тебя есть и поставился. К слову, в нем нет конфигурации разрешения 240 на 216. Может, поэтому и не напечатал.

https://opensource.apple.com/source/cups/cups-30/ppd/epson9.ppd

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Coyote112358

Установлено было разрешение 240 на 216 а печаталось в один проход почему-то.

Есть еще rastertoescpx. Он какой-то даже улучшенный.

Zubok ★★★★★
()
Ответ на: комментарий от Coyote112358

Установлено было разрешение 240 на 216 а печаталось в один проход почему-то.

Я полагаю, что rastertoepson не сможет печатать на 240 на 216. Это специальный режим для 9-пиновых принтеров, а не стандартный.

'eps9high' is a special mode for 9-pin printers where scan lines are interleaved in multiple passes to produce high vertical resolution at the expense of several passes of the print head.

А вот в rastertoescpx как-то упомянули, что такое поддерживается.

https://lists.linuxfoundation.org/pipermail/printing-summit/2006/000015.html

We already support all of the current dot-matrix printers via the CUPS rastertoepson driver. We're also updating the CUPS DDK's rastertoescpx driver to support the dot matrix modes, so that we can support «softweaved» 240x216 output on the 9-pin printers (and maybe do some other tricks to speed up the output...)

Zubok ★★★★★
()
5 сентября 2016 г.
Ответ на: комментарий от Zubok

Скоро приедет новый комп с настоящим LPT ) И я продолжу.

Coyote112358
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.