"The Printing Howto", или
"Как да отпечатваме под Linux"

Grant Taylor gtaylor+pht@picante.com
превод Росен Караиванов selibum@yahoo.com

Версия 5.15 от 15.01.2001 04:47:37
Настоящия превод е от November 25, 2001

Пред вас е документът "Как да отпечатавме под Linux", съдържащ информация какво трябва да направите, ако искате да генерирате, прегледате и отпечатате към принтер или факс каквото и да е под GNU/Linux (и други видове Unix като цяло). Почти всичко от написаното тук важи в голяма степен и за потребителите, използващи свободен софтуер на други, Unix - подобни операционни системи.

Бележка на преводача: ще приемам с благодарност всички забележки и коментари по превода, дори и дребни.

1 Въведение

"Как да отпечатваме под Linux" би трябвало да съдържа всичко, което ви е необходимо да знаете, за да можете да настроите услугите за печат на вашата Linux машина/и. Както обикновенно става в живота, това е малко по - сложно от посочи - с - мишката - и - щракни светът на Microsoft и Apple, но освен това то е по - гъвкаво, и със сигурност по - лесно за администриране на големи локални мрежи.

Настоящият документ е структуриран по такъв начин, че за мнозинството от четящите го ще е достатъчно да прочетат първата половина от него (приблизително). По - мъглявата и зависима от различните ситуации информация е концентрирана главно във втората половина; тя може лесно да бъде открита в Съдържанието. За мнозинството от хората навярно най - важно ще бъде да прочетат написаното в глави 10 и 11.

Ако намирате този документ, или Интернет страницата LinuxPrinting.org за ползотворни, не пропускайте шанса да си купите нещо (мастило например), като проследите съответните връзки на страницата; такива покупки подпомагат страницата и документа.

Тъй като версиите 3.х и нагоре са изцяло пренаписани, липсва много от информацията от предишните редакции на документа. Това е направено умишлено,понеже по - старите версии достигаха големина от 60 печатни страници и нагоре. Ако не откриете отговора на вашия въпрос тук, ви препоръчвам следното: а)прегледайте по - старите версиин на адрес LinuxPrinting.org , и б)напишете ми писмо за това какво трябва да съдържа документа, а го няма.

LinuxPrinting.org е правилното място за откриване на последната версия; естествено, документа се публикува от metalab.unc.edu , и неговите най - близки до вас огледални копия на LDP.

1.1 Терминология

Старал съм се да използвам еднаква терминология в целия домумент, с оглед на това и потребителите на свободни Unix - подобни операционни системи (ОС), и тези с други ОС, използващи свободен софтуер, да имат полза от написаното. За беда се срещат много нееднозначни термини, а освен тях има и много проблематични еднозначни термини; за да бъдат ясни нещата, по - долу съм изложил малък речник на използваните термини:

Unix
Unix е операционна система, създадена в Bell Labs от различни разработчици. Множество операционни системи, преобладаващо комерсиални, се основават на нея, и също се включват в името Unix.
Un*x
Un*x е една объркваща дума, използвана за да се означават с нея всички Unix - подобни операционни системи. Unix - подобните операционни системи осигуряват за свой естествен API нещо сходно на програмния интерфейс POSIX. GNU/Linux, FreeBSD, Solaris, AIX, и дори системи със специално предназначение, като Lynx и QNX, са Un*x.
Linux
Linux е Unix - подобно ядро и малка подредба от (драйвери за) периферни устройства, написано от Linus Torvalds и стотици други програмисти. Около нефо се формира основата на най - широко използваната Un*x операционна система.
GNU
Проектът GNU (Gnu's Not Unix - GNU не е Unix) представлява едно дългосрочно развойно усилие на разработчици, стремящи се да създадат свободна, подобна на Unix операционна система. GNU проектът се явява родител на мнозинството от съвременните движения за свободен софтуер.
GNU/Linux
Операционната система GNU/Linux представлява завършена система, състояща се от Linux ядро, периферните му програми, и GNU работна среда - в това число библиотеки, полезни приспособления, софтуер за крайни потребители, и т.н. RedHat, Debian, Caldera, SuSE, TurboLinux, и други подобни компании представляват комерсиални доставчици  на цялата GNU/Linux система.

1.2 История

В момента четете четвъртото поколение на документа "Как да печатаме подLinux". Ето накратко неговата история:

  1. Аз написах първата версия в отговор на множеството питания относно отпечатването във comp.os.linux , и я публикувах. По този начин изпреварих проекта "КАК-ДА" (HOWTO), започнал няколко месеца по - късно. На практика това беше първият документ от тип "Често Задавани Въпроси/ЧЗВ/" (FAQ), който беше наречен "КАК-ДА". Тази версия беше в прост текстов формат.
  2. След включването в проекта "КАК-ДА", "Как да отпечатваме" беше слято с "ЧЗВ за lpd" на Brian McCauley (B.A.McCauley@bham.ac.uk); нашето съавторство продължи близо две години. Добавихме и някои неща, написани от Karl Auer (Karl.Auer@anu.edu.au). Тази версия беше създадена във формат TexInfo, и можеше да бъде открита като PS, HTML, Info или обикновен текстов файл.
  3. След като за повече от година "Как да отпечатваме" беше изоставено, и опита да се намери някой, който да поддържа документ, излезе неуспешен, се случи и пренаписването му. Тази версия беше създадена във формат SGML , използвайки LinuxDoc DTD  и пакета SGML-Tools-1. Започвайки от версия 3.27 и нагоре, той съдържаше обобщена информация за поддържаните принтери; преди версия 3.27 никога не е имало списък със съвместимите принтери в това "КАК-ДА" (!).
  4. В средата на Януари 2000г. научих за съществуването на PDQ. Предлаганият от PDQ механизъм за отпечатване е толкова по - добър от този на lpd, че аз прекарах множество часове играейки си с настройките му, след това пренаписах част от документа, и промених номера на версията му на 4.
  5. В средата на 2000г. преместих Интернет страницата си за печата на адрес
    www.linuxprinting.org, и там започнах да предлагам по - мощни конфигурационни приспособления. Също така преобразувах това HOWTO в DocBook формат, и започнах да добавям информация за CUPS, LPRng, и GPR/libppd.
  6. В края на 2001г. започнах да използвам GNU Free Documentation License, който ми изглежда много подходящ. Също така си поставих за цел да внеса яснота, относно това какво е специфично за Linux, и какво не е; има множество популярни Unix - подобни ядра, и те всички използват един и същ софтуер за разпечатване.
  7. Настоящият превод със заглавие ``Как да отпечатваме под Linux'' е направен на November 25, 2001 от Росен Караиванов. Засега в преведения документ липсват посочваните фигури и връзките към цитираните страници в Интернет. Моля изпращайте мнения, забележки и коментари на адрес selibum@yahoo.com

1.3 Copyright

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in Section 20.

Авторски права

Копирането, разпространяването и/или променянето на този документ е позволено при спазване условията на GNU Лиценза за Свободна Документация, Версия 1.1 или следващи, публикувани от Free Software Foundation; без Invariant Sections, без Front-Cover Texts, и без Back-Cover Texts. В част 20 има копие на GNU Лиценза.

Настоящият превод се явява Modified Version според условията на Лиценза за Свободна Документация, и следва да се разпространява съобразно този Лиценз.

2 Бързо начало

Най - бързият начин да започнете да отпечатвате е да използвате съответните инструменти за настройка, предоставени от доставчика ви. Изхождайки от преположението, че в тях има поддръжка за драйвер за вашия принтер, и също така предполагайки, че вашият доставчик ви е предоставил този драйвер, следва основните настройки да бъдат направени лесно и бързо по този начин. Повече информация за инструментите за настройка, предоставяни от различните доставчици, можете да намерите в част 9.

Ако не се получи с инструментите на доставчика ви, би трябвало да си изясните дали въобще ще можете да ползвате вашия принтер. Проверете списъка на съвместимите принтери в част 5.3.1, а също и в споменатата тук Интернет страница.

Ако има работещ драйвер за вашия принтер, проверете дали разполагате с този драйвер, и се снабдете с него ако го нямате. В повечето случаи ще можете да намерите Ghostscript пакет, включващ нови и предоставени от трета страна драйвери. Ако не намерите, може да си компилирате сами; това не е лека задача, но за сметка на това е добре документирана. в част 10 можете да намерите повече информация за Ghostscript.

След като инсталирате драйвера, опитайте отново да направите настройките за принтера си с помощта на инструментите на доставчика ви. В случай на неуспех, изберете си някой от предоставяните от трета страна инструменти, описани в част 8. Ако и така не успеете, ще трябва сами да направите настройките; отново погледнете в част 8.

Ако и след това резултата е несполучлив, ще трябва да проверите дали не грешите някъде. Вероятно ще бъде най - добре първо да прочетете целия документ, за да придобиете усещане как работят нещата; така ще бъдете в по - добра позиция при търсене на грешки.

2.1 Откъде да се потърси помощ

В Usenet групите comp.os.linux.hardware, comp.os.linus.setup, и comp.periphs.printers има множество общи запитвания, свързани с  разпечатването. Въпросните групи са много посещавани, и със сигурност там можете да се намери отговор; проверете също и в архивите на Deja.com. Аз също съм създал няколко linuxprinting.foo новинарски групи; те са достъпни едновременно и като форуми на Интернет страници, и през NNTP; вижте на страницата в Интернет.

Поразровете се също така и в Интернет за решение на вашия проблем. Като начало би било добре да погледнете на LinuxPrinting.org; там има връзки към други станици и проекти. Получавам множество писма с въпроси, отговорите на които могат да бъдат намерени на моята страница, или в документацията доставена ви с принтера.

Ако ви е необходима допълнителна помощ, моля опитайте с новинарските групи, кореспондентските списъци, отдела за поддръжка на вашия доставчик, и т.н., преди да попитате мен. Въпреки че се опитвам да отговоря на всяко писмо, което съм получил, на практика не съм успял да изпратя отговор на около 10 % от получените през последната година писма. И нещата ще се влошават за в бъдеще. Ако все пак искате да се свържете с мен, направете го чрез форумите на LinuxPrinting.org; така ще имате шанс да получите отговори и от други хора, като същевременно въпросът ви, и евентуалните отговори, ще останат на публично място в архива.

3 Как да отпечатваме

На практика вие използвате различни команди, когато искате да печатате, в зависимост от софтуера за управление на печат който използвате.

3.1 С PDQ

Мнозинството от операционните системи в наше време се доставят с lpd, така че тази част се явява неприложима. Нека го кажа сега, аз препоръчвам на хората да инсталират и използват PDQ в мнозинството от случаите, вместо (или като добавка към) lpd. PDQ е навярно най - лесна за разбиране и ползване, докато CUPS е сред по - мощните системи, предназначени за много по - опитни потребители. И при двете системи поддръжката на различни настройки по принтерите, и възможностите за интересни конфигурации, са много по - добри, отколкото при LPD.

Когато използвате PDQ, вместо командата lpr трябва да използвате командите pdq или xpdq. И двете работят почти като lpr, т.е. те отпечатват зададените им файлове, или стандартния вход ако не е зададен файл.

3.1.1 Xpdq

Xpdq е приложение за X Windows, което показва списък от наличните принтери и обобщена информация за опашката от задачи за отпечатване (включваща текущите и предишни задачи). Във File менюто има предостваени две възможности - едната е да се отпечатват определени файлове, а другата - да се отпечатва стандартния вход. Във диалога Driver Options, можете да изберете каквито искате настройки, от зададените за вашия драйвер за принтера; обикновено се избира дали да се дуплексира, каква да бъде разделителната способност, какъв вид хартия се използва, с какви размери, и т.н.

3.1.2 Pdq

Командата за отпечатване от команден ред при PDQ системата е наречена просто pdq. В мнозинството от ситуациите тя може да се използва на мястото на lpr; тя възприема -Р аргумента за определяне на принтер. Също както и lpr, pdq отпечатва или зададения файл (файлове), или стандартния вход.

Настройките за принтера могат да се променят посредством -о и -а аргументите.

3.2 С LPD и командата lpr

Ако вече сте настроили lpd системата да отпечатвате на принтера си, или вашия системен администратор е направил това, или пък вашият системен доставчик, тогава всичко, което трябва да направите, е да научите как да използвате командата lpr. Документа "Printing Usage HOWTO" изчерпателно покрива тази тема, както и някои допълнителни подробности, касаещи управлението на опашката за отпечатваните задачи. Можете също така просто да прочетете man страницата на lpr(1).

Казано с прости думи, трябва да посочите името на опашката за печат с -Р, и да зададете името на файла, който ще отпечатвате (или нищо, ако печатате от стандартния вход). По традиция настройките на драйвера не могат да се променят от lpr, но различните системи понякога приемат определени аргументи като -o, -Z, или -J.

3.3 Инструменти за отпечатване с графичен интерфейс

Болшинството от системите за отпечатване, сами по себе си, предоставят като средство за общуване само най - основни команди за командния ред. Възможно е, вместо да използвате директно lpr, да пожелаете да придобиете и използвате по - обогатен интерфейс. Лесните за използване графични интерфейси, като цяло, дават възможност да се променят множество от настройките за разпечатване (например кой принтер, какъв тип хартия, и др.). Е, някои от тях могат да имат и допълнителни възможности.

3.4 GPR

GPR, създаден от Thomas Hall, изпозлзва част от кода на CUPS за филтриране на Postscript задачи, и предоставя на ползвателите се лесен контрол върху настройките на задачите за печат. Някои от тези настройки (като многократен печат, избор на страници, и др.), са вградени директно в GRP, докато мнозинството от останалите са реализирани в принтера, или във филтрите на системата за управление на печата.

GPR работи с LPD или LPRng; може и да се компилира специално, за да работи с усъвършенстваната от VA Linux версия на LPD. Когато е нормално компилиран, той използва директно libppd на VA, за да произведе специфичния за принтера Postscript, и след това го предава на командата lpr. Когато е компилиран за LPD на VA, той предоставя Postscript задачата ви за печат непроменена на командата lpr, заедно с добавка от настройки, които сте указали. Това е доказуемо най - добрият път, тъй като той позволява на системата за печат да препрати Postscript на различен принтер. За нещастие този случай изисква специалната за VA Linux версия на LPD, соято все още не е много разпространена (макар инсталацията и , разбира се, да е рутинна).

За да използвате GPR, първо си изберете принтер (според името на LPD опашката), и се уверете, че GPR е заредил правилния PPD файл. Ако не го е направил, ще се наложи вие да уточните името на PPD файла, и да изберете желаните настройки на принтера в диалога Printer Configuration (този диалог се появява при натискането на бутона Printer Configuration; в него има спечифични настройки за принтера, взети от PPD файла).

Веднъж след като сте направили настройките на принтера си в GRP, вие можете да отпечатвате, като укажете името на файла за печат, и изберете подходящите настройки от панелите 'Common' или 'Advanced'. Настройките от панела 'Common' са вградени в директно в GPR за всички принтери, докато тези в 'Advanced' се дефинират от PPD файла за вашия принтер. Можете да видите тези панели с настройки на Фигура 2 и Фигура 3.

3.5 QtCUPS

Ако използвате CUPS и KDE, навярно бихте спряли избора си на QtCUPS - един приятен инструмент за управление на CUPS - разпечатването с графичен интерфейс. Заедно с него получавате и библиотека, която се грижи за тясната взаимообвързаност с KDE средата; разработчиците на KDE могат с минимални изменения да поддържат CUPS разпечатването през QtCUPS.

Също както в XPP, в QtCUPS наскоро добавиха цифрови настройки за поддръжка на Foomatic, така че свободни драйвери за CUPS с Foomatic ще бъдат напълно контролируеми от графичния интерфейс.

3.6 XPP

Друг добър избор за CUPS представлява програмата XPP (вж. Фигура 5). XPP и изграден на основите на библиотеката FLTK, и следователно признава единствено графичния интерфейс.

За да разпечатате нещо с ХРР, просто стартирайте програмата хрр и посочете файл за печат (или нищо, в случай че използвате хрр на мястото на lpr за разпечатване от стандартния вход). След това изберете принтер от списъка с конфигурираните принтери, и направете желаните от вас настройки по различните панели. На Фигура 6 можете да видите примерен панел със стандартни CUPS настройки .

Когато се използва с моята система за драйверен интерфейс Foomatic, ХРР ще ви позволи да използвате и цифрови параметри, за които няма поддръжка в CUPS. Сред тях обикновено са неща като разширено управление на цветовете, изравняване на касетата, и т.н. На Фигура 7 можете да видите такъв пример.

Можете да запазите всички промени, които сте направили по настройките, като натиснете бутона 'Save Settings'.

3.7 XPDQ

PDQ лесно може да се настрои да отпечатва към опашките за печат на мнозинството от използваните системи, а синтаксисът на настройките му позволява много лесно да се дефинират каквито пожелаете филтри и потребителски настройки за отпечатваните неща. Следователно можете много успешно да използвате xpdq за посредник на LPD - разпечатването.

За повече информация вижте в част 6.2.

4 Устройства за печат в ядрото

Има два напълно различни драйвера за паралелния порт; кой от драйверите ще използвате, зависи от версията на ядрото ви (последното можете да разберете с командата uname -a). Драйверът беше променен във версията на ядрото 2.1.33; на практика всички съвременни системи използват ядра с версия 2.2 или по - висока, така че спокойно можете да скочите оттук направо на разела за parport устройството.

Има наколко детайла, които са общи за двата драйвера. И най - вече следното: много хора откриват че Linux не може да открие паралелният порт на компютъра им, докато не забранят "Plug and Play" във BIOS. (Това не е изненадващо; проблемите със PnP при не-PCI устройства при Windows и въобще навсякъде са близо до бедствени).

4.1 Устройството lp (ядра <= 2.1.32)

Linux ядрото (версия <= 2.1.32), при положение че сте компилирали в него или заредили като модул драйвера за lp устройството (изходът от cat /proc/devices трябва да съдържа устройството lp ако то е заредено), предоставя едно или повече от следните устройства: /dev/lp0 , /dev/lp1 и /dev/lp2. Тези устройства НЕ се присвояват динамично, всяко съответства на определен входно/изходен адрес. Това означава, че вашият първи принтер може да бъде lp0 или lp1, в зависимост от ващия хардуер. Просто опитайте и двете.

Някои потребители съобщават, че техните двупосочни lp портове не могат да бъдат открити от ядрото, когато използват стари еднопосочни принтерски кабели. Проверете дали изполвате съвременен кабел.

Не е възможно да използвате драйверите lp и plip едновременно на един и същи порт (до версия 2.0 на ядрото). Обаче може да зареждате единия или другия драйвер ръчно, или чрез kerneld при версии на ядрото 2.х (и след 1.3.х). Чрез внимателно настройване на прекъсванията и др. такива се предполага, че можете да стартирате plip на един порт и lp на друг; с нетърпение очаквам някой да ми каже че е направил успешно това само от команден ред.

Има едно малко приспособление, наречено tunelp, с помощта на което, като root, можете да настроите използването на прекъсванията от lp устройствата при ядра 2.0 и нагоре, а също и други неща.

Когато lp драйверът е компилиран в ядрото, можете да използвате командния ред на LILO/LOADLIN , за да установите адреса и прекъсването на порта, които драйверът да използва.

 

Синтаксис:       lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

 

Например:       lp=0x378,0 или lp=0x278,5,0x378,7

 

Забележете, че когато изпозвате този метод, трябва да посочите *всички* портове, които искате да бъдат взети пред вид, няма значения по премълчаване. Можете да деактивирате вградения в ядрото драйвер посредством lp=0.

Когато драйверът се зарежда като модул, е възможно да се уточнят входно/изходния адрес и прекъсването на командния ред на програмата insmod (или във /etc/conf.modules за да въздействате на kerneld), използвайки обикновения синтаксис за аргументи на модулите. Параметрите са io=port0,port1,port2 и irq=irq0,irq1,irq2. За повече информация относно insmod командата можете да прочетете нейната man страница.

**За тези от вас, които (подобно на мен) никога не могат да открият стандартните номера на портовете, когато им потрябват, те са като във вторият пример по-горе. Другият порт (lp0) е на 0х3bc. Нямям идея кое прекъсване използва той.

Първичният код на драйвера за паралелния порт в Linux ядрото се намира в
/usr/src/linux/drivers/char/lp.c

4.2 Устройството parport (ядра >= 2.1.33)

Започвайки от ядро 2.1.33 (достъпно и като кръпка към ядро 2.0.30), lp устройството се явява просто клиент на новото устройство parport. Добавянето на parport коригира известна част от проблемите, които бяха причинявани от стария lp драйвер - то може да споделя порта с други драйвери, може динамично да присвоява на достъпните паралелни портове номера на устройствата (вместо да прави фиксирана връзка между входно/изходните адреси и устройствата), и т.н.

Навлизането на новото устройство parport даде възможност да се появят множество драйвери за устройства за паралелния порт, като Zip устройства, записващи CD-R/RW устройства, и т.н. Някои от тези драйвери могат да бъдат открити и за версии на ядрото 2.0; просто потърсете в Интернет.

Главната разлика, както навярно забелязвате (поне докато става въпрос за отпечатване), е че ядрата, базирани на parport устройството, динамично присвояват lp устройствата към паралелните портове. Така това, което под Linux 2.0 е било lp1, може под Linux 2.2 да бъде, да речем, lp1. Уверете се, че сте проверили как стои този въпрос, ако сте обновили старото си ядро с lp драйвер, с по-ново с parport драйвер.

Най - често срещаните проблеми с това устройство произлизат обикновено от неправилната му настройка:

Дистрибуцията
При някои от разпространяваните дистрибуции файлът /etc/modules.conf (или /etc/conf.modules) не е правилно редактиран, в следствие на което драйверът не се зарежда когато това трябва да стане. Използвайки съвременна версия на modutils, въпросните магически редове трябва да изглеждат така:
alias /dev/printers lp                  #само за devfs?
alias /dev/lp*      lp                  #само за devfs?
alias parport_lowlevevl parport_pc    #липсващ в RedHat 6.0 и 6.1
BIOS
При много персонални компютри BIOS приема, че паралелният порт е PnP устройство. По този начин излишно се усложнява работата с това просто устройство. Трябва просто да изключите PnP настройката за вашия паралелен порт ("LPT1" при повечето BIOS-и), в случай че паралелният ви порт не може да бъде открит от Linux драйвера. Правилната настройка обикновено е наречена "legacy", "ISA" или "0x378", но със сигурност не е "disabled".
Повече информация можете да откриете във файла Documentation/rapaport.txt в изходния код на използваното от вас ядро, или като погледнете на web-страницата на parport.

4.3 Серийни устройства.

Серийните устройства под Linux обикновено носят имена като /dev/ttyS1. Полезното приложение stty ви дава възможност да разгледате и промените настройките на серийния порт; setserial ви дава възможност да конфигурирате допълнителни подробности, и да настроите прекъсванията и входно/изходните адреси за някои по-нестандартни портове. Повечко неща по въпроса можете да прочетете в Serial-HOWTO.

Когато използвате бавен сериен принтер с контрол на потока, е възможно да ви се случи някои от поставените задачи за отпечатване да не бъдат изпълнени докрай. Причината за това може да бъде в серийният порт, който в стандартния случай изчиства от буфера си непредадените символи 30 секунди след като порта бъде затворен. Буферът побира до 4096 символа, и в случай че вашият принтер използва контрол на потока и е толкова бавен, че да не може да приеме всичката информация от буфера за 30-те секунди след като софтуера за печат затвори серийния порт, вие ще изгубите (т.е. няма да се отпечата) последното съдържание на буфера. Ако командата cat file > dev/ttyS2 води до пълни разпечатки при къси файлове, но недопечатва по - дълги, навярно сте изпаднали в описаната ситуация.

30 секундният интервал може да бъде променен посредством настройката от командния ред  "closing_wait" на командата setserial (версии 2.12. и следващи). Първоначалното установяване на серийноте портове на машината обикновено се извършва чрез извикване на setserial във файла rc.serial. С това извикване може да се промени "closing_wait" на серийният порт за отпечатване, както и други негови параметри.

4.4 USB устройства

Аз нямам на разположение USB устройство, така че всичко което мога да предложа е само насочващо. След като си направите настройките веднъж, ще имате на разположение файлът за устройство /dev/usb/lp0, който, подобно на този за паралелния порт, можете да посочите в printcap, или като местно устройство на PDQ.

USB е добре документирана в Интернет страницата Linux USB. Би трябвало да имате някакви, малки или големи успехи, с по - късните версии на ядрата 2.2 и с всички версии на ядро 2.4.

5 Поддържани принтери

Linux ядрото позволява да "говорите" на почти всички принтери, които се включват към серийния, паралелния , или USB порт, плюс всеки принтер в мрежата. За съжаление, само това не е достатъчно; трябва също да можете да генерирате информация, която принтерът разбира. Основната част от несъвместимите принтери са тези, обозначававани като "Windows" или "GDI" принтери. Те са наречени така, понеже всичко, или поне една част от език за управление на принтера и конструктивните детайли на механизма му за печатане не са документирани. Обикновено производителите на такива принтери доставят драйвери за Windows, и спокойно ги продават на потребители на Windows; затова и тези принтери биват наричани Win-принтери. Има и случаи, в които производителя доставя драйвери за NT, OS/2 или друга операционна система.

Много от въпросните принтери не работят със свободен софтуер. Някои от Win - принтерите работят, а други само донякъде (обикновено защото някой, използвайки реверсивно инжинерство е установил детайлите, необходими за написване на драйвер). Вижте по - долу списъка с поддържаните принтери за повече подробности за определени модели.

Някои от принтерите заемат междинно положение между двете крайности. Част от моделите на NEC например, предоставят проста форма на поддръжка на стандартния език за отпечатване PCL, което позволява на ползващите софтуер, "говорещ" PCL, да отпечатват с 300dpi, но само NEC знаят как да извадят от тези принтери 600dpi отпечатка.

Имайте пред вид, че ако вече притежавате такъв Win-принтер, могат да се намерят заобиколни начини да се отпечатва на тях от Linux машина, но те не са много лесни, и аз лично не съм ги изпробвал. Във част 12 на настоящия документ можете да намерите повече информация за този тип принтери.

5.1 Postscript

Говорейки за това кои принтери работят със свободен софтуер, най - добрият избор е да си купите принтер, имащ вградена във вътрешното програмно осигуряване (firmware) поддръжка за Postscript. Почти целия софтуер за Un*x, използван за обработване материали за печат, дава като краен резултат информация в Postscript формат, така че очевидно би било хубаво да притежавате принтер, който директно поддържа Postscript. За съжаление тази поддръжка се среща най - вече при лазерните принтери, и в някои случаи се явява скъпа добавка.

Софтуерът по Un*x, а също и книгоиздателската индустрия като цяло, са спрели избора си за предпочитан език за управление на принтери на Postscript. Това се е случило по няколко причини:

Хронология.
Postscript идваше като част от Apple Laserwriter, съвършеният спътник на Macintosh - системата, на която почти изцяло се дължи революцията в настолните издателски системи през 80-те.
Той е независим от устройствата.
Postscript програми могат да бъдат стартирани да извеждат информация на пикселен екран, на векторен екран, на факс машина, и на почти всеки вид печатащ механизъм, без да има нужда да се променя оригиналната програма. Изходът от Postscript програмата ще изглежда по един и същи начин на всяко Postscript устройство, доколкото позволяват възможностите на самото устройството. Преди да бъде създаден PDF, хората обменяха помежду си в мрежите (и Интернет) сложни документи под формата на Postscript файлове. Единствената причина този стандарт да не се задържи, беше липсата на начин за разглеждане на тези файлове под Windows. Затова от Adobe добавиха хипервръзки и компресия към Postscript, нарекоха резултата PDF, разпространиха инструмент за разглеждането му, и създадоха пазар за своите "distiller" инструменти (функционалността на последните е достъпна и посредством ps2pdf и pdf2ps програмите на Ghostscript).
Той е истински език за програмиране.
Postcript е завършен език за програмирене; с него можете да създадете какъвто си поискате софтуер. Това е много полезно например за дефиниране на подпрограми, за да можете да повтаряте сложни неща във вашия документ, например някакво лого или "DRAFT" с големи букви като фон.
Той е отворен.
Postscript е напълно документиран в публично достъпни поредици от книги (които можете да откриете във всяка добра книжарница). Макар че Adobe са го създали и осигуряват преобладаващата част от комерсиалното му приложение, други фирми, като Aladdin, също предлагат независимо създадени приложения.

5.2 Не - Postscript

Отказвайки се от (големия) бюджет, необходим за закупуването на Postscript принтер, на вас ви остава да използвате кой да е принтер, поддържан от Ghostscript - свободният Postscript интерпретатор, използван като заместител на вградената поддръжка на Postscript в принтерите. Трябва да се отбележи, че съобразявайки се с лиценза му, мнозинството от GNU/Linux дистрибуциите се разпространяват с малко остарели версии на Ghostscript. За щастие, обикновенно винаги може да се намери поготвена последната версия на Ghostscript в областта contrib на всяка дистрибуция.

Понастоящем Adobe имат нов език за принтери, наречен PrintGear. Мисля, че това е доста опростен език в двоичен формат, имащ свойства като Postscript, но несъвместим с него. И не съм чувал той да се поддържа от Ghostscript. Но някои от поддърржащите PrintGear принтери изглежда поддържат и друг език като PCL, и те биха могли да работят с GNU/Linux (ако PCL езикът е въведен в принтера а не във Windows драйвера).

5.3 Кои принтери работят?

Ако искате да си купите принтер, можете да проверите предварително на много места дали той ще работи. Целта на съвместно поддържаната база данни за принтери към "Printing HOWTO" е да дава разбираема оценка за състоянието на поддръжката на печата в GNU/Linux. По - долу можете да намерите част от нея; не пропускайте да проверите страницата в Интернет за повече детайли и информация кой драйвер да използвате.

За тези от вас, които искат да си купят нов принтер, най - добре ще бъде да се консултират със списъка от предлаганите от мен принтери. В този списък има предимно цветни мастиленоструйни и монохромни лазерни принтери. Имате възможност да подкрепите настоящия документ, и страницата в Интернет, като проследите някоя от връзките там към различни производители, си купите нещо от тях.

На страницата за съвместими принтери на Ghostscript има списък от работещи принтери, а също и връзки към други страници.

На Dejanews можете да откриете стотици съобщения, от типа на "това работи", и "това не работи". Проверете и на трите места, и когато сте готови, увверете се дали вашият принтер е правилно вписан в базата данни. Ако не е, изпратете вашата информация, така че за в бъдеще той да бъде вписан правилно в този документ.

5.3.1 Списък на съвместимите принтери.

Изброеното тук представлява обобщение на станицата в Интернет. Последната включва основни параметри на принтерите, бележки, връзки към информация за драйвери, поддържана от други потребители документация, Web страници на производителите, и интерфейсни скриптове за използването на драйвери с различни системи за печат (в това число LPD, LPRng, PDQ и CUPS). Версията на този списък в Интернет освен това е жизнена - хората могат да добавят информация по всяко време, така че проверявайте я по - често. И накрая, ако вашият принтер го няма в списъка - добавете го!

Имайте пред вид, че настоящият списък не е евангелие; хората понякога добавят неправилна информация, която аз все някога ще отстраня. Вписвания, които аз лично не съм проверил дали са верни, са отбелязани със звездичка (*). Проверете на Dejanews, дали някой е успял да накара съответния принтер от този списък да работи, преди да си го купите. Ако не можете да откриете информация в Dejanews, пишете ми, и аз ще ви свържа с човекът, направил вписването за съответния принтер.

Принтерите са категоризирани в три типа.

Отличен
Отличните принтери работят отлично - когато разпечатвате, можете да използвате всичките им възможности, в това число цвят, разделителна способност, и т.н. Една малка част от принтерите, притежаващи недокументирани режими с "увеличена разделителна способност" (които няма да можете да ползвате), са вписани като отлични. Като цяло, разликата в качеството на отпечатвания материал е толкова малка, че не си струва да се тревожите за това.
Добър
Можете да печатате добре, но е възможно да има някои малки ограничения, от един или друг тип, за разпечатването или нещо друго.
Частично
Можете да печатате, но навярно без цвят, или само при ниска разделителна способност. Вижте бележките в Интернет версията на списъка за повече информация относно тези ограничения.
Баласт
Не можете нищичко да отпечатате; обикновено това се дължи на липсата на драйвер и/или липсата на документация как да бъде написан такъв. Принтерите от този тип понякога се предлагат на "промоции"; това се случва когато някой открие, че съществуващ драйвер работи, или когато някой напише нов драйвер; би трябвало да соите далеч от такива "промоции".
Във всички случаи, понеже информацията по - долу е предоставена от много хора, за никое от вписванията не мога да дам гаранция че е вярно. Вписванията, отбелязани със звездичка (*), са частично подозрителни. Фактите, от своя страна, лесно могат да бъдат проверени на Интернет страниците на драйвера, и на сървърите на производителя.

И без повече приказки, ето го и самия списък на съвместимите принтери:

 

Alps
 

Частично 
MD-1000, MD-1300, MD-2000, MD-4000, MD-5000.
Apple 
 

Отличен 
Dot Matrix, ImageWriter*, ImageWriter LQ, LaserWriter 16/600, LaserWriter IINTX*, LaserWriter Select 360.
Добър
12/640ps, LaserWriter NT, StyleWriter 2500.
Avery 
 

Отличен 
Personal Label Printer+.
Добър
Personal Label Printer.
Brother 
 

Отличен 
HL-1070, HL-10V, HL-10h, HL-1260, HL-2060, HL-4Ve, HL-630*, HL-720*, HL-720*, HL-730, HL-760, HL-8*, HL-820.
Добър
HJ-400, HL-1040, HL-1050, HL-1060, HL-1240*, HL-1250, MFC 6550MC, MFC4350*.
Частично 
MC-3000, MFC 7150C, MFC8300*.
Балласт
HL-1030, MP-21C.
C.Itoh 
 

Отличен 
M8510.
CalComp 
 

Балласт 
Artisan 1023 penplotter*.
Canon 
 

Отличен 
BJ-10e, BJ-20, BJ-200, BJ-330, BJ-5, BJC-210, BJC-250, BJC-4000, BJC-4100, BJC-4200, BJC-4300, BJC-4400, BJC-600, BJC-610, BJC-620*, BJC-70, BJC-800, GP335/405*, LBP-1260*, LBP-1760, LBP-4+*, LBP-4U*, LBP-8A1*, LIPS III*, LIPS-III*, bjc5000*.

Добър
BJ-300*, BJC-1000, BJC-2000, BJC-210SP*, BJC-240, BJC-4310SP*, BJC-7004*, BJC-80, LBP-4sx*.
Частично 
BJC-4550*, BJC-6000, BJC-7000*, BJC-7100*, MultiPASS C2500*, MultiPASS C3500*, MultiPASS C5000*, Multipass C3000*, Multipass C5500*.
Балласт
BJC-5000, BJC-5100, LBP-430, LBP-460*, LBP-660*, Multipass L6000*.
Citizen 
 

Отличен 
ProJet II*, ProJet IIc*.
Частично 
printiva600C*.
DEC 
 

Отличен 
DECWriter 500i*, DECwriter 110i*, DECwriter 520ic*, LA50*, LA75*, LA75 Plus*, LN03*, LN07*.
Добър
LJ250*, LN17.
Частично 
1800*.
Dymo-CoStar 
 

Отличен 
ASCII 250*, ASCII+*, EL40*, EL60*, LabelWriter II*, LabelWriter XL*, LabelWriter XL+*, SE250*, SE250+*, Turbo*.
Epson 
 

Отличен 
9 Pin Printers high-res*, 9 Pin Printers med-res*, AP3250*, ActionLaser 1100*, LP 8000*, LQ 850*, LQ-24*, LQ-2550*, LQ-500*, LQ-570+*, LX-1050*, SQ 1170*, Stylus Color*, Stylus Color 1520, Stylus Color 400*, Stylus Color 440, Stylus Color 460*, Stylus Color 500*, Stylus Color 600*, Stylus Color 640*, Stylus Color 800*, Stylus Color 850*, Stylus Color I*, Stylus Color II*, Stylus Color IIs*, Stylus Color PRO*, Stylus Pro XL*.
Добър
EPL 5700*, Stylus 300*, Stylus Color 3000*, Stylus Color 660, Stylus Color 740*.
Частично 
Stylus Color 300*, Stylus Color 900*, Stylus Photo 700*, Stylus Photo 750*, Stylus Photo EX*.
Fujitsu 
 

Отличен 
1200*, 2400*, 3400*, PrintPartner 10V*, PrintPartner 16DV*, PrintPartner 20W*, PrintPartner 8000*.
HP 
 

Отличен 
2000C*, 2500C, Color LaserJet 4500, DeskJet 1200C, DeskJet 1200C/PS, DeskJet 1600C, DeskJet 1600Cm, DeskJet 400, DeskJet 420C, DeskJet 500, DeskJet 500C*, DeskJet 510*, DeskJet 520*, DeskJet 540*, DeskJet 550C*, DeskJet 560C*, DeskJet 600*, DeskJet 610C*, DeskJet 610CL*, DeskJet 612C*, DeskJet 660C*, DeskJet 670C*, DeskJet 672C*, DeskJet 682C*, DeskJet 690C*, DeskJet 692C*, DeskJet 694C*, DeskJet 697C*, DeskJet 812C*, DeskJet 850C, DeskJet 855C*, DeskJet 890C, HP LaserJet 2P Plus*, LaserJet*, LaserJet 1100*, LaserJet 1100A*, LaserJet 2 w/PS*, LaserJet 2100M*, LaserJet 2D*, LaserJet 2P*, LaserJet 3*, LaserJet 3D*, LaserJet 3P w/PS*, LaserJet 4 Plus*, LaserJet 4050N*, LaserJet 4L*, LaserJet 4M*, LaserJet 4ML*, LaserJet 4P*, LaserJet 5*, LaserJet 5000*, LaserJet 5L*, LaserJet 5M*, LaserJet 5MP*, LaserJet 5P*, LaserJet 6*, LaserJet 6MP*, LaserJet 8000*, LaserJet 8100*, LaserJet Plus*, Mopier 320*, PaintJet*, PaintJet XL*, PaintJet XL300*.
Добър
DesignJet 650C*, Designjet 750 C Plus*, DeskJet 1100C*, DeskJet 1120C*, DeskJet 310, DeskJet 810C, DeskJet 832C*, DeskJet 870C*, DeskJet 880C*, DeskJet 882C, DeskJet 895C*, DeskJet 895Cxi*, DeskJet 970C*, DeskJet 970Cse, LaserJet 2*, LaserJet 2100*, LaserJet 6P*, OfficeJet Pro 1170Cse*.
Частично 
Color LaserJet 5000, DeskJet 1000C*, DeskJet 710C*, DeskJet 712C*, DeskJet 720C*, DeskJet 722C*, DeskJet 820C*, LaserJet 6L*, OfficeJet 500*, OfficeJet 600*, OfficeJet 625*, OfficeJet Pro 1175C*, PhotoSmart P1100*.
Балласт 
LaserJet 3100*.
IBM 
 

Отличен 
3853 JetPrinter*, 4019*, 4029 10P*, 4303 Network Color Printer*, Page Printer 3112*, ProPrinterII*.
Imagen 
 

Отличен 
ImPress*.
Kyocera 
 

Отличен 
F-3300*, FS-1700+*, FS-3750*, FS-600*, FS-800*, P-2000*.
Добър
FS-3500*.
Lexmark 
 

Отличен 
4039 10plus*, Optra Color 1200*, Optra Color 1275*, Optra Color 40, Optra Color 45, Optra E*, Optra E+*, Optra E310*, Optra Ep*, Optra K 1220*, Optra R+*, Optra S 1250*, Optra S 1855*, Valuewriter 300*.
Добър
1000, 1100*, 2070*, 3000*, 5000*, 5700, 7000*, 7200*.

Частично 
1020 Business*, 2030*, Winwriter 400*, Z51*.
Балласт 
1020*, 2050*, 3200*, Winwriter 100*, Winwriter 150c*, Winwriter 200*, Z11*.
Minolta 
 

Отличен 
PagePro 6*, PagePro 6e*, PagePro 6ex*, PagePro 8*.
Частично 
PagePro 8L*.
Mitsubishi 
 

Отличен 
CP50 Color Printer*.
NEC 
 

Отличен 
P2X*, PinWriter P6*, PinWriter P6 plus*, PinWriter P60*, PinWriter P7*, PinWriter P7 plus*, PinWriter P70*, SilentWriter LC 890*, Silentwriter2 S60P*, Silentwriter2 model 290*, SuperScript 660i*.
Добър
Silentwriter 95f*.
Частично 
SuperScript 100C*, SuperScript 1260*, SuperScript 150C*, SuperScript 650C*, SuperScript 750C*, SuperScript 860*, SuperScript 870.
Балласт 
SuperScript 610plus*, SuperScript 660*, SuperScript 660plus*.
Oce 
 

Отличен 
3165*.
Okidata 
 

Отличен 
OL 410e, OL 600e, OL 610e/PS, OL 800, OL 810e/PS, OL400ex, OL810ex, OL830Plus, Okipage 10e, Okipage 12i, Okipage 20DXn, Okipage 6e, Okipage 6ex, Okipage 8c, Okipage 8p.
Добър
Microline 182, OL 400w, OL 610e/S, OkiPage 4w+*, Okipage 4w, Super 6e.
Частично 
Microline 192+, Okipage 6w.
Балласт 
Okijet 2010, Okijet 2500, Okipage 8w*.
Olivetti 
 

Отличен 
JP350S*, JP450*, PG 306*.
PCPI 
 

Отличен 
1030*.
Panasonic 
 

Отличен 
KX-P1123*, KX-P1124*, KX-P1150*, KX-P1180i*, KX-P2023*, KX-P2135*, KX-P2150*, KX-P4410, KX-P4450*, KX-P5400*, KX-P8420*, KX-P8475*, kx-p1624*.
Добър
KX-P2123*, KX-P6150*.
Частично 
KX-P6500*.
Балласт 
KX-P6100*, KX-P6300 GDI*, KX-P8410*.
Printrex 
 

Частично 
820 DL*.
QMS 
 

Отличен 
2425 Turbo EX*, magicolour 2*.
Добър
ps-810*.
Ricoh 
 

Отличен 
4081*, 4801*, 6000*, Aficio AP2000*.
Добър
Aficio 401*.
Балласт 
Aficio Color 2206*, Afico FX10*.
Samsung 
 

Отличен 
ML-5000a*, ML-6000/6100*, ML-7000/7000P/7000N*, ML-7050*, ML-85*, QL-5100A*.
Добър
ML-5050G*.
Балласт 
ML-85G*, SF/MSYS/MJ-4700/4800/4500C*.
Seiko 
 

Отличен 
SpeedJET 200*.
Добър
SLP*, SLP 120*, SLP 220*, SLP EZ30*, SLP Plus*, SLP Pro*.
Sharp 
 

Отличен 
AR-161*.
Star 
 

Отличен 
LC24-100*, NL-10*.
Добър
LC 90*, LC24-200*, StarJet 48*.
Балласт 
WinType 4000*.
Tally 
 

Отличен 
MT908*.
Tektronix 
 

Отличен 
3693d color printer, 8-bit mode*, 4693d color printer, 2-bit mode*, 4693d color printer, 4-bit mode*, 4695*, 4696*, 4697*, Phaser 780*, Phaser IISX*, Phaser PX*.
Xerox 
 

Отличен 
2700 XES, 3700 XES, 4045 XES, DocuPrint 4508, DocuPrint C55, DocuPrint N17, DocuPrint N32.
Добър 
DocuPrint P12, DocuPrint P8e, XJ6C*.
Частично 
Document Homecentre, WorkCentre 450cp*, XJ8C*.
Балласт 
DocuPrint P8, WorkCentre 470cx*, WorkCentre XD120f*, WorkCentre XE80.
 

Вписванията, отбелязани със звездичка (*), са частично подозрителни.

5.4 Как да си купим принтер.

Малко е трудно да се избере принтер в наши дни; произвеждат се много модели, сред които можете да избирате. Ето и някои съвети при пазаруването:

Цена
Получавате толкова, колкото плащате. Мнозинството от принтерите под 200-300$ ще печатат доста добре, но цената на отпечатвана страница е висока. Има случаи, в които е достатъчно да смените един - два пъти патроните с мастило, и да установите, че сте дали пари колкото за един нов принтер! Също така, евтините принтери нямат дълъг живот. За най - евтините принтери, например, даденото средно време между повредите (MTBF) е 3 месеца; очевидно те не са подходящи за тежки натоварвания.
Мастиленоструйни
Печатащата глава на мастиленоструйниа принтер с времето се замърсява непоправимо, така че е хубаво да имате принтер, на който тя може да се сменя. Печатащите глави за мастиленоструйни принтери са скъпи, като слетите в едно глава/касета с мастило могат да струват до 10 пъти повече (!), отколкото самите касети с мастило, така че е хубаво и касетите с мастило да могат да се сменят отделно от главата. Принтерите от серията "Stylus" на Epson обикновено имат фиксирани глави, а тези от серията "DeskJet" на HP са предимно с глави, фиксирани към касетата. Моделите на Canon имат касети, съставени от три части, като танкчетата с мастило се сменят поотделно; на мен ми харесва тази конструкция. От друга страна, патроните на НР не са много по - скъпи, и НР като цяло предлагат по - пълна линия от принтери; Canon обикновена заемат трета позиция от гледна точка на качеството на отпечатване. Така че е трудно да се избере най - доброто.
Лазерни
Консумативите на лазерните принтери са барабан и тонер, плюс малък барабан за очистване тонера. При най - евтините модели барабана и тонера са сляти в едно във голям заменяем патрон; в този случай разходите за отпечатване са най - големи. При най - добрите конструкции , за разпечатки в големи обеми, се използват обикновен тонер на прах, или поне тонера и барабана се сменят поотделно.
Фотографски принтери
Най - добрите цветни фотографии се получават от "continuous tone" принтерите, които, използвайки специална технология (sliver halide plus lasers), достигат качеството на истинските фотографии. Тъй като тези принтери струват десетки хиляди ($), Ofoto.com предлага възможност за нескъпи единични разпечатки. Резултатите са поразителни; недостижими са дори и за най - добрите мастиленоструени принтери.
Най - добри разпечатки на поносима цена можете да получите от принтери с термичен трансфер - част от моделите на Alps са такива, също и някои модели на Sony от потребителския клас. За съжаление моделите на Аlps имат много слаба поддръжка под Linux (единственият опит с такъв принтер, за който съм чувал, е завършил с отпечатването на нагъната и силно зърнеста картина). Нямам никаква идея по въпроса дали моделите на Sony работят изобщо.
По - често използваните, специализирани за отпечатване на фотографии мастиленоструйни принтери, работят по процес със 6 (CMYKcm) или дори 7 (CMYKcmy) цвята. Всички принтери, специализирани за отпечатване на фотографии, имат големи разходи при експолатация; или винаги ще ви свършва синият цвят и ще трябва да заменяте целия патрон, или повторното напълване на танковете с мастило при фотографските принтери от най - висок клас ще ви струва цяло състояние. Специалните хартии за отпечатване на фотографии също струват скъпо; не се учудвайте на цени от $1 за лист висококачествена хартия за мастиленоструен печат. За почвече информация може да прочетете главата за отпечатване на фотографии намираща се по - нататък в настоящия документ, а също и главите за настройка на цветовете за Ghostscript.
Скорост
Скоростта на отпечатване е право пропорционална на мощността на обработващия процесор, натоварването, и като цяло на цената на принтера. Най - бързи са мрежовите принтери с вградена поддръжка на Postscript и мощни изчислителни процесори. При принтерите от потребителския клас сте зависими частично от скоростта на работа на Ghostscript. Съответно в такива случаи на скоростта на разпечатване може да се въздейства, като се стартира Ghostscript на достатъчно мощен компютър. Пълноцветните разпечатки, от своя страна, могат да консумират много от паметта на обработващата машина. На практика, докато разполагате с такива количества памет, всичко е наред.
Формуляри
Ако искате многократно да отпечатвате еднотипни формуляри, значи се нуждаете от по - обикновен принтер. Все още има доста компании, които произвеждат матрични принтери; мнозинството от последните емулират традиционните модели на Epson, и вършат чудесна работа.
Етикети
Има два типа принтери за отпечатване на етикети, за които има поддръжка; огледайте се за Dymo-Costar и Seiko SLP моделите. Други модели може да проработят, а може и да не проработят. Avery произвеждат етикети с различна големина във формат 8,5х11 инча, които могат да се изпозват и с обикновени принтери.
Чертане
В наши дни има огромни мастиленоструйни принтери, с които могат да се отпечатват големи чертежи; моделите на НР са доста популярни. Често се използват и А3 мастиленоструйни принтери за по - малки чертежи. Голяма част от тези разпечатки става с помощта на езици като RTL, HP-GL, и HP-GL/2. Това са просто векторни езици за описание на страници, собственост на НР. Специализираните програмни приложения отпечатват директно в тези езици.

5.4.1 Какво използвам аз?

Аз притежавам HP DeskJet 500, Lexmark Optra 40, и Canon BJC-4100. Всички те  работят отлично: НР и Canon са стари модели, добре поддържани от Ghostscript; Optrа е по - съвременен цветен мастиленоструен принтер с пълна поддръжка на Postscript и PCL 5 (!).

Притежавам също така и Hawking Technology 10/100 Ethernet печатен сървър (модел 7117, в действителност произведен от Zero One Technologies в Тайван); той ми позволява да сложа принтера на всяко място, до което наблизо има електрически контакт и мрежов накрайник, вместо да го слагам до компютъра. Предтавлява една кутийка, на която в единия край се свързва кабела от паралелния порт на принтера, а на другия си край има Ethernet жак. Единствения му недостатък е, че не позволява двупосочна комуникация, и аз не мога да уредя нещата така, че да получавам електронна поща, когато мастилото свърши.

6 Софтуер за буферизация на печата

До скоро изборът на потребителите на Linux беше прост - всички използваха все същия стар lpd , пренесен почти дословно от първичния код на BSD Net-2. Дори и в наши дни, мнозинството от доставчиците на софтуер продължават да го включват в дистрибуциите си. Но нещата вече почват да се променят. Системи от типа SVR-4, включително Solaris на Sun, се доставят със съвсем различен софтуер за управление на печата, базиран основно на lpsched.

В наши дни има няколко добри системи, между които може да се избира. Описъл съм ги всички по - долу в документа; PDQ е най - простата съвременна система с графичен интерфейс; тя е подходяща както за редови домашни потребители, така и за хора, работещи с големи мрежи (в съчетание с LPD). За бизнес среди, където обикновено има мрежови Postscript принтери, програмата за крайни потребители GPR в съчетание с LPRng е добра алтернатива; тя борави директно с PPD настройките, и има малко по - малко хубав интерфейс. В други ситуации е добре да се избере CUPS; в него също има отлична поддръжка за Postscript принтери, а освен това предлага и поддръжка за IPP, има интерфейс за браузър, и още доста други особености.

6.1 LPD

LPD, оригиналният демон за линеен печат на BSD Unix (LPD = Line Printer Daemon), е стандарт от много години за Unix. Може да откриете негова версия за всяка разновидност на Unix; той има доста скромен набор от възможности по исторически причини. Въпреки своята донякъде уникална история, в наши дни той все още може да бъде полезен в ролята на основна система за буферизиране на печата. За да бъде реално използваем със съвременните принтери, той се нуждае от още доста добавки, като съпътстващи филтриращи скриптове и програми за крайните потребители. Но такива има, и всичко това работи.

LPD е също така името, дадено в RFC 1179 на протокола за мрежов печат. На този мрежов протокол може да "говори" не само самият LPD демон, но и всеки мрежов сървър за печат, мрежов принтер, и всяка друга съществуваща система за буферизиране на печата; LPD е най - малкото общо кратно при стандартизирания мрежов печат.

LPRng (вж. част 6.3) е много по - добра реализация на основния LPD дизайн в сравнение с обикновения; ако трябва да използвате LPD, използвайте вместо него LPRng. Налага се да използвате много по - малко тайнствени магии, за да го накарате да върши това, което искате, а и каквато и магия да има в него, тя е добре документирана.

По света има множество първични програмни кодове за LPD. BSD Unix навярно е официалният собственик, но всеки друг добавя каквото си поиска, и го слага където си поиска; нещата са объркани до такава степен, че е трудно да се каже със сигурност точно кой вариант на LPD притежавате. От наличните такива, този предлаган от VA Linux има някои малки изменения, с които потребителският интерфейс става доста по - гъвкав. В LPD вариантът, намиращ се на SourceForge, можете да подавате различни настройки от командния ред посредством -о атрибута; тези настройки след това се подават към филтрите. Това наподобява на допълненията, предлагани от някои от традиционните Unix доставчици, и е подобно също на (макар и несъвместомо с) -z настройката на LPRng.

6.1.1 Потребителски интерфейси за LPD

Ако сте се спрели на LPD, най - добрия начин да го използвате е посредтвом приложения за крайни потребители. Можете да избирате между няколко такива; GRP (вж. част 3.3) и XPDQ (вж. част 6.2) са навярно най - добрите. Има и други; разкажете ми за тях ако ги познавате.

6.2 PDQ

PDQ е система за управление на печата без централен демон, която има вграден, разумен синтаксис за настройки на драйвери. Тя предоставя възможност да се декларират настройки за печат, и предлага на потребителите приложения за команден ред или с графичен интерфейс, с които да се извършат тези настройки; пред потребителя излиза една красива диалогова кутия, в която могат да се изберат желаната разделителна способност, вида на хартията, и т.н. (вж. Фигура 8)

Стартирането на всичките филтри на системата ви дава големи предимства като потребител: възможните проблеми със сигурността от Postscript вече почти липсват, могат да се печатат множество свързани LATEX файлове, и други.

Аз използвам тази система понастоящем; написал съм си файлове със настройки за моите принтери; много такива файлове идват наготово с дистрибуцията, така че има достатъчно примери как и вие да си направите своите. Създал съм също така няколко помощни инструмента, с които се автоматизира създаването на настройки за драйверите, за да помогна на всички вас.

PDQ не без недостатъци: най забележимия е, че обработва цялата задача за печат, преди да я изпрати на принтера. Това означава, че за големи задачи PDQ може да бъде просто непрактично; стотици мегабайти ще се копират напред - назад по твърдия ви диск. Още по -лошо, при бавни драйвери, като тези на качествените мастиленоструйни принтери, задачата няма да почне да се отпечатва преди Ghostscript и драйвера да завършат обработката и. Това може да отнеме много минути след подаването и за печат.

Ако имате много потребители, много принтери, или каквaто и да е сложнa сistema, ви препоръчвам да използвате PDQ като лицева част на основано на LPD - протокол мрежово отпечатване (можете да отпечатвате чрез lpd - протокола на локалната машина). В много ситуации бих ви препоръчал да използвате като основа на разпечатващата система не стария lpd на BSD, а LPRng.

6.3 LPRng

Някои GNU/Linux доставчици (включително Caldera) предоставят LPRng, една доста по - съвременна реализация на LPD системата за буфериране на печата. LPRng е много по - лесна за управление при големи инсталации (разбирай: наличие на повече от един принтер, каквито и да е серийни принтери, или някакви странни не-lpd мрежови принтери), и основите на управлението и са по - малко страховити от тези на стандартната lpd . Тя дори може да претендира че е сигурна - няма SUID изпълними файлове, и поддържа система за потвърждение на достъпа чрез PGP или Kerberos.

LPRng също така включва някои примерни начини за настройка на най - срещаните мрежови принтери - основно моделите LaserJet на HP, в които има и приспособления за водене на отчетност. Ако ви е необходима повече информация за LPRng, проверете на домашната страница на системата в Интернет. LPRng използва малко или повече същия базов модел за филтриране, както и BSP lpd, така че поддръжка за LPD, описана на моята страница, важи също и за LPRng. По този начин може ефективно да използвате свободни драйвери за много принтери

LPRng се разпространява или под GPL, или под Artistic license.

6.4 PPR

PPR e Postscript-центрична система за буфериране на печата, със способност да изследва Postscript материалите в сурово състояние, благодарение на която PPD има някои много хубави черти. Тя предоставя добри възможности за отчетност, добра поддръжка за Appletalk, SMB, и LPD клиенти, и много по - добра система за управление на грешките, отколкото lpd. PPR, както и всички описани тук системи, може да извиква Ghostscript в случай на работа с неподдържащи Postscript принтери.

Научих съвсем наскоро за PPR; не знам някой да е изпробвал тази система. Тя е създадена, и се използва в Trinity College. Лицензът и е в стил BSD - свободна за всички, като се изисква посочване на създателите.

Изхождайки от написаното в документацията и, тя е донякъде експериментална. Неправилни Postscript задачи не се отпечатват; вместо това те се връщат, и за потребителя остава задачата да коригира Postscript. Това прави използването на системата не особено подходящо в някои ситуации, макар че мнозинството от потребителите генерират Postscript с някой от малкото, добре известни генератори на Postscript, така че в крайна сметка това не е от голяма важност.

6.5 CUPS

Едно интересно ново лице на сцената е "CUPS", реализация на Internet Printing Protocol, базиран на HTTP и дефиниран в RFC протокол, целящ да замени достопочтения (и престарял) LPD протокол. Реализацията на CUPS се осъществява от Michael Sweet от Easy Software Products; CUPS се разпространява с лиценза GPL.

Аз най - накрая успях да накарам системата CUPS да свърши някои работи, и тя ги свърши както беше рекламирана. Тя притежава някои много хубави черти, в това число чувствително управление на настройките; HTTP (web), графичен, и за командния ред интерфейси; и MIME - базирана филтрираща система със силна поддръжка за Postscript. Тъй като обаче системата CUPS е все още е доста нова, тя има множество недостатъци, и ми е трудно засега (версия 1.1) да я препоръчам за големи работни среди, или за такива с висока степен на сигурност. Все пак, тя е едно изтънчено решение за малки работни среди, или за големи среди с доверени потребители.

Също както и другите системи, CUPS може да се използва с мнозинството от съществуващите драйвери. За нещастие, малко е трудно да накарате по - необичайните драйвери да работят (или поне ако искате да ползвате всичките им възможности); най - добре е да намерите готови PPD файл и филтриращ скрипт, за да заработи драйвера ви. Има поне четири типа драйвери, които можете да използвате с CUPS:

Foomatic
Намиращата се на страницата ми в Интернет система CUPS-О-Matic генерира подходящи PPD файлове, за употреба с всеки драйвер за принтер, описан изцяло в базта данни на LinuxPrinting.org. PPD файлът се изпозлва заедно с опорен скрипт, наречен cupsomatic. CUPS-O-Matic използва свободни драйвери. В момента в тази система има поддръжка за доста голям брой принтери; XPP и QtCUPS (графични приложения за крайните потребители на CUPS) добавиха специална поддръжка за множество начини за регулировки, полезни за свободните драйвери на Foomatic, но неподдържани от самата система CUPS. Foomatic дава основата за поддръжка на не - Postscript принтери в много GNU/Linux дистрибуции.
CUPS драйвери и KUPS
Проектът CUPS Drivers събира PPD файлове, използваеми или с Postscript принтери, или с опорната филтрираща програма ps2gs2raw. Тези PPD файлове използват свободни драйвери. KUPS е съпътстваща програма за настройка. Проектът за драйверите е заседнал, откакто започна да работи Foomatic, обаче KUPS е чудесна програма за настройка, и се разпространява стандартно с много дистрибуции.
Postscript PPD файлове
CUPS може директно да използва доставяни от производители PPD файлове за Postscript принтери. Често такива файлове идват с заедно с Windows драйверите за принтера, или могат да бъдат намерени на Интернет страницата на производителя. Adobe също разпространява PPD файлове за много Postscript принтери.
ESP Print Pro
Easy Software Products, Inc. продва CUPS в пакет заедно с набор от несвободни драйвери. Макар това да не е свободен софтуер, с него могат да се управляват множество разпространени принтери. Пакетът не е евтин, в сравнение с цената на един поддържан принтер, но със сигурност има своето място. Тези драйвери не са прочути с това колко са съвършени, но със сигурност поддържат повече машини, отколкото свободния софтуер, а и дори посредственото качество е за предпочитане пред нищо. Пакетът включва инструменти за крайните потребители с графичен интерфейс, за които се смята че не са така добри, както XPP и QtCUPS.
Доставяната от трета страна програма XPP (вж. Фигура 5) предлага много хубав графичен интерфейс към потребитеската функционалност на CUPS, включително чудесен интерфейс към настройките за по времето на отпечатването (вж. Фигура 6). За информация относно използването на ХРР погледнете в част 3.3.3.

7 Как работи всичко това

За да работи добре системата за печат, трябва да знаете как работи вашата система за буфериране на печата. По прицип всички системи работят по един и същи начин, макар и редът в който се изпълняват операциите да не е един и същ навсякъде, и някои системи да изпускат стъпка или две:

 

  1. Потребителят изпраща задачата си за печат заедно с избраните от него настройки. Информацията в задачата е обикновено, но не винаги, в Postscript формат.
  2. Системата за буфериране копира задачата и желаните настройки през мрежата в посока към принтера.
  3. Системата за буфериране изчаква принтера да даде знак за готовност.
  4. Системата за буфериране прилага желаните от потребителя настройки върху задачата, и превежда информацията в нея на езика говрен от принтера, който обикновено не е Postscript. Тази стъпка се нарича филтриране; болшинството от труда при настройването системата за печат отива за подбирането на подходящо филтриране.
  5. Задачата е изпълнена. На този етап системата за буфериране обикновено прави разни неща за почистване. Ако някъде е станало нещо грешно, системата обикновено уведомява по някакъв начин потребителя за това (чрез писмо например).

7.1 PDQ

Pdq идва от "Print, Don't Queue" (буквално:"печатай, не буферизирай"), и начина по който работи напълно съответства на името му. Когато използвате PDQ за да отпечатате нещо, се случва следната последователност от събития:

Във всеки момент от този процес, и след това, състоянието на всяка задача за печат може да се види и провери използвайки xpdq. Неизпълнените задачи са оцветени в червено и могат да бъдат изпратени повторно за печат.

7.2 LPD

Lpd идва от Line Priner Daemon (демон за печат на линейни принтери), и когато се говори за него в различни случаи, се имат предвид и демона, и сбора от програми за управление системата за печат. Те са:

lpd
Самият демон. Един демон винаги работи, управлявайки всичко за печата на машината; той запуска по един демон за всеки принтер, докато принтера печата.
lpr
Потребителската командата за подаване за печат. Lpr осъществява връзка с lpd и добавя нова задача за печат.
lpq
Извежда задачите в опашката за печат.
lpc
Команда за управление в Lpd системата. С помощта на lpc можете да спрете, стартирате, пренаредите, и т.н., опашката от задачи за отпечатване.
lprm
lprm премахва вече подадени задачи за печат.
И как работи всичко това съвместно? Ето как:

  1. По време на първоначалното зареждане се стартира lpd. Той стои в очакване на връзка и управлява опашките за печат.
  2. Потребителят изпраща задача за печат с командата lpr, или с някоя от програмите - посредници на lpr, като GPR, PDQ, и т.н. Lpr се обръща към lpd през мрежата, и му изпраща и потребителския файл с данни (съдържащ информацията за печатане), и контролния файл (съдържащ потребителските настройки).
  3. Когато се появи свободен принтер, главния lpd поражда вторичен lpd, който се заема със задачата за печат.
  4. Вторичния lpd изпълнява съответния/те филтър/и (съобразно вписаното за if във файла /etc/printcap) за тази задача и изпраща обработената информация към принтера.
lp системата първоначално е проектирана във времената, когато мнозинството от принтерите бяха линейни принтери - да, така е, хората отпечатваха най - вече обикновени текстовe в ascii код. С поставянето на всички необходими магически неща в if филтъра, с lpd могат да се удовлетворят съвременните нужди за печат (е, повече или по - малко; много съвременни системи вършат по - добра работа).

Има много програми, подпомагащи написванетона LPD филтър. Сред тях са:

gs
Ghostscript представлява интерпретатор на Postscript. Той приема Postscript на входа си, и извежда на изхода си информацията на ралични езици за печат, или в някакъв графичен формат. Ghostscript е разгледан в 10 част.
ppdfilt
ppdfilt е самостоятелна версия на един от компонентите на CUPS. Тя филтрира Postscript, като изпълнява някои основни трансформации върху него (многократни копия и т.н.) и и добавя нещата, установени за настройване от потребителя, от Postscript Printer Definition (PPD) файла; последния обикновено идва с Postscript принтерите.
ppdflit намира най - добро приложение съвместно с възприемаща настройки LPD система (като LPD на VA Linux, или LPRng) и и филтриращ скрипт, който да преглежда продадените от потребителя и да ги предава като еквивалентни ppdfilt команди. VA Linux и HP предлагат усъвършенстван вариант на rhs-printfilters пакета, който прави точно това; резултата е много добър ако имате Postscript принтер. Вижте част 8.2.2 за информация за тази система.
ps2ps
ps2ps е допълнителна програмка, идваща като част от Ghostscript. Тя филтрира Postscript задачите отново към Postscrit, но на по - ниско ниво. Може да ви влезе в работа, ако имате по - стар модел Postscript принтер; преобладаващата част от съвременния софтуер генерира съвременен Postscript.
mpage
mpage е програма, която приема на входа си текст или Postscript, и на изхода и всяка отпечатвана страница съдържа по няколко от оригиналните страници. В действителност има множество програми, които също могат да правят това, като enscript, nenscript и a2ps.
a2ps
a2ps, или всичко-към-Postscript (any-to-ps), е програма, която приема на входа си файлове с различни формати, и ги преобразува в Postscript за печатане.

8 Как да се направят настройките

В стандартни ситуации бихте могли изцяло да прескочите тази част от документа, и да отидетена частта по - долу, в която са описани решенията на Системните доставчици, или още по - добре - направо на документацията на доставчиците. Мнозинството от GNU/Linux дистрибуциите се доставят с един или повече "глупакоустойчиви" инструменти (приложения), с които може да се направи всичко описано тук за често срещаните принтери.

В случай, че въпросните инструменти на доставчиците дадат неудовлетворителни резултати, или имате желание непосредствено да оказвате влияние на настройките за печат, когато отпечатвате, би трябвало да изполвате някоя друга система. PDQ е един добър избор; той е функционален и лесен за настройка. Друга добра система е APS Filter; тя безпроблемно конфигурира опашките и филтрите на LPD при мнозинството от Unix системите.

Можете също така да използвате интерфейсите за системи за печат от Интернет страницата LinuxPrinting.org, като свръзка между множеството свободни драйвери и няколкото състеми за буфериране печата. Когато проекта бъде завършен, тези интерфейси ще предлагат най - добрата функционалност: те поддържат всички видове свободни драйвери, има възможност потребителят да си избира настройки, и се поддържат всички системи за буферизация на печата.

8.1 Конфигуриране на PDQ

Конфигурирането на PDQ може да се направи както от root, така и от всеки редови потребител на системата. Първият извършва промени във файла /etc/printrc ; тези промени влияят на всички. Вторите могат само да променят личния си файл .printrc Всичко описано по - долу, важи и за двата вида конфигуриране.

Ако PDQ не е част от вашата дистрибуция, можете да вземете първичния му код от домашната страница в Интернет на PDQ , и да си го компилирате сами. Компилирането протича лесно, в случай че предварително сте проверили дали в системата ви са инсталирани необходимите за случая разнообразни библиотеки за разработка на GTK, библиотеките за разработка на С, компилатора gcc, make, и навярно още няколко неща за разработчици.

8.1.1 Драйвери и интерфейси

PDQ системата позволява на потребителя си да избере на кой принтер да се извърши разпечатването. В PDQ принтерът се дефинира като съвкупност от "драйвер" и "интерфейс". И драйверът, и интерфейса, на практика представляват отделни участъци от текст във конфигурационния файл на PDQ.

PDQ интерфейсът казва всичко, относно това как да бъде изпратена информацията до принтера. Най - изпозлваните интерфейси, които могат да се открият и в предварително подготвения към дистрибуцията printrc файл са:

local-port
Интерфейсът local-port работи с паралелния или серийния порт на тази машина, на която работи PDQ. Използвайки този интерфейс, PDQ може да отпечатва директно към вашия паралелен порт. Имайте пред вид, че ако работите в многопотребителска система, това може да предизвика объркване, а ако работите в мрежова среда, интерфейсът local-port ще се отнася само за една система. В такива случаи, можете да дефинирате една обикновена опашка без филтриране за печат посредством lpd към съответния порт, и да отпечатвате по един и същи начин към демона lpd на системата, от всички системи и потребители в мрежата, без никакви проблеми. Този интерфейс приема като аргумент име на устройство; обикновено се задава /dev/lp0 .
bsd-lp
Интерфейсът bsd-lp общува през мрежата с lpd демон или с "разбиращ"-LPD мрежов принтер. PDQ поддържа предоставяне на задачи, прекъсване и опашки към LPD интерфейси. Аргументите, които приема този интерфейс, са име на машина и име на опашка (за печат).
appletalk
Интерфейсът appletalk ви позволява да отпечатвате на принтери, намиращи се в Appletalk мрежа; ако имате принтер включен във Mac, трябва да използвате този интерфейс. За да работи интерфейса, трябва да имате инсталиран пакета Nettalk.
PDQ драйверът описва всичко, относно това как да се преобразува подадената за печат информация във формат, разбираем от съответния принтер. За Postscript принтери, това включва преобразуване от прост текст (ascii) във Postscript; за не-Postscript принтери, това включва преобразуване от Postscript към езика за печат на принтера посредством Ghostscript.

Ако някой от включените в PDQ драйвери не е подходящ за вашия принтер, прочетете по - долу как можете сами да си го напишете.

8.1.2 Дефиниране на принтер

За да дефинирате принтер в PDQ:

Това наистина е всичко, което трябва да се направи; болшинството от работата се състои от намиране, или създаване подходяща спецификация за драйвера, в случай, че не можете да намерите предварително направена.

8.1.3 Създаване на PDQ драйвер

Сега ще ви преведа стъпка по стъпка през процеса на създаване на драйвер за PDQ. Преди да направите това обаче, потърсете из множеството възможни места дали вече няма готов:

Има множество места, в които може да се намери информацията, необходима за написване на PDQ драйвер:

Ако се наложи да си създавате нов PDQ драйвер, или да подобрявате някой от идващите с PDQ, или от програмата - генератор за PDQ драйвери спомената по - горе, моля ви - споделете с останалия свят това, което сте направили! Изпратете ми го (на адрес gtaylor+pht@picante.com), и аз ще направя така, че да бъде намиран лесно в бъдеще от потребители, имащи принтер като вашия.

Сега, нека да преминем през етапите на създаване на драйвер за принтер, който в базата данни е посочен като работещ, но не можете да намерите драйвер за него. Ще използвам за пример принтера Canon BJC-210.

Първо, поглеждаме какво е вписването в базата данни за този принтер. Забележете, че за него има отлична поддръжка - wписан е като "отличенн", и следователно може да очакваме да получим сравними (или по - добри) резултати от Windows потребителите. Важната информация е на две места във вписването:

Notes
Написаните на човешки език бележки често съдържат полезна информация. За някои принтери има и връзка More Info, която обикновено води към Интернет страницата на потребител, имащ такъв принтер, или домашната такава на драйвера.
Driver list
За мнозинството от принтерите има информация за командите в драйвера. Това е най - важната част. Можете да проследите връзки към страниците за определени драйвери, където може да намерите повече информация как да ползвате драйвера, а също и връзки към домашната му Интернет страница, ако има такава.
В спецификацията на драйвера за PDQ има две логически функции: взаимодействие с потребителя, и обработка на задачата за печат. Те са представени на три места във файла:

Декларации на настройките
Те определят какви настройки може да променя потребителя, и декларират PDQ променливи заследващите части на драйвера
Езикови филтри
Те обработват задачата за печат от формата, в който е пристигнала (обикновено Postscript или ASCII) в език, който принтерът разбира (например PCL). Тук има променливи настройки, а също има и за изходящия филтър.
Изходящ филтър
Този последен филтър пакетира накуп информацията за принтера, независимо от входния тип; често настройките за принтера се задават тук.
Нека поработим над всеки от тях за Canon BJC-210.

8.1.3.1 Настройки

В списъка от драйвери за този принтер има драйвери за два модела - bjc200 и bjc600, като и двата са от Ghostscript тип. Според бележките за монохромен печат се предлага ползването на bjc200.

ВJC-210 поддържа една хубава настройка: може да се избира между цветен и чено-бял печат. Нека да декларираме това като настройка по избор, наречена "MODE":

 

option {

  var = "MODE"

  desc = "Print Mode"

  # default_choice "Color"    # премахвайки коментара Color ще стане основен цвят

  choice "BW" {

    # "value" присвоява на променливата MODE каквото

    # искате. Тук ще сложим текст, който се изменя

    # при сбора от Ghostscript настройки за двата режима.

    value = "bj200"

    help = "Fast black printing with the black cartridge."

    desc = "Black-only"

  }

  choice "Color" {

    value = "bjc600"

    help = "Full-color printing."

    desc = "Color"

  }

}

 

Имайки горните choice декларации, потребителят ще види избор мецду Color или BW в диалога настройки за драйвера, когато отпечатва с xpdq. При инструмента за команден ред pdq може да се посочи -oBW или -oColor. Кое от тях да бъде по дефиниция се определя от xpdq, или се декларира с ключовата дума default_choice.

8.1.3.2 Езиково филтриране

PDQ определя типа на входната си информация с командата file(1). За всеки тип, върнат за файла който обработвате, и който желаете да бъде обработван, трябва да осигурите подраздел language_driver. Подразделът най - често съдържа скрипт за обработване към езика за печат, написан на който поискате (!) скриптов език (по дефиниция се използва обичайния Bourne shell).

В настоящия случай, ние искаме да отпечатваме Postscript и ASCII на нашия BJC-210. За това са необходими два езикови драйвера: един да стартира Ghostscript за Postscript задачи, и друг да добавя carriage return към ASCII задачите:

 

# Използва се първият language_driver във настоящия файл,

# съответстващ на резултата от изпълнението на file(1)

language_driver ps {

  # file(1) returns "PostScript document text conforming at..."

  filetype_regx = "postscript"

  convert_exec = {

    gs -sDEVICE=$MODE -r360x360 \     # gs настройка от базата данни

       -q -dNOPAUSE -dBATCH -dSAFER \ # "обикновените" Ghostscript настройки

       -sOutputFile=$OUTPUT $INPUT    # обработи INPUT до файл OUTPUT

 

    # Тези последни две линии често ще бъдат еднакви за поддържани

    # от gs принтери. Линията gs... , обаче, ще бъде различна за

    # всеки принтер.     

  }

}

 

# Декларираме text след postscript, понеже командата "file"

# често ще описва postscript файловете като текст (което си е вярно).

language_driver text {

  # Без filetype_regx; търсим съответствие с името на драйвера: "text"

  convert_exec = {#!/usr/bin/perl

     # програма на Perl, просто защото може!

     my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'});

     open INPUT, "$in";

     open OUTPUT, ">$out";

     while(&lt;INPUT>) {

        chomp;

        print OUTPUT, "$_\r\n";

     }

  }

}

 

Това е! Докато за други принтери може да се налага използването на изходен филтър (описано е по - долу), горните подраздели вършат това за BJC-210. Просто трябва да ги съберем на едно място:

 

driver canon-bjc210-0.1 {

option {

  var = "MODE"

  desc = "Print Mode"

  # default_choice "Color"    # премахвайки коментара Color ще стане основен цвят

  choice "BW" {

    # "value" присвоява на променливата MODE каквото

    # искате. Тук ще сложим текст, който се изменя

    # при сбора от Ghostscript настройки за двата режима.

    value = "bj200"

    help = "Fast black printing with the black cartridge."

    desc = "Black-only"

  }

  choice "Color" {

    value = "bjc600"

    help = "Full-color printing."

    desc = "Color"

  }

}

# Използва се първият language_driver в настоящия файл,

# съответстващ на резултата от изпълнението на file(1)

language_driver ps {

  # file(1) returns "PostScript document text conforming at..."

  filetype_regx = "postscript"

  convert_exec = {

    gs -sDEVICE=$MODE -r360x360 \     # gs настройка от базата данни

       -q -dNOPAUSE -dBATCH -dSAFER \ # "обикновените" Ghostscript настройки

       -sOutputFile=$OUTPUT $INPUT    # обработи INPUT до файл OUTPUT

 

    # Тези поскедни две линии често ще бъдат еднакви за поддържани

    # от gs принтери. Линията gs... , обаче, ще бъде различна за

    # всеки принтер.     

  }

}

 

# Декларираме text след postscript, понеже командата "file"

# често ще описва postscript файловете като текст (то си е така).

language_driver text {

  # Без filetype_regx; има съответствие с името на драйвера: "text"

  convert_exec = {#!/usr/bin/perl

     # програма на Perl, просто защото може!

     my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'});

     open INPUT, "$in";

     open OUTPUT, ">$out";

     while(&lt;INPUT>) {

        chomp;

        print OUTPUT, "$_\r\n";

     }

  }

}

 

}

 

8.1.3.3 Изходно филтриране

В случай, че искате да добавяте нещо в началото или края на всяка задача за печат, или да правите някъкъв вид преобразуване върху цялата информация от всеки тип, трябва да го направите в подраздела filter_exec. Нашият малък Canon не се нуждае от такъв подраздел, но тук, само за пример, ще покажем как се реализира дуплексиране и избор на разделителната способност при LaserJet, или подобен принтер, който говори PJL!

 

driver generic-ljet4-with-duplex-0.1 {

  # Първо, два избираеми подраздела за ибираеми от потребителя неща:

  option {

    var = "DUPLEX_MODE"

    desc = "Duplex Mode"

    default_choice = "SIMPLEX"

    choice "SIMPLEX" {

      value = "OFF"

      desc = "One-sided prints"

    }

    choice "DUPLEX" {

      value = "ON"

      desc = "Two-sided prints"

    }

  }

 

  option {

    var = "GS_RES"

    desc = "Resolution"

    default_choice = "DPI600"

    choice "DPI300" {

      value = "-r300x300"

      desc = "300 dpi"

    }

    choice "DPI600" {

      value = "-r600x600"

      desc = "600 dpi"

    }

  }

 

  # Сега поемаме Postscript от входа с драйвера ljet4 на Ghostscript

  language_driver ps {

    filetype_regx = "postscript"

    convert_exec = {

       gs -sDEVICE=ljet4 $GS_RES \

          -q -dNOPAUSE -dBATCH -dSAFER \

          -sOutputFile=$OUTPUT $INPUT

    }

  }

 

  # Накрая, обгръщаме задачата с PJL команди:

  filter_exec {

    # requires echo with escape code ability...

    echo -ne '\33%-12345X' > $OUTPUT

 

    echo "@PJL SET DUPLEX=$DUPLEX_MODE"    >> $OUTPUT

    # Може да прибавите допълнителни @PJL commands, като тази от горната линия.

    # Не забравяйте винаги да добавяте (>>) към изходния файл!

 

    cat $INPUT >> $OUTPUT

    echo -ne '\33%-12345X' >> $OUTPUT

  }

}

 

8.2 Конфигуриране на LPD

Мнозинството от GNU/Linux системите се разпространяват с LPD. Тук ще бъде описана съвсем основна настройка на LPD; по - нататък в документа има подробности за създаването на сложни филтри и за мрежовите настройки.

8.2.1 Основно конфигуриране на LPD

При минимално направена конфигурация на lpd се получава система, която може да приема и подрежда файловете за печат, и да ги печата. Така настроената система не се интересува дали принтера разбира това, което му се подава, и навярно няма да получите много добри разпечатки с нея. Но все от някъде трябва да се започне.

За да добавите опашка за печат към lpd, трябва да направите вписване в /etc/printcap, и да създадете нова буферна поддиректория в /var/spool/lpd.

Едно вписване в /etc/printcap изглежда по следния начин:

 

# LOCAL djet500

lp|dj|deskjet:\

        :sd=/var/spool/lpd/dj:\

        :mx#0:\

        :lp=/dev/lp0:\

        :sh:

 

Така се дефинира буфер, наречен lp, dj или deskjet, намиращ се в директорията /var/spool/lpd/dj, нямащ ограничение за големината на отделните задачи, от който се отпечатва към устройството /dev/lp0, и който няма заглавна страница (с името на човека, който отпечатва, и т.н.), която да добавя в началото на всяка задача за печат.

Сега отидете да прочетете man страницата на printcap.

Горното вписване изглежда доста просто, но има уловка - в случай, че не пращам за печат на DeskJet 500 файлове, които той рабира, принтера ми ще отпечата странни неща. Например, ако изпратя обикновен Unix текстов файл към този принтер, той ще възприеме символите за нов ред като символи, и ще отпечата нещо такова:

 

This is line one.

                 This is line two.

                                  This is line three.

 

При отпечатването на Postscript файл към този буфер, ще се получи една красива разпечатка на Postscript командите, при това със "стъпаловидния ефект", но не и нещо полезно.

Става ясно, че е необходимо още нещо, а именно филтриране. По - наблюдателните от вас, които са прочели man страницата на printcap, навярно са забелязали атрибутите if и of. Е, if, или входящ филтър (Input Filter), е точно това, от което се нуждаем.

Ако напишем малък скрипт, наречена filter, който да коригира отпечатването на нов ред, "стъпаловидния ефект" ще бъде отстранен. Така че ще трябва да добавим една if линия към горното вписване:

 

lp|dj|deskjet:\

        :sd=/var/spool/lpd/dj:\

        :mx#0:\

        :lp=/dev/lp0:\

        :if=/var/spool/lpd/dj/filter:\

        :sh:

 

Простият скрипт може да изглежда така:

 

#!perl

# Горната линия трябва да съдържа целия път до perl

# Този скрипт трябва да бъде изпълним: chmod 755 filter

while(<STDIN>){chomp $_; print "$_\r\n";};

# Може да добавите накрая ред за изваждане последната страница: print "\f";

 

Ако направим описаното, ще имамаме вече буфер за печат, към който ще можем да отпечатваме обикновени Unix текстови файлове, и да получаваме приемливи резултати. (Да, има четири милиона по - добри начина да се напише този филтър, но малко от тях са така илюстративни. Можете да се опитате да напишете нещо по - ефективно).

Единственият останал ни проблем е това, че отпечатването на прост текст вече не е актуално - със сигурност би било по - добре да може да отпечатваме Postscript, и други форматирани или графични типове информация. Е, да, това не е трудно да се направи. Трябва просто да се направят добавки към горния прост филтър.

Такъв филтър вече ще се нарича magic-филтър. Той играе същата роля, както и езиковите филтри при PDQ. Не се опитвайте сами да напишете такъв, освен ако не се налага да отпечатвате нещо по - странно, вече има написани много добри такива, и към повечето от тях има лесни за ползване диалогови инструменти за настройка. Просто трябва да си изберете подходящ готов филтър:

LPD-O-Matic
Lpdomatic е филтър, проектиран да използва информацията от базата данни на LinuxPrinting.org. Той поддържа всички свободни драйвери за принтери, включително Ghostscript драйверите, Uniprint драйверите, и тези от останалите няколко съществуващи филтриращи програми. Lpdomatic работи със всички разновидности на LPD, в това число стандартния  BSD вариант, и новия на VA Linux LPD, позволявайки и правенето на настройки. (Потребителите на LPRng трябва да използват  magicfilter или apsfilter пакетите; в процес на разработка е специална, основаваща се на базата дании версия на magickfilter).
APS Filter
Филтърът apsfilter е проектиран за използване на много видове Unix. Той поддържа всички Ghostscript драйвери. И също, работи с разновидностите на LPD, включително BSD и LPRng. За момента, това е навярно най - добрата ситема за не-Postscript принтери, предоставяна от трета страна.
RHS-Printfilters
Филтърната система RHS-Printfilters е създадена от RedHat. Тя се предлага, доколкото си спомням, от версия 4 RedHatLinux насам, като боравенето с нея се осъществява посредством удобния инструмент с графичен интерфейс printtool. Други дистрибуции, включително Debian, понастоящем също предлагат комбинацията rhs-printfilters/printtool като система за печат. Вероятно поради това тя е най - широко разпространената в момента.
rhs филтриращата система използва като основа списък с бази от данни в ascii формат, идващ заедно с нея. Този списък поддържа много Ghostscript и Uniprint драйвер, но не и драйвери от филтърен тип. Във филтрите, които се получават, липсват и част от настройките, от които може да избира потребителя.
printtool поставя конфигурационен файл, наречен postscript.cfg, в буферната директория. Вътре в този файл, който е в стил Bourne shell, всяка настройка е променлива. При необичайни ситуации, можете да правите корекции направо в този файл, които иначе не са достъпни от printtool; най - често това може да се наложи при указването на някой необичаен Ghostscript драйвер, или PPD файл за rhs-printfilters системите на VA Linux.
VA Linux са направили някои подобрения в rhs-printfilters, в следствие договор сключен с HP. Ако имате подходящата версия, вече можете да си зибирате настройки за Postscript принтери от PPD файлове на Adobe. Тази система е разгледана в част 8.2.2.
Има една уловка при такива филтри: старите версии на lpd не изпълняват if филтъра за други принтери освен на локалната машина, докато мнозинството от новите могат да правят това (макар и често без аргументи). Версията на LPD разпространявана с мнозинството от съвременните GNU/Linux и FreeBSD дистрибуции прави това; мнозинството комерсиални Unix системи все още идват с версия на LPD, която не го прави. Прочетете частта за мрежов печат по - нататък в документа за повече информация по въпроса. Ако имате принтери, свързани само към отделни машини, този проблем не ви засяга.

8.2.2 LPD за Postscript принтери

Докато много от версиите на LPD не се справят достатъчно добре с Postscript (без значение от настройките), комбинацията от наскоро осъвременените от VA Linux версии на LPD и на филтърния софтуер на RedHat, дава доста по - добри резултати на Postscript принтери. Понастоящем тази система работи само с RedHat 6.2, макар че не е трудно пакета да се приспособи и за други дистрибуции.

Как работи това

Новата система на VA използва PPD файлове (PPD = Postscript Priner Definition). PPD файловете се доставят от производителите на принтери, и в тях са декларирани настройките на принтера, както и Postscript кода, необходим за да бъдат те активирани. При VA системите, нормалната LPD схема работи по малко по - различен начин:

Получаване и инсталиране

Можете да получите RPM пакети, или компресиран в .tar.gz първичен код, от страницата на проекта на SourceForge. За подробности по инсталирането прочетете микро-HOWTO документа по този въпрос на проекта. Ето и най - важното: трябва да деинсталирате RedHat версиите на lpd и rhs-printfilters изцяло, и да инсталирате VA весиите им, плюс ppdfilt, grp, и още няколко полезни инструмента.

Ще се наложи да си набавите и PPD файлове за вашия Postscript принтер. PPD файлове обикновено се намират много лесно. VA Linux и HP разпространяват PPD файлове за много от моделите LaserJet. Други производители също осигуряват такива файлове за своите принтери, а и Adobe дотавят PPD файлове за много принтери.

Понастоящем цялата тази инсталация е малко трудна. Но бъдещите инструменти за инсталиране ще се изграждат на основата на библиотеката за конфигуриране на принтери libprinterconf, която позволява едновременно автоматично откриване, и rhs-printfilters настройване и на мрежови, и на локални принтери.

Забележете, че GRP може да се използва самостоятелно, без усъвършенствания LPD или дори rhs-printfilters. GRP може да се компилира с всичките знания, необходими му да обработва директно Postscript задачи. Това би могло да бъде една по - лесна - за инсталиране възможност, подходяща за хора, на които на практика никога не им се налага да изплзват lpr директно.

Управление на Postscript настройките

Веднъж след като сте настроили LPD системата с Postscript възможности на VA, вие можете да управлявате настройките на принтера си по два начина:

8.2.2.1 С графичен интерфейс

За да използвате GRP, първо трябва да се уверите, че сте определили правилния PPD файл. След това настройките на принтера ще бъдат достъпни за вас в панела "Advanced". Основните настройки на ppdfilt ще бъдат достъпни от панела "Common".

8.2.2.2 От командния ред

Тази команда lpr поддържа атрибута -о. С него можете да укажете които желаете двойки настройка/стойност от вашия PPD файл. Ето една примерна част от PPD файл:

 

        *OpenUI *PrintQuality/Print Quality: PickOne

        *DefaultPrintQuality: None                                      

        *OrderDependency: 150 AnySetup *PrintQuality     

        *PrintQuality None/Printer Setting: ""

        *PrintQuality Quick/QuickPrint:  "<< /DeviceRenderingInfo ...

        *PrintQuality Normal/Normal: "<< /DeviceRenderingInfo << /...   

        *PrintQuality Pres/Presentation: "<< /DeviceRenderingInfo ...

        *PrintQuality Image/1200 Image Quality: "<< /DeviceRenderi...

        *CloseUI: *PrintQuality

 

За настройката PrintQuality възможните стойности са Quick, Normal, Pres, и Image. Може да подадете например следната команда:

 

%lpr -o PrintQuality:Image file.ps

 

Има множество настройки, които са общи за всички принтери, и които можете да изпозвате допълнително към тези от PPD файла. Сред тях са:

page-ranges
Може да укажете страниците с кои номера да се отпечатат, например, page-ranges:2-3
page-set
Можете да отпечатате четните или нечетните страници, например, page-set:odd
number-up
Можете да отпечатате няколко страници на един лист хартия. Например, number-up:2

8.2.3 Права за достъп на файловете

Пoнеже това е много популярен въпрос, включвам по - долу списък с правата за достъп на интересни файлове от моята система. Има множество по - добри начини, като използването на SIGD двоични файлове и без да се прави всичко SUID root, но това е състоянието, в което получих тази система, и за мен всичко е наред. (Честно казано, ако вашия доставчик въобще не може да ви достави работещ lpd, ви чака тежка работа).

 

-r-sr-sr-x   1 root     lp    /usr/bin/lpr*

-r-sr-sr-x   1 root     lp    /usr/bin/lprm*

-rwxr-r-   1 root     root  /usr/sbin/lpd*

-r-xr-sr-x   1 root     lp    /usr/sbin/lpc*

drwxrwxr-x   4 root     lp    /var/spool/lpd/

drwxr-xr-x   2 root     lp    /var/spool/lpd/lp/

 

Засега LPD трябва да се изпълнява като root, за да може да се свърже с lp порта с нисък номер. Навярно ще стане UID lp.lp или нещо подобно след свързването, но аз мисля че не става. Това е просто още една причина да избегнете употребата на оригиналния LPD от BSD.

PDQ използва различна схема на работа, без централен демон, и има различни програми. Единствените SUID root програми са тези за lpd интерфейса - lpd_cancel, lpd_print, и lpd_status; те са SUID понеже съвременните Unix сървъри за печат изискват заявките за печат да идват от привилегирован порт. В случай, че единствените принтери, за които използвате bsd-lpd интерфейса на PDQ, са свързани към мрежови сървъри за печат (като HP JetDireck или Lexmark MArkNet адаптерите), няма нужда да установявате SUID бита на тези програми.

8.3 Големи ситеми

Големите системи, под което разбирам мрежи с два или повече принтера или сървъра, имат специални изисквания. По - долу има някои съвети. При наистина големи системи, простото боравене с информацията в printcap/filters може да се превърне в сложен проблем; Cisco Enterprise Print System е подходящо решение за такива ситуации, като добра отправна точка, или като завършено решение, в зависимост от нуждите ви. В средни до големи системи ще се чувствате добре с вградените особености на LPRng.

8.4 Водене на отчетност

Обикновения LPD ви предлага много малко възможности да водите отчет за печата. Можете да посочите името на файла за отчетност в атрибута af на printcap, но той просто се предава като аргумент към if филтъра. За вас остава задачата да накарате if филтъра си да прави вписвания във файла за отчетност, и за вас също остава последващата обработка на този файл (традиционният формат е използваем главно за линейни принтери, и труден за обработване с Perl, така че няма причина да го запазвате). Също така, ако използвате моята програма lpdomatic като филтър, ще се наложи да направите промени, тъй като тя зависи от подвания и от конфигурационен файл име на файла за отчет.

Ghostscript разползга с оператора PageCount, с който можете да преброявате отпечатаните страници за всяко задание; просто забождате няколко линии postscript в края на заданието за печат, за да получите запис във файла за отчет; това най - добре може да бъде онагледено с примера unix-lpr.sh, намиращ се в първичния код на Ghostscript.

Вземете си бележка, че използването на unix-lpr за отчетност, води до запис във файл от интерпретатора Ghostscript, и се явява несъвместимо с препоръчваната настройка -dSAFER. По добро решение би било да се пита принтера с PJL команда след всяка задача, или да се напише малкa postscript програмка, която да извежда на стандартния изход броя на страниците; там информацията може да се улови без да има запис във файл.

Системата за буфериране LPRng включва специфична за НР примерна реализация на отчетност; предполагам, че се пита принтера с PJL команда. Тази технология би трябвало да работи с мнозинството PJL, Postscript, или SNMP принтери, а които имате двупосочна комуникация.

Ако имате мрежов принтер поддържащ SNMP, можете да използвате програмата npadmin за запитвания относно броя на отпечатваните страници след всяко разпечатване. Това трябва да става безпроблемно за всички задачи. Вижте в част 11.10.1 за повече информация за npadmin.

9 Решения на доставчици

Тази част от документа по дефиниция е незавършена. Чувствайте се свободни да ми изпращате подробности за вашите любими дистрибуции. Понастоящем не ми е известно да има дистрибуция която да поддържа, или дори да доставя, софтуерът, който аз препоръчвам за единични потребители: PDQ. Няколко дистрибуции вече имат поддръжка за CUPS, системата с най - голяма функционалност за момента; някои дори използват моят основан на база данни конфигурационен инструмент.

Има множество предоставяни от трети страни пакети за улесняване настройките по печата в Unix. Те са разгледани в част 8; за подробности вижте подсекциите там.

9.1 RedHat

RedHat предоставят инструмента с графичен интерфейс printtool, с който може да се добавят местни или мрежови принтери. Той ви позволява да изберете поддържан от Ghostscript тип принтер, и също файл на Unix устройство, към който да извършвате печата; след това определя опашка за отпечатване в /etc/printcap, и използва програма за филтриране от пакета rhs-printfilters; в последната има поддръжка за Postscript и други често срещани входни типове данни. Това решение върши доста добра работа, и в общия случай извършването на настроойките става лесно.

RedHat 6.x се разпространявава с версия на BSD LPD; RedHat 7.0 изглежда използва по дефиниция LPRng.

Мястото, в което RedHat се провалят, са случаите с принтери, неподдържани от стандартния Ghostscript идващ с дистрибуцията (който е с GNU GPL лиценз, за разлика от Aladdin Ghostscript, и съответно поддържа по - малкък брой принтери). Направете проверка във списъка с поддържаните принтери по - горе (или В ИНТЕРНЕТ), в случай че не можетеда отпечатвате както искате с доставения ви от RedHat софтуер. Ако вашият притнер не се поддържа от инструментите на RedHat, може да се наложи да инсталирате предоставяната от Aladdin версия на Ghostscript, а може би още по - добре ще бъде да използвате пакетите lpdomatic или apsfilter, които "знаят" всичко за принтерите, поддържани от последните версии на Ghostscript, а и за други.

В бъдещите версии на RedHat инструмента printtool ще бъде пренаписан да поддържа повече принтери, като има намерения да буде извършена подмяна и на rhs-printfilters (текущия филтър има затруднения с някои принтери, например не-PCL моделите DeskJet на HP и повечето от тези на Lexmark). Също така, могат да бъдат могат да бъдат включени и някои от чертите на разработената от VA Linux система PPD.

9.2 Debian

Дистрибуцията Debian предлага избор между стандартния lpd, LPRng и CUPS; LPRng или CUPS са навярно по - добрият избор. PDQ се предлага в нестабилната версия (понастоящем наречена sid) на дистрибуцията. Debian предоставя също и разнообразни инструменти за конфигуриране на печата; версия 5 или следваща на apsfilter е най - доброто, на което можете а заложите, тъй като в тази версия има поддръжка аа схемата за uniprint драйвери на LPRng и Ghostscript.

9.3 SuSE

Системата за печат на дистрибуцията SuSE Linux се основава на apsfilter, с хякои разширения; при SuSE apsfilter разпознава всички често срещани файлови формати (включително HTML, ако е инсталиран html2ps). Съществуват два начина да се настрои печат при  SuSE системите:

Ръководството за инсталиране на SuSE дава повече подробности, относно описаните две процедури.

Wolf Rogner ми изпрати впечатленията си за затрудненията които е изпитал при настроиването на печата със SuSE. Може да ви се случат някои от следните неща:

9.4 Caldera

Caldera предлага LPRng. Нямам представа какви инструменти за конфигуриране се предлагат.

Наскоро назначих служител на Caldera да поддържа базата данни на Linuxprinting.org; очевидно те смятат за в бъдеще да предлагат основани на CUPS и Foomatic системи за печат.

9.5 Corel

Corel се базира на Debian, така че всичко, казано по - горе за Debian важи и тук. Има добавен и собствен инструмен за настройка, основаващ се на библиотеката sysAPS, която от своя стрна използва моята база от данни. Със сигурност са я направили като част от  WordPerfect.

Corel поддържат нюзгрупата corelsupport.linux.printing. Болшинството от приказките в нея са за WordPerfect и CorelLinux.

9.6 Mandrake

Версия 7.2b1 на Mandrake се предлага стандартно с CUPS. Програмата QtCUPS осигурява чисто фрафичен административен интерфейс. Имаха някои проблеми да включат колкото е възможно повече драйвери, и затова предоставят CUPS PPD файлове, изградени с кода на моя интерфейс foomatic.

Мисля, че по - ранните версии на Mandrake се предлагаха с с инструмента на RedHat printtool.

9.7 Slackware

Slackware пристига с APS Filter. SETUP скриптът от apsfilter се инсталира като команда apsfilterconfig. Би трябвало да успеете да направите подходящи настройки просто като я стартирате.

Възможно е Slackware да включва и други системи; не разполагам с дистрибуцията, за да се запозная с нея.

9.8 Други дистрибуции

Моля, изпратете ми информация какво е направено по въпроса в другите дистрибуции!

10 Ghostscript

Ghostscript е една много значима програма за печатането със свободен софтуер. Преобладаващата част от работещия под Unix софтуер генерира Postscript, което обикновено ви струва по $100 допълнително на принтер. От своя страна, Ghostscript е свободен продукт, който може да генерира езика за печат на вашия принтер от получения от приложенията Postscript. Когато го свържете с драйвера на PDQ или с входящия филтър на lpd, получавате виртуален Postscript принтер, и правите живота си значително по - лесен.

Ghostscript може да бъде намерен в няколко форми. Търговската версия на Ghostscript, нареченаAladdin Ghostscript, може да се използва свободно за лични нужди, но не може да бъде част от комерсиално разпространявани пакети. Тя обикновено е с около една година по - напред от свободната версия на Ghostscript; в момента например, в нея има поддръжка за много цветни мастиленоструйни принтери, каквато липсва в по - старите версии на Ghostscript; поддръжката за PDF е също доста по - добра.

Главната свободна версия на Ghostscript е GNU Ghostscript, и представлява просто остаряла версия на Aladdin Ghostscript. Тази донякъде неудобна ситуация позвлява на Aladdin да бъдат напълно самофинансиращ се проект; водещите версии се правят от L Peter и няколко разработчика, и се лицензират на производители на хардуер и софтуер за включване в комерсиални продукти. За нещастие, тази схема от една страна осигурява работа на L Peter по Ghostscript за години напред, но от друга страна потиска включването на голямото общество разработчици на свободен софтуер. Специално авторите на драйвери намират ситуацията за лоша. Плановете на L Peter да напуска дават правомощия на голяма общност от разработчици да се включат в проекта, и затова той предвижда промени в лиценза, и е създал проект на SourceForge.

Третат версия на Ghostscript е ESP Ghostscript, поддържана от Easy Software Products (авторите на CUPS) по договор с Epson. ESP Ghostscript представлява съвкупност от драйвери от gimp-print проекта и GNU Ghostscript, плюс някои корекции. Тази версия още не е съвсем готова, но и това ще стане скоро, и тя със сигурност ще улесни живота на собствениците на управлявани от Gimp-print принтери.

Каквото и да правите с gs, уверете се, че го стартирате с аргумента, забраняващ достъпа до файлове (-dSAFER). Postscript е напълно функционален език, и лошо написана негова програма може да ви докара доста главоболия.

Ако става въпрос за PDF, формата за преносими документи (Portable Document Format) на Adobe (поне до 1.3), той е просто малко повече от добре подреден Postscript в компресиран файл. Ghostscript се справя добре с входяща информация от типа PDF, също както и Postscript. Така че вие можете да се окажете първи във ващия блок, който има PDF-принтер.

10.1 Повикване на Ghostscript

Най - често Ghostscript бива стартиран от филтъра, който сте избрали (аз ви препоръчвам apsfilter, ако вашият доставчик не предоставя нищо, което да ви върши работа), но също така е много удобно да го стартирате самостоятелно на ръка, за да проверявате за евентуални грешки.

Изпълнявайки командата gs -help ще получите кратък списък от наличните настройки и драйвери (имайте пред вид, че това е списъка от вградените при компилирането драйвери, а не главния списък с всички налични драйвери).

За да изпитате работата на Ghostscript или даден файл, можете да изпълните следната примерна команда: gs OPTIONS -q -dSAFER -sOutputFile=/dev/lp1 test.ps

10.2 Настройване на изхода на Ghostscript

Има множество настройки, които бихте могли да промените, в случай че изхода от gs не ви удовлетворява (в действителност, можете да правите каквито ви хрумнат дяволии, стига това да ви доставя удоволствие - все пак разполагате с първичния код).

Някои от тези настройки, както и други, описани в потребителското ръководство на Ghostscript (файлът Use.htm в Ghostscript дистрибуцията; вероятно се намира в /usr/doc или /usr/share/doc на вашата система) са чудесни кандидати за драйверни настройки във вашата филтрираща система, или в декларациите за драйвери на PDQ.

10.2.1 Местоположение и големина на изхода

Местоположението, големината, и съотношението между страните на изображението на една страница се определят от специфичния за принтера драйвер в Ghostscript. Ако сметнете, че вашите страници се отпечатват твърде къси, или твърде дълги, или твърде големи (2 пъти повече), бихте могли да погледнете първичния код на драйвера и да променяте параметри там, където ви се стори уместно. За нещастие, всеки драйвер е различен, така че аз на практика нямам възможност да ви кажа какво къде да промените, но повечето от тях са доста добре документирани.

10.2.2 Гама, големина на точките, и т.н.

Мнозинството не - лазерни принтери страдат от факта, че точките им са доста големи. От това и отпечатваните картини са твърде тъмни. Ако установите, че при вас този проблем е налице за драйвер, нямащ друга възможност за настройка, ще трябва да използвате собствена функция за прехвърляне. Просто създайте следния файл във директорията с библиотеките на ghostscript, и добавете името му към повикването на gs точно преди действителния файл. Може да се наложи малко да си поиграете, докато намерите точните стойности, отговарящи на вашия принтер. По - ниските стойности водят до по - светли отпечатки. Особено в случаите, когато вашият драйвер използва Floyd-Steinberg алгоритъма за растеризиране на цветовете, по - ниските стойности (0,2 - 0,15) са за предпочитане.

--8<-- gamma.ps --8<--

%!

%transfer functions for cyan magenta yellow black

{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer

--8<---------8<--

Възможно е също така да се подобри работата на някои принтери, които отпечатват погрешно цветове, като се поизменят горните стойности. Ако направите това, ви препоръчвам да изпитате принтера с помощта на тестовия файл colorcir.ps , който идва заедно с ghostscript (в поддиректорията examples).

Към много от драйверите за новите мастиленоструйни принтери има аргументи за командния ред, или различни допълнителни файлове към драйвера, чрез които може да се променя гама параметъра (и други параметри), с цел да се подобри отпечатваното от принтера при използване на различни типове хартия. Добре ще е да проучите тези неща по - подробно, преди да започнете да си играете да правите настройки по Postscript.

10.2.3 Цветен печат с Ghostscript

Стандартният dithering за цвят на Ghostscript е оптимизиран за устройства с ниска разделителна способност. Ghostscript обработва образа доста грубо, с цел да се получи изход за печат с 60 ppi (това не са dpi, а ppi - "очевидните" цветни точки на инч след обработката). В резултат на това и от съвременните цветни принтери излизат лоши отпечатки; особено мастиленоструйните принтери, когато използват фотохартия, са способни на много по - високи стойности ppi.

За да преодолеете този проблем, използвайте настройката -dDITHERPPI=x на Ghostscript, където х е стойнотта, която искате да използвате. Това може и да има ефект, а може и да няма при всички драйвери; много от новите драйвери (например stp драйвера за Epson Stylus) използват свои методи за обработка на образа и не се съобразяват с тази настройка. А за някои драйвери и двата начина важат (например при bjc600 за Canon BubbleJet).

На практика при Ghostscript dithering е доста основно. Много неща, необходими за качествено отпечатване на съвременните принтери, просто липсват в Ghostscript. Има различни проекти, които работят по разрешаването на този проблем, но техния прогрес е ограничен от лиценза на Ghostscript, който налага разработка в стил "катедрала". Започвайки от Open Source Printing Summit 2000 събирането, всички необходими хора говорят за това, така че очаквайте ситуацията да се промени в скоро време.

11 Как се печата на принтер в мрежа

Една от особеностите на повечето системи за буфериране на печата е, че те поддържат разпечатването през мрежа към принтери, физически свързани към друга машина. С внимателно подбрана комбинация от програми за филтриране, и използвайки ралични полезни приложения, можете да печатате към принтери, свързани във всяка