"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 Как се печата на принтер в мрежа

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

11.1 Към Unix/lpd  машини

За да позволите машини от мрежата ви да отпечатват към вашия принтер чрез LPD протокола, трябва да ги изброите във файла /etc/hosts.equiv или /etc/hosts.lpd . (Имайте пред вид, че изброяването на машини в hosts.equiv има странични ефекти; уверете се, че знаете какво правите, когато изписвате името на някоя машина в него.) Може да разрешите само на определени потребители от другите машини да отпечатват на вашия принтер посредством атрибута rs; прочетете man страницата на lpd за повече информация.

11.1.1 С pdq

Ако използвате PDQ, трябва да дефинирате принтер с интерфейс тип "bsd-lpd". Този интерфейс приема като аргументи името на машината и името на опашката за печат; съветникът, който помага за установяването на настройките на принтера, ще ви попита за тези имена.

11.1.2 С lpd

За да оптепатате към друга машина, трябва да направите вписване в /etc/printcap , подоно на това:

#REMOTE djet500

lp|dj|deskjet:\

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

        :rm=machine.out.there.com:\

        :pr=printername:\

        :lp=/dev/null:\

        :sh:

Забележете, че все още има буферна директория на местната машина, управлявана от lpd. Ако мрежовата машина, към която е свързан принтера, е заета или няма връзка, задачите за печат от местната машина изчакват в тази директория, докато настане момент да бъдат изпратени.

11.1.3 С rlpr

Можете също да използвате и rlpr, за да изпращате задачите за печат направо на опашката за отпечатване на мрежовата машина, без да е необходимо да правите настройки на lpd. Този вид разпечатване е много уместен в ситуации, където само от време на време се извършва разпечатване към различни принтери. Ето и част от уводните думи към rlpr:

Rlpr използва TCP/IP  за да изпраща задачите за печат към lpd сървъри, намиращи се където и да е в мрежата.

За разлика ор lpr, НЕ_Е необходимо мрежовия принтер изрично да е известен на машината, от която печатате (т.е. посредством /etc/printcap) - едно значително по гъвкаво и по - лесно за администриране решение.

rlpr може да се използва навсякъде, където може да се използва традиционното lpr, и е обратно съвместимо с традиционното lpr на BSD.

Най - силната черта на rlpr е способността да се разпечатва дистанционно *отвсякъде навсякъде*, без значение как е конфигурирана машината, от която се печата. Rlpr може да работи като филтър, също както традиционното lpr, така че клиентски програми, работещи по машините в мрежата, като netscape, emacs, и т.н., могат да отпечатват към вашата машина с минимални усилия.

Plpr може да се намери на Metalab

11.2 Към Windows или Samba принтер

За повече и по - подробна информация от изнесената тук можете да прочетете "Printing to Windows mini-HOWTO".

11.2.1 От PDQ

Не ми е известно да има готов smb интерфейс, но да се направи такъв не е много трудно, използвайки за пример основания на Nettalk appletalk интерфейс. Моля някой да го напише и да го предостави за включване в PDQ!

Прочетете по - надолу частта Windows/LPD за повече съвети как може да се направи това.

11.2.2 От LPD

Има възможност да се насочва опашката за печат през програмата smbclient (част от пакета samba) към основаната на TCP/IP услуга за печат на SMB. В Samba има програма, наречен smbprint, който върши тази работа. Накратко, слагате конфигурационен файл за въпросния принтер в буферната директорията, и инсталирате програмата smbrpint като if.

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

lp|remote-smbprinter:\

        :lp=/dev/null:sh:\

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

        :if=/usr/local/sbin/smbprint:

За повече информация относно определени настройки ще трябва да прочетете коментарите вътре в програмата smbprint (тя е shell script).

Можете освен това и да използвате smbclient, за да изпратите файл за печат направо на услугата за печат на SMB, без да използвате lpd. Вижте man страницата.

11.3 Към NetWare принтер

Пакета ncpfs включва и командата nprint, която върши същите неща като smbprint, само че за NetWare. Можете да вземете ncpfs от Metalab. Ето част от краткото описание на ncpfs (версия 0.16):

" С помощта на ncpfs можете да монтирате томове от вашия NetWare сървър на Linux. Можете също да отпечатвате към опашка за печат на NetWare система, и да изпращате за печат от тази опашка към буферната директория за печат на Un*x. Ще ви бъде необходимо ядро с версия 1.2.х или 1.3.54 и по - висока. ncpfs НЕ работи с ядра, имащи версия по - ниска от 1.3.54. "

11.3.1 От LPD

За да накарате nprint да работи посредством lpd, трябва да напишете малка програмка на shell, която да отпечатва стандартния вход към NetWare принтер, и да я сложите като if на опашката за печат на lpd. Ще се получи нещо такова:

sub2|remote-NWprinter:\

        :lp=/dev/null:sh:\

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

        :if=/var/spool/lpd/nprint-script:

nprint-script може да изглежда приблизително така:

#! /bin/sh

# Трябва първо да опитате като guest без парола!

/usr/local/bin/nprint -S net -U name -P password -q printq-name -

11.4 Към EtherTalk (Apple) принтер

Пакетът nettaalk включва инструмент, подобен на nprint и smbclient. Други хора са документирали начините за печат от и към Apple мрежа много по -добре, отколкото аз някога бих могъл; погледнете в "Linux Nettalk-HOWTO".

11.4.1 От PDQ

В PDQ има готов интерфейс, наречен "appletalk". Той използва пакета Nettalk за отпечатване към свързан в Apple мрежа принтер. Просто трябва да изберете този интерфейс в съветника "Add printer" на xpdq.

11.5 Отпечатване към мрежов принтер

Много принтери се доставят с ethernet интерфейс, към който можете директно да отпечатвате, обикновено изполвайки lpd протокола. Ще трябва да следвате инструкциите, които са дошли заедно с принтера, или с мрежовия му адаптер, но в общия случай тези принтери "стартират" lpd и осигуряват една или няколко опашки за печат, към които можете да отпечатвате. При НР например, с printcap направен по следния начин, може да имате успех:

lj-5|remote-hplj:\

        :lp=/dev/null:sh:\

        :sd=/var/spool/lpd/lj-5:\

        :rm=printer.name.com:rp=raw:

или, когато използвате bsd-lpd интерфейса на PDQ, ще дадете аргументите
REMOTE_HOST=printer.name.com и QUEUE=raw.

Принтерите на НР LaserJet с JetDirect интерфейс в общия случай поддържат две вградени lpd опашки за печат - "raw", която приема PCL (възможно е и Postscript), и "text", която приема направо обикновен (ascii) текст (и се справя автоматично със стъпаловидния ефект). Ако имате JetDirectPlus3 с три входа, опашките приемат наименования съответно "raw1", "text1", и т.н.

Имайте пред вид, че от компанията ISS са установили възможност да се проведе атака от типа "denial of service", която да блокира интерфейсите на HP JetDirect. Мнозинството от тях бяха установени през есента на 1998. Този вид проблеми са общи за машините с вграден код; такива машини не биват да бъдат излагани на открит Интернет трафик.

В случай, че работите с мрежа с много компютри, и особено ако част от принтерите в нея не поддържат Postscript, идеята да се отдели една машина специално за печатен сървър, към който да печатат всички останали машини, и на който да се стартират всички Ghostscript задачи, може да се окаже много добра. Това решение ще ви даде възможност да спирате или пренареждате опашката за печат, посредством командите topq и lprm.

Решението е добро и поради това, че вашата GNU/Linux машина, работейки като сървър поемащ и обслужващ печата, ше даде възможност на мрежовите потребители да приключват бързо задачите си за печат, и да обърнат повече внимание на другите си дела, без да им се налага да чакат принтера да отпечата задачи, изпратена от друг потребители. Това решение е подходящо също в случаи, когато притежавате стари НР Jetdirect, които не можете да поправите; така се намалява вероятността за закливане на принтера.

За да направите това, създайте опашка за печат на вашата Linix машина, която да сочи към ethernet принтера HP LJ (като горе). След това настройте всички клиенти във вашата локална мрежа да използват тази опашка (като lj-5 в горния пример).

Някои от мрежовите принтери на НР не обръщат внимание на това как е установена настройката за (заглавната) banner-страницата при клиентите, които отпечатват; можете да изключите генерираните от самия принтер banner-страница, като се свържете през telnet към принтера, натиснете два пъти "return", напишете "banner: 0" и след това "quit". По този начин можете да измените и други вътрешни настройки на принтера; напишете "?", за да видите списъка.

Промяна на всички настройки на принтера може да се извърши и посредством WebJet софтуера на НР. Този пакет работи като демон, и приема http заявки на определен порт. Той предоставя форми и Java аплети, с които може да се управлява работата на НР мрежови принтери. На теория той може също и да управлява стандартните опащки за печат на Unix, но го прави, използвайки rexec услугата, която изобщо не е сигурна. Не ви съветвам да използвате тази възможност.

11.5.1 Към AppSocket устройства

Съществуват мрежови принтери (и "черни кутии" за мрежов печат), единствената възможна връзка към които може да се направи през TCP; това понякога се нарича "AppSocket" протокол. По - забележими примери в тази категория са ранните модели (мрежови) карти на НР JetDirect (включително някои JetDirectEx). Като цяло, за да отпечатате към такъв принтер, трябва да отворите TCP връзка към него на съответния порт (обикновено 9100, или 9100, 9101 и 9102 за тривходови кутии) и да "пуснете" задачите си за печат през нея. В LPRng има вградена поддръжка за такива случаи, за произволен TCP порт, но със lpd на BSD това не е толкова лесно. Най - доброто нещо, което можете да направите в случая, е да използвате полезната малка програмка, наречена netcat.

netcat, използваща PDQ интерфейс, би изглеждала така:

 

interface tcp-port-0.1 {

 

   help "Това е един от първите интерфейси, поддържащ мрежови

         принтери и сървъри за печат. Устройството просто слуша

         зa TCP връзка на определен порт, и изпраща данните

         от всяка връзка към принтера.\nТози интерфейс

         изисква програмата netcat (\"nc\")."

 

   required_args "REMOTE_HOST"

 

   argument {

      var = "REMOTE_HOST"

      desc = "Remote host"

      help = "Това е IP номера или адреса на печатния сървър."

   }

 

   argument {

      var = "REMOTE_PORT"

      def_value = "9100"

      desc = "Remote port"

      help = "Това е номера на TCP порта на печатния сървър, към който

              трябва да се изпрати зданието за печат. Повечето JetDirect

              карти, и техни копия, приемат задания на порт 9100 (или 9101

              за порт 2, и т.н.)."

   }

 

   requires "nc"

 

   # nc ends after 45 seconds of no network activity; it doesn't

   # actually stop on EOF the way we'd like.

   send_exec { cat $OUTPUT | nc -w 45 $REMOTE_HOST $REMOTE_PORT }

 

}

 

Ако не успеете по този начин, можете да отпечатвате, сред многото други възможни начини, и с помощта на Perl програмата по - долу. Или, за по - добра производителност, използвайте програмата netcat ("nc"), която, покрай другите неща, върши почти същата работа. Би трябвало повече дистрибуции да разпространяват netcat готова като пакет.

 

#!/usr/bin/perl

# Благодарности на Dan McLaughlin, написал оригиналната версия на този

# скрипт (И на Jim W. Jones за оказваната ми помощ ;)

 

$fileName = @ARGV[0];

 

open(IN,"$fileName") || die "Can't open file $fileName";

 

$dpi300     = "\x1B*t300R";

$dosCr      = "\x1B&amp;k3G";

$ends = "\x0A";

 

$port =  9100 unless $port;

$them = "bach.sr.hp.com" unless $them;

 

$AF_INET = 2;

$SOCK_STREAM = 1;

$SIG{'INT'} = 'dokill';

$sockaddr = 'S n a4 x8';

 

chop($hostname = `hostname`);

($name,$aliases,$proto) = getprotobyname('tcp');

($name,$aliases,$port) = getservbyname($port,'tcp')

    unless $port = /\d+$/;;

($name,$aliases,$type,$len,$thisaddr) =

        gethostbyname($hostname);

($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);

$this = pack($sockaddr, $AF_INET, 0, $thisaddr);

$that = pack($sockaddr, $AF_INET, $port, $thataddr);

 

if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {

#    print "socket ok\n";

}

else {

    die $!;

}

# Give the socket an address.

if (bind(S, $this)) {

#    print "bind ok\n";

}

else {

    die $!;

}

 

# Call up the server.

 

if (connect(S,$that)) {

#    print "connect ok\n";

}

else {

    die $!;

}

 

# Set socket to be command buffered.

 

select(S); $| = 1; select(STDOUT);

 

#    print S "@PJL ECHO Hi $hostname! $ends";

#    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";

#    print S $dpi300;

 

# Avoid deadlock by forking.

 

if($child = fork) {

    print S $dosCr;

    print S $TimesNewR;

 

    while (&lt;IN>) {

        print S;

    }

    sleep 3;

    do dokill();

} else {

    while(&lt;S>) {

        print;

    }

}

 

sub dokill {

    kill 9,$child if $child;

}

 

11.6 Стартиране на if за мрежови принтери със стар LPD

По - старите версии на lpd имат тази особеност, че не изпълняват if за дистанционен печат. (Версиите след 0.43 са променени, така че винаги се изпълнява if; промяната произлиза от FreeBSD). В случай, че се нуждаете да изпълните if за дистанционен принтер, който не работи с вашия lpr, можете да оправите нещата, като направите двойна опашка и пренасочвате задачите за печат. Ето един printcap, който може да ви послужи за пример:

 

lj-5:\

        :lp=/dev/null:sh:\

        :sd=/var/spool/lpd/lj-5:\

        :if=/usr/lib/lpd/filter-lj-5:

lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\

        :rp=raw:sd=/var/spool/lpd/lj-5-raw:

 

и можете да отпечатвате с този shell скрипт:

 

#!/bin/sh

gs &lt;options> -q -dSAFER -sOutputFile=- - | \

        lpr -Plj-5-remote -U$5

 

Аргумента -U към lpr върши работа само ако lpr работи като демон; с него се установява правилно името на изпратилия задачата за печат в опашката за повторно изпратените задачи. Добре би било да използвате по - сигурен метод за получаване на потребителското име, тъй като в някои случаи то не е аргумента 5. Вижте man страницата printcap за подробности.

 

11.7 От Windows

В пакета Samba има директна поддръжка за отпечатване през SMB от Windows (или OS/2) клиенти към Linux сървър. Samba също така поддържа споделяне на файлови системи на Un*x с Windows клиенти.

Samba е много добре документиран пакет, а също така има и Samba FAQ. Можете да направите две неща: или да настроите magick филтър на Un*x машината и да отпечатвате Postscript към нея, или да обиколите всички Windows машини и да им инсталирате съответния драйвер за принтера, като оставите опашката за печат нефилтрирана. Във втория вариант при определени случаи можете да получите по - добри разпечатки, но той може и да ви затрудни доста, ако се наложи да инсталирате Windows драйвери на голям брой машини. Така че опитайте първо с Postscript. Съвременните версии на Samba би трябвало да поддържат механизма за автоматично зареждане на драйвери, предлаган от Windows NT сървърите, за да се справят с този проблем.

Ако използвате PDQ, трябва да направите настройките на Samba така, че да стартира командата pdq вместо lpr, която се изпълнява по дефиниция. Вярвам, че Samba ще стартира pdq като съответния потребител, така че всичко би трябвало да работи добре. Има множество настройки на Samba, които ще трябва да промените, за да свършите това:

printcap

Това трябва сочи към един по - особен файл printcap, в който просто са изброени наличните принтери. Всичко, от което се нуждаете в този файл, е по едно късо и дълго име за всеки принтер, по един на ред:

 

lp1|Printer One

lp2|Printer Two

lp3|Printer Three

 

Късото име ще бъде използвано като име на принтера за командата print

команда print

Това трябва да се направи горе-долу по следния начин: pdq -P %p %s ; rm %s

команда lprm

Изглежда за момента няма добра стойност за тази настройка. Задачите за печат на PDQ ще изтекат след определен перопд от време, така че ако ако принтера е напълно извън строя, няма проблеми. Ако промените мнението си, можете да използвате xpdq за да спирате отпечатването на определени задачи, но това е неудобно от Windows. Засега просто сложете невършеща нищо команда като true. Ако използвате lpd или LPRng, подходящо написана команда lprm ще свърши работа. Не съм сигурен по какъв начин Samba може да установи номера в опашката за печат на подадена от lpr задача, получена от своя страна от pdq.

команда lpq

PDQ отново не предлага нищо подходящо за тук. И тук поставете невършеща нищо команда като true засега. Ако използвате lpd или LPRng, подходящо написана команда lpq ще свърши работа; просто няма да виждате задачите, докато те не бъдат филтрирани от PDQ.

11.8 От Apple машини

Nettalk поддържа разпечатването от Apple клиенти през Ethertalk. Погледнете страницата на Nettalk HOWTO за повече информация.

Наистина, в наши дни всеки съвременен Mac може да печата през TCP/IP, използвайки LPD протокола. UVa имат много хубава страница в Интернет с детайлна информация по въпроса.

11.9 От NetWare

Пакетът ncpfs включва демон, наречен pserver, който може да предоставя услуги на Netware опашка за печат. От това което знам, системата изисква "Bindery"-базирана версия на NetWare, т.е. 2.х, 3.х или 4.х с позволен "bindery access".

За повече информация относно ncpfs и pserver, погледнете на FTP страницата на ncpfs.

11.10 Управление на мрежови принтери

Мнозинството мрежови принтери поддържат някой метод за отдалечено администриране. Често има лесни за употреба web страници за конфигуриране. Нерядко има поддръжка за SNMP управление. което е още по - полезно. Обикновено можете да получите интересна информация за неща като количество на мастилото и хартията, отпечатвани количества, и други, и също така можете да променяте определени настройки. Управлението на принтер чрез SNMP, както и много други неща, свързани с отпечатването, се стандартизират от работната група за принтери към IEEE (IEEE Print Working Group).

11.10.1 npadmin

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

npadmin има отлична man страница, и негови предварително компилирани пакети се разпространяват от няколко RPM и dpkg - базирани дистрибуции.

11.10.2 Други SNMP инструменти

Освен npadmin, има още доста SNMP инструменти, които могат да ви бъдат полезни. snmptraploggd може да води отчет за SNMP trap събития. Това е полезно за наблюдаване на събития като засядане в принтера, свършване на хартията, и т.н.; би било елементарно да се препредават отделни събития към пейджър, или да се изпращат към електронна поща.

Докато npadmin предлага опростена поддръжка за SNMP интерфейсите на много мрежови принтери, в някои принтери може да има добавени от производителя разширения, за които npadmin не знае. В този случай можете да използвате CMU SNMP инструментите, които поддържат произволни SNMP GET и SET операции, а също и допълнителни. С тях, като поработите малко, ще можете да използвате всички SNMP особености, предлагани от MIB на вашия принтер. Може да стане нужда да поискате MIB от вашия доставчик, за да определите кои са всичките промеливи; понякога доставчиците си мислят че хората на практика ползват направените и доставяни от самите тях инструменти.

Библиотеката на VA Linux libprinterconf включва код, който се използва за разпознаване принтери в мрежата. Принтерите се идентифицират посредством сравняване с предварително компилирани вътре в нея подписи на принтери; за момента библиотеката не е голяма, но покрива много от често срещаните модели мрежови принтери.

12 Windows - принтери

Както споменах по - рано, за някои принтери по принцип няма поддръжка, понеже те не "говорят" нормален език за отпечатване; вместо това, те използват процесора на компютъра, който преобразува информацията за печат в тип  bitmap, и след това я подава с фиксирана скорост към принтера. В малка част от случаите, принтерите от този тип разбират и нещо нормално като PCL, но в повечето случаи не могат и това. Има и случаи (в най - долния клас), в които принтерът дори не използва нормална паралелна връзка към принтера, а се уповава на драйвера на производителя, който симулира необходимото поведение на хардуера (най - важно се явява управлението потока на данните).

Във всеки случай, има няколко неща, които можете да опитате, ако ви се е паднал такъв лимон.

12.1 Пренасочване през Ghostscript във Windows

 Сега вече има нов Ghostscript драйвер, наречен mswinpr2, който отпечатва, използвайки Windows GDI повиквания. Съществува и пренасочващата програма redmon, която прекарва задачата за печат през Ghostscript, преди да я подаде към принтера. (Сходно на if филтъра при LPD на Unix). Всичко това събрано, дава възможност от Windows машина да се отпечатва Postscript на Win-принтер, през драйвера на производителя.

Ако имате такъв принтер, който не може да се използва директно, можете да го опишете като "Postscript" принтер, да го свържете към компютър с Windows, и да отпечатвате с драйверите на производителя му посредством redmon, Ghostscript, и mswinpr2.

12.2 Win-принтери на НР

Някои от принтерите на НР използват "Printing Performance Architecture" (маркетингов жаргон за "бяхме твърде стиснати, за да сложим PCL"). За тях има поддръжка, по малко заобиколен начин, посредством написаната от Tim Norman преобразуваща програма pbm2ppa. В основни линии, (първо) използвате Ghostscript за да преобразувате Postscript в bitmap с формат pbm, и след това използвате pbm2ppa, за да преобразувате информацията за печат в специфичния за принтера (bitmap) ppa формат, който вече може да бъде изпратен на принтера. Тази програма може да бъде намерена и като драйвер за Ghostscript.

Софтуер за ppa може да се вземе от неговата в Интернет; pbm2ppa поддържа някои от моделите НР 720, 820 и 1000; прочетете документацията, идваща с програмата, за повече подробности относно отпечатването на ppa принтер.

12.3 Win-принтери на Lexmark

Мнозинството от евтините мастиленоструйни принтери на Lexmark използват собствен език за отпечатване, и следователно спадат към Win-принтерите. Обаче Henryk Paluch е написал програма, с която може да се отпечатва на Lexmark 7000. Да се надяваме, че той ще успее да добави поддръжка за цветен печат, а също и за други модели мастиленоструйни принтери на Lexmark. Вижте ТУК за повече информация.

Подобно на споменатия модел, сега има драйвери за 5700, 1000, 1100, 2070, и за други модели. Вижте по - горе списъка на поддържаните принтери, и моята страница в Интернет, за повече информация относно получаването на тези драйвери.

13 Как да отпечатваме на факс-машина

Вие можете да отпечатвате на фкас-машина, с или без модем.

13.1 Използвайки факсмодем

Има много програми, с помощта на които можете да изпращате и получавате документи по факс. Една от най - цялостните е HylaFax, която може да бъде намерена на ftp.sgi.com. Тя поддържа множество неща - от използването на няколко модема до broadcasting.

SuSE предлага Java HylaFax клиент, който работи на всяка Java платформа (включително Windows и Linux). Има също и не-Java факс - клиенти за повечето платформи; GNU/Linux със сигурност може да удовлетвори нуждите ви да обненяте факсове в мрежа.

Има също така и една проста програма, наречена efax, с която можете да изпращате факсове; тя е подходяща за по - малки системи. Програмата mgetty може да приема факсове (и дори гласова поща, при някои модеми!).

13.1.1 Изпращане на факс с PDQ

PDQ не се разпространява с факс - интерфейс, но тук по - долу можете да видите един обикновен такъв (изпитан само частично):

 

interface efax-0.1 {

   help "This interface uses the efax package's fax program to send a

         fax.  You should first get efax's \"fax send\" working by

         itself by editing the file /etc/efax.rc and testing.  Connect

         this interface to a generic postscript driver to define a

         fax machine \"printer\"".

 

   requires { "efax" "fax" }

 

   # Making phone number required means that the add printer wizard

   # will demand a phone number at add printer time.  This is

   # undesirable, so it isn't explicitly required, even though it is

   # logically required.  The send_exec script checks for the number.

   # You could skip the wizard by adding this printer by hand to

   # .printrc, mark this as required, and it might then prompt?

   argument {

      var = "PHONE_NUMBER"

      desc = "Phone Number"

      help = "The phone number to dial.  Prefixes like 9 ought to be

              defined in your /etc/efax.rc file."

   }

 

   option {

      var = "RESOLUTION"

      desc = "Fax resolution"

      default_choice = "high"

      choice "low" {

         value = "-l"

         desc = "Low"

         help = "Low resolution on a fax is 96lpi."        

      }

      choice "high" {

         value = ""

         desc = "High"

         help = "High resolution on a fax is 192lpi."        

      }

   }

 

   # If you don't specify a phone number the job just fails, and

   # the only way to figure this out is to look at the error message

   # at the bottom of the job details.  Hmm.

   send_exec {

     if [ "x$PHONE_NUMBER" != "x" ]

     then

          fax send $RESOLUTION $PHONE_NUMBER $INPUT

     else

          echo 'You must specify a phone number!'

          false

     fi

   }

 

}

 

13.2 Изполвайки услуги за дистанционен печат (Remote Printing Service)

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

13.3 Комерсиални факс услуги

Има много компании, който предлагат услуги за изпращане на факс през Интернет. Например EFax, предлагат безплатно получаване на факсове (към избран от вас номер, не повече) посредством електронна поща, и изпращане на факсове срещу заплащане. Другите компании предлагат подобни услуги.

14 Как да направим нещо, което си струва да се отпечата.

Ето тук вече става въпрос за истинско програмно осигуряване. По принцип, на Linux могат да се изпълняват двоични файлове с различена степен на успех от: Linux/x86, Linux/Alpha, Linux/Sparc. Linux/(други платформи...), iBCS, Win16/Win32 (посредством dosemu, и някой бъдещ ден, с Wine), Mac/68k (посредством Executor), и Java. Ще разгледам само естествения за GNU/Linux и общия за Un*x софтуер.

14.1 Форматиращи езици

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

nroff

Това беше един от първите форматиращи езици за Unix. Man страниците са най - подходящия пример за форматиране с *roff макроси; много хора се кълнат в тях, но nroff, поне лично за мен, има по - загадъчен синтакс, откокото е необходимо (вж. Фигура 11); освен това го намирам за може би не най - подходящия избор при започване на нов проект. Но въпреки това си струва да се знае, че посредством groff може директно да се направи man страница в postscript. За мнозинството от man страниците можете да направите това чрез командата man -t alabala | lpr.

 

   Фигура 11. Пример за roff форматиране

   .B man

   is the system's manual pager. Each

   .I page

   argument given to

   .B man

   is normally the name of a program, utility or function.

   The

   .I manual page

   associated with each of these arguments is then found and

   displayed. A

   .IR section ,

   if provided, will direct

   .B man

   to look

   only in that

   .I section

   of the manual.

 

TEX

TEX, а също и пакета от макроси LATEX, са едни от най - широко използваните форматиращи езици в света на  Un*x, въпреки че TEX не е произлязъл от Unix и има версии за множество операционни системи. Творбите с техническа тематика често се пишат на LATEX, понеже така много се опростяват въпроса с подредбата на материала, а също и защото той е ВСЕ_ОЩЕ една от текстообработващите системи, поддържащи едновременно изцяло и добре математическия синтакс. Изходният формат от TEX е dvi, като съответно може да се преобразува до Postscript, или PCL посредством dvips, или dvilj. Ако имате желание да си инсталирате TEX или LATEX, по - добре си инсталирайте цялата група от пакети teTEX; тя съдържа всичко. Напоследък заедно с ТeX идват pdfTEX и pdfLATEX пакетите, с които може директно да се правят файлове във PDF формата на Adobe. Има и команди, с които могат да се създават хипервръзки и средства за навигация в PDF файлове.

 

    Фигура 12. Пример за LATEX форматиране

    \subsubsection{NAT}

 

      Each real server is assigned a different IP address, and the NA

      implements address translation for all inbound and outbound

      packets.

 

      \begin{description}

      \item[Advantage] Implementation simplicity, especially if we

            already implement other NAT capabilities.

 

      \item[Disadvantage] Return traffic from the server goes through

            address translation, which may incur a speed penalty.  This

            probably isn't too bad if we design for it from the

            beginning.

 

       \item[Disadvantage] NAT breaks the end-to-end semantics of normal

            internet traffic.  Protocols like ftp, H.323, etc would

            require special support involving snooping and in-stream

            rewriting, or complete protocol proxying; neither is likely

            to be practical.

       \end{description}

 

SGML

Има най - малко един наличен свободен интерпретатор на sgml за Unix и Linux; на него се базира "домашната" система за документация Linuxdoc-SGML. Той може да поддържа също така и други  DTD, най - забележителните от които са DocBook.

 

    Figure 13. Example of DocBook SGML

    <VarListEntry>

     <Term>SGML</Term>

     <ListItem>

      <Para>

        There is at least one free SGML parser available for Un*x

        systems; it forms the basis of Linuxdoc-SGML's homegrown

        document system.  It can support other DTD's, as well, most

        notably DocBook.  This document is written in DocBook-DTD

        SGML.

       </Para>

      </ListItem>

     </VarListEntry

 

14.2 Текстообработване посредством програми тип WYSIWYG (What You See Is What You Get)

Вече няма недостиг на WYSIWYG текстообработващ софтуер. Има на разположение няколко цялостни офис системи, и сред тях една свободна за лична употреба (StarOffice)

StarOffice
Sun Microsystems разпорстраняват в Интернет свободно StarOffice за GNU/Linux. Този многостранен офис пакет има всички черти които бихте очаквали, включително четене и запис във файловите формати на MS Office (включително Word документи). Можете да намерите mini-HOWTO, в което се описва как да си доставите и инсталирате пакета. Изходната информация за печат се генерира в Postscript, така че ще можете да разпечатвате на който и да е принтер, който по някъкъв начин може да печата под GNU/Linux.
WordPerfect
Corel разпространяват основната версия на WordPerfect 8 за GNU/Linux свободно, и продават различни пакети от Word Perfec Office Suite 2000 (включващ Word Perfect, CorelDraw и Quattro Pro версии 9). Интернет страницата Linux WordPerfect Fonts and Printers съдържа информация относно това как да се настри WordPerfect да използва Ghostscript, или някой от вградените драйвери за принтери (които очевидно приличат на тези на WordPerfect за DOS, в случай че драйверът за вашия принтер не е включен в дистрибуцията WP8).
Applix
Applix e междуплатформен (т.е., има го за различните видове Unix, Windows и т.н.) офис пакет, който се произвежда от едноименната компания. RedHat и SuSE го продаваха, когато той беше единствен по рода си; сега Applix сами се занимават с продажбата му. Това е единствения пакет с приложения, имащи естествен Unix стил; той навярно пасва по - добре към начина, по който Unix прави нещата.
AbiWord
AbiWord е един от няколкото проекта под GPL, за създаване на WYSIWYG текстообработваща система; резултата от него е една много добра програма, основаваща се на XML формата, която може и да чете Word файлове. AbiWord е все още на етап разработка, макар че и в момента с него могат да се правят някои малки неща.
LYX
LYX представлява графичен интерфейс за LATEX, която изглежда много обещаващо. Вижте неговата страница в Интернет за повече сведения. Съществува и версия в стил KDE, наречена Klyx; авторът на LYX и човекът, поставил основите на KDE, са едно и също лице. (б.пр. настоящият превод е форматиран с LYX ! )
Maxwell
Maxwell е прост, базиран на MS RTF формата текстов редактор, започнал живота си като комерсиален продукт, но разпространяван понастоящем под GPL.
Други доставчици на такива продукти могат да се чувстват свободни да ми пишат, относно това какво предлагат.

15 Отпечатване на фотографии

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

15.1 Ghostscript и фотографиите

Ghostscript има някои проблеми с обработването на цветни фотографии при мнозинството от драйверите. Проблемите са няколко:

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

От написаното дотук излиза, че очевидно е по - добре за отпечатване на фотографии да се използва софтуер, с който в последствие да не ви се налага да използвате Ghostscript; такъв софтуер има, разбира се. Най - големият претендент е добавката (pligin) за печат на Gimp, която дава възможност да се отпечатва точка-по-точка към Postscript и Epson Stylus принтери (с основна поддръжка на PPD). Частта от този драйвер за Epson Stylus вече я има и за Ghostscript, под името stp. Освен това, за целта могат да се използват различни програми като на ppm-to-foo (foo - някой друг формат),които могат да се печатат към принтери от рода на евтините модели на Lexmark, например; те отпечатват растера точка-по-точка.

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

15.2 Хартия

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

15.3 Настройки на принтера

За фотопечат, при мнозинството от цветните мастиленоструени принтери трябва да използвате най - детайлния (interlaced) режим (който е и най - бавен); в противен случай може да се получат неточни извивки или цветове. В общия случай, това се задава като изберете най - голямата разделителна способност в Ghostscript. При Postscript принтерите може да се наложи да добавите малко информация в началото на пролога, базирайки се на настройките в PPD файла. В PPD за Gimp няма (за отделните принтери) настройки за качество на отпечатване, но аз, макар и грубо, си добавих една за собствена употреба; пишете ми, ако искате да разберете как. Ако използвате PDQ или CUPS, можете лесно да управлявате всички настройки за принтера, които смятате за необходими. Библиотеката libppd на VA Linux програмата за крайни потребители GRP могат също да добавят тези настройки за Postscript принтери.

15.3.1 Издържливост на разпечатките

Разпечатките от цветни мастиленоструйни принтери обикновено стават негодни след няколко години, особено ако са били подложени на големи количества светлина и въздух; това се дължи на мастилото. За принтери, чиито единствени консумативи са мастилата, като Canon и Epson, можете да си купите архивни мастила - отпечатките от тях са по - издържливи. По - новите принтери често използват мастила на суха основа, които не остаряват толкова бързо, както по - старите мастила на течна основа. Но никоя отпечатка от мастиленоструен принтер не е достатъчно дълговечна, за да се използва за архивни нужди. За такива цели по - добре си запишете файловете с изображения на CD-R.

15.4 Shareware и комерсиален софтуер

Има една програма, наречена xwtools, която предоставя всякакви възможности и настройки за цветен печат на Epson, HP и Canon принтери. За нещастие, първичният и код не се разпространява. В случай, че я използвате за нещо различно от Epson Stylus Color 300 под Linux x86, тя струва 15 евро за лична употреба; търговската цена е неизвестна.

В произвеждания от Easy Software пакет ESP Print Pro има поддръжка за много принтери, за които може би другаде няма да намерите. За тези драйвери са ми казвали, че не са много добре настроени за отпечатване на фотографии, но те все пак работят.

16 Преглеждане на екрана преди разпечатване

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

16.1 Postscript файлове

Към Ghostscript има драйвер за Х11; най - добра реализация на драйвера е направена в програмата за преглеждане на Postscript файлове gv. С последните версии на този вид програми би трябвало да имат възможност да се разглеждат също и PDF файлове. Трябва да се отбележи, че gv замени по - старата сходна програма Ghostview; новият потребителски интерфейс е много по - приятен, и по - богат на функции, в сравнение стария, базиран на Athena потребителски интерфейс на ghostview.

16.2 dvi файлове от ТеХ

dvi файловете от ТеХ могат да бъдат преглеждани под Х11 с помощта на програмата xdvi. Съвременните версии на xdvi могат да повикват ghostscript да обработва Postscript материали, ако се налага.

Има също така и драйвер за VT100. Нарича се dgvt. Tmview работи с GNU/Linux и svgalib, в случай че това е единственото с което разполагате.

16.3 PDF файлове

Adobe предлагат Acrobat Reader и във версия за Linux; просто си я изтеглете от Интернет страницата им.

Също така може да използвате и xpdf - разпространява се безплатно, и идва с първичния код; мисля, че понастоящем и с gv би трябвало да могат да се преглеждат PDF файлове в Х11.

17 Серийни принтери под lpd

Необходими са някои трикове, за да се настроят серийнните принтери под lpd

17.1 Настройки в printcap

В Lpd има предвидени пет настройки, които сложени в /etc/printcap, могат да въздействат на серийния порт, към който е включен принтера. Прочетете man страницата на printcap, и обърнете внимание на br#, fc#, xc#, fs# и xs#. Последните четири от тях са bitmap-и, показващи настройките за използването на порта. br# е просто скоростта в baud, например "br#9600".

Много е лесно да се преведат настройки от stty в настройки na printcap. Ако се наложи да го правите, погледнете сега в man страницата на stty.

Използвайте stty, за да настроите порт за принтера така, че да можете да изпращате файлове към него с командата cat, и те да се отпечатват правилно. Ето как изглежда "stty -a" за порта, към който е принтера ми:

 

dina:/usr/users/andy/work/lpd/lpd# stty -a &lt; /dev/ttyS2

speed 9600 baud; rows 0; columns 0; line = 0;

intr = C; quit = \; erase = ?; kill = U; eof = D; eol = &lt;undef>;

eol2 = &lt;undef>; start = Q; stop = S; susp = Z; rprnt = R; werase = W;

lnext = V; min = 1; time = 0;

-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts

-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr

-igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel

-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0

bs0 vt0 ff0

-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase

-tostop -echoprt -echoctl -echoke

 

Единствените разлики между това и настройките, получавани от порта по време на първоначалното зареждане на компютъра, са -clocal, -crtscrt, и ixon. За вашия порт нещата може да изглеждат по друг начин, зависи как принтера ви управлява потока от данни.

На практика вие използвате stty по малко страничен начин. Тъй като stty работи на терминал, свързан към стандартния му вход, вие го използвате за манипулиране на даден сериен порт посредством символа "<", както се вижда по - горе.

След като настройките на stty са направени, и вече можете с "cat file > /dev/ttyS2" (както е при мен) да изпращате файловете за печат към принтера, прегледайте файла /usr/src/linux/include/asm-i386/termbits.h. Той съдържа доста интересни неща (може да ви се прииска да го отпечатате с cat - вече работи, нали?). Отидете на частта, която започва така:

 

/* c_cflag bit meaning */

#define CBAUD   0000017

 

В тази част са описани значенията на битовете fc# и fs#. Ще забележите, че имената там (след скоростта) съответстватат на тези от резултата от stty по - горе. Не ви ли казах, че ще бъде лесно?

Отбележете кои от тези настройки се предхождат от - в резултата от stty. Съберете тези числа (те са осмични). Това са битовете, които искате да изчистите, така че резултата е вашия fc#. Разбира се, трябва да запомните, че вие ще установите битовете след като нулирате, така че просто можете да използвате "fc#0177777" (аз правя така).

Сега направете същото и с тези настройки, които не започват с - . В моя пример важните са CS8 (0000060), HUPCL (0002000), и CREAD (0000200). Вижте и колко е скоростта в нодове (при мен е 0000015). Съберете всички, и в моя пример ще получите 0002275. Това ще бъде стойността на fs# ("fs#02275" работи чудесно в моя пример).

Направете същото със "set" и "clear" за следващата секция от include файла, а именно "c_lflag bits". В моя случай не трябваше да настройвам нищо, така че просто използвах "xc#0157777" и "xs#0".

17.2 По - стари серийни принтери, които изпускат символи

Jon Luckey отбелязва, че някои по - стари модели серийни принтери с безобразно евтини серийни интерфейси и малки буфери НАИСТИНА спират, когато си поискат, при наличие на контрол на потока от данни. Той е забелязал, че проблема с изпуснатите символи се решава, като забранил FIFO буферите на 16550 серийния порт на Linux машината си с помощтта на setserial (същото можете да направите, като изрично посочите типа на uart като 8250).

18 Какво липсва

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

18.1 Свързване на отделните елементи

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

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

18.2 Шрифтове

Управлението на шрифтовете при свободните системи е доста неудобно. В идеалния случай, екрана, принтера, приложението, и файловете с данни, трябва а имат достъп до едни и същи шрифтове. За нещастие това просто не е така. Има планове, по които се работи, да се премахне управлението на шрифтовете от Х сървъра, което ще опрости част от проблема, но установяването на добра връзка между шрифтовете на принтера и шрифтовете на приложението все още е задача, по която има да се работи. Изглежда все още няма проект, който да е на път да реши проблема; понастоящем авторите на приложения просто включват свои собствени шрифтове в данните за печат.

18.3 Метаданни

Приложенията или системите за буфериране имат нужда по някакъв начин да научат за свойствата на принтера и драйвера. Схемата, която е стандарт понастоящем, и е реализирана в Windows, Mac, и CUPS, е да се използват PPD файлове за управление на програмния и потребителския интерфейс. Това очевидно не е подходящо решение за не-Postscript принтери, и затова от Printer Working Group към IEEE са разработили проект за определяне на универсален формат за драйвери за принтери (Universal Printer Driver Format), или UPDF. Те направиха файл - образец в XML формат. Този файл силно напомня на PPD файл, и в него липсва всякаква специфична информация за драйвера и платформата; така че UPDF за момента е неизползваем. IBM притежават напълно дефинирана (parameterized) архитектура за драйвери за OS/2, която се предлага като свободен софтуер; когато тя бъде отворена, със сигурност ще стане източник на полезени идеи или програмен код, и при възможност достатъчно добра система, за да бъде използвана без ограничения. Дoри и тази ситема, обаче, не предоставя определен механизъм за обмяна на интересни свойства от драйверното пространство към приложението. Някой XML формат, и/или програмен приложен интерфейс за извличане определени характеристики е на път да се появи в даден момент.

18.4 Драйвери

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

Убеждаването на производителите на принтери да си сътрудничат ще бъде важна част от постигането на тази цел. Понастоящем производителите не предоставят минималната документация, необходима за да се накарат техните устройства да работят добре. На събирането Printing Summit 2000 имаше предтавители на много производители, и беше постигнат малък напредък по тази точка. Производителите най - вече са силно заинтересувани да запазят в тайна алгоритмите си за dithering и други, свързани с последното; това са софтуерните компоненти, с които се постигат такива впечатляващи резултати при мастиленоструйния печат, и производителите естествено се конкурират. Производителите, представени на събирането, сега би трябвало да имат по - ясна представа как работи свободния софтуер, и какво иска той от тях. Това не е много, но установява платформа за бъдещо развитие по въпроса.

19 Благодарности

Специални благодарности на Jacob Langford, авторът на pdq, който най - накрая даде на всички нас нещо, по - добро от плоското писане на скриптове за престаряла 20-годишна програма за управление на линейни принтери.

Информацията за smbprint е от статия на Marcel Roelofs <marcel@paragon.nl>.

Информацията относно nprint за използване на NetWare принтери получих от Michael Smith <mikes@bioch.ox.ac..uk>.

Частта за серийните принтери под lpd е от Andrew Tefft <teffta@engr.dnet.ge.com>.

Материалите за gamma и други настройки за gs бяха изпратени от Andreas <quasi@hub-fue.franken.de>.

Двата абзаца за 30-те секунди closing_wait на серийния драйвер са тук благодарени на Chris Johnson <cdj@netcom.com>.

Robert Hart ми изпрати няколко отлични абзаца, отнасящи се за настройването на сървър за печат на някои мрежови модели на НР, които включих без промени в документа.

И специални благодарности на десетките и десетки от вас, които ми посочваха печатни грешки и некоректни Интернет адреси в документа през всичките тези години.

 

20 GNU Free Documentation License

 

Version 1.1, March 2000

  

  

    Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite

    330, Boston, MA 02111-1307 USA Everyone is permitted to copy and

    distribute verbatim copies of this license document, but changing it is

    not allowed.

 

---------------------------------------

 

0. PREAMBLE

 

The purpose of this License is to make a manual, textbook, or other written

document "free" in the sense of freedom: to assure everyone the effective

freedom to copy and redistribute it, with or without modifying it, either

commercially or noncommercially. Secondarily, this License preserves for the

author and publisher a way to get credit for their work, while not being

considered responsible for modifications made by others.

 

This License is a kind of "copyleft", which means that derivative works of

the document must themselves be free in the same sense. It complements the

GNU General Public License, which is a copyleft license designed for free

software.

 

We have designed this License in order to use it for manuals for free

software, because free software needs free documentation: a free program

should come with manuals providing the same freedoms that the software does.

But this License is not limited to software manuals; it can be used for any

textual work, regardless of subject matter or whether it is published as a

printed book. We recommend this License principally for works whose purpose

is instruction or reference.

---------------------------------------

 

1. APPLICABILITY AND DEFINITIONS

 

This License applies to any manual or other work that contains a notice

placed by the copyright holder saying it can be distributed under the terms

of this License. The "Document", below, refers to any such manual or work.

Any member of the public is a licensee, and is addressed as "you".

 

A "Modified Version" of the Document means any work containing the Document

or a portion of it, either copied verbatim, or with modifications and/or

translated into another language.

 

A "Secondary Section" is a named appendix or a front-matter section of the

Document that deals exclusively with the relationship of the publishers or

authors of the Document to the Document's overall subject (or to related

matters) and contains nothing that could fall directly within that overall

subject. (For example, if the Document is in part a textbook of mathematics,

a Secondary Section may not explain any mathematics.) The relationship could

be a matter of historical connection with the subject or with related

matters, or of legal, commercial, philosophical, ethical or political

position regarding them.

 

The "Invariant Sections" are certain Secondary Sections whose titles are

designated, as being those of Invariant Sections, in the notice that says

that the Document is released under this License.

 

The "Cover Texts" are certain short passages of text that are listed, as

Front-Cover Texts or Back-Cover Texts, in the notice that says that the

Document is released under this License.

 

A "Transparent" copy of the Document means a machine-readable copy,

represented in a format whose specification is available to the general

public, whose contents can be viewed and edited directly and

straightforwardly with generic text editors or (for images composed of

pixels) generic paint programs or (for drawings) some widely available

drawing editor, and that is suitable for input to text formatters or for

automatic translation to a variety of formats suitable for input to text

formatters. A copy made in an otherwise Transparent file format whose markup

has been designed to thwart or discourage subsequent modification by readers

is not Transparent. A copy that is not "Transparent" is called "Opaque".

 

Examples of suitable formats for Transparent copies include plain ASCII

without markup, Texinfo input format, LATEX input format, SGML or XML using a

publicly available DTD, and standard-conforming simple HTML designed for

human modification. Opaque formats include PostScript, PDF, proprietary

formats that can be read and edited only by proprietary word processors, SGML

or XML for which the DTD and/or processing tools are not generally available,

and the machine-generated HTML produced by some word processors for output

purposes only.

 

The "Title Page" means, for a printed book, the title page itself, plus such

following pages as are needed to hold, legibly, the material this License

requires to appear in the title page. For works in formats which do not have

any title page as such, "Title Page" means the text near the most prominent

appearance of the work's title, preceding the beginning of the body of the

text.

---------------------------------------

 

2. VERBATIM COPYING

 

You may copy and distribute the Document in any medium, either commercially

or noncommercially, provided that this License, the copyright notices, and

the license notice saying this License applies to the Document are reproduced

in all copies, and that you add no other conditions whatsoever to those of

this License. You may not use technical measures to obstruct or control the

reading or further copying of the copies you make or distribute. However, you

may accept compensation in exchange for copies. If you distribute a large

enough number of copies you must also follow the conditions in section 3.

 

You may also lend copies, under the same conditions stated above, and you may

publicly display copies.

---------------------------------------

 

3. COPYING IN QUANTITY

 

If you publish printed copies of the Document numbering more than 100, and

the Document's license notice requires Cover Texts, you must enclose the

copies in covers that carry, clearly and legibly, all these Cover Texts:

Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover.

Both covers must also clearly and legibly identify you as the publisher of

these copies. The front cover must present the full title with all words of

the title equally prominent and visible. You may add other material on the

covers in addition. Copying with changes limited to the covers, as long as

they preserve the title of the Document and satisfy these conditions, can be

treated as verbatim copying in other respects.

 

If the required texts for either cover are too voluminous to fit legibly, you

should put the first ones listed (as many as fit reasonably) on the actual

cover, and continue the rest onto adjacent pages.

 

If you publish or distribute Opaque copies of the Document numbering more

than 100, you must either include a machine-readable Transparent copy along

with each Opaque copy, or state in or with each Opaque copy a

publicly-accessible computer-network location containing a complete

Transparent copy of the Document, free of added material, which the general

network-using public has access to download anonymously at no charge using

public-standard network protocols. If you use the latter option, you must

take reasonably prudent steps, when you begin distribution of Opaque copies

in quantity, to ensure that this Transparent copy will remain thus accessible

at the stated location until at least one year after the last time you

distribute an Opaque copy (directly or through your agents or retailers) of

that edition to the public.

 

It is requested, but not required, that you contact the authors of the

Document well before redistributing any large number of copies, to give them

a chance to provide you with an updated version of the Document.

---------------------------------------

 

4. MODIFICATIONS

 

You may copy and distribute a Modified Version of the Document under the

conditions of sections 2 and 3 above, provided that you release the Modified

Version under precisely this License, with the Modified Version filling the

role of the Document, thus licensing distribution and modification of the

Modified Version to whoever possesses a copy of it. In addition, you must do

these things in the Modified Version:

 

 A. Use in the Title Page (and on the covers, if any) a title distinct from

    that of the Document, and from those of previous versions (which should,

    if there were any, be listed in the History section of the Document). You

    may use the same title as a previous version if the original publisher of

    that version gives permission.

  

 B. List on the Title Page, as authors, one or more persons or entities

    responsible for authorship of the modifications in the Modified Version,

    together with at least five of the principal authors of the Document (all

    of its principal authors, if it has less than five).

  

 C. State on the Title page the name of the publisher of the Modified Version,

    as the publisher.

  

 D. Preserve all the copyright notices of the Document.

  

 E. Add an appropriate copyright notice for your modifications adjacent to the

    other copyright notices.

  

 F. Include, immediately after the copyright notices, a license notice giving

    the public permission to use the Modified Version under the terms of this

    License, in the form shown in the Addendum below.

  

 G. Preserve in that license notice the full lists of Invariant Sections and

    required Cover Texts given in the Document's license notice.

  

 H. Include an unaltered copy of this License.

  

 I. Preserve the section entitled "History", and its title, and add to it an

    item stating at least the title, year, new authors, and publisher of the

    Modified Version as given on the Title Page. If there is no section

    entitled "History" in the Document, create one stating the title, year,

    authors, and publisher of the Document as given on its Title Page, then

    add an item describing the Modified Version as stated in the previous

    sentence.

  

 J. Preserve the network location, if any, given in the Document for public

    access to a Transparent copy of the Document, and likewise the network

    locations given in the Document for previous versions it was based on.

    These may be placed in the "History" section. You may omit a network

    location for a work that was published at least four years before the

    Document itself, or if the original publisher of the version it refers to

    gives permission.

  

 K. In any section entitled "Acknowledgements" or "Dedications", preserve the

    section's title, and preserve in the section all the substance and tone

    of each of the contributor acknowledgements and/or dedications given

    therein.

  

 L. Preserve all the Invariant Sections of the Document, unaltered in their

    text and in their titles. Section numbers or the equivalent are not

    considered part of the section titles.

  

 M. Delete any section entitled "Endorsements". Such a section may not be

    included in the Modified Version.

  

 N. Do not retitle any existing section as "Endorsements" or to conflict in

    title with any Invariant Section.

  

 

If the Modified Version includes new front-matter sections or appendices that

qualify as Secondary Sections and contain no material copied from the

Document, you may at your option designate some or all of these sections as

invariant. To do this, add their titles to the list of Invariant Sections in

the Modified Version's license notice. These titles must be distinct from any

other section titles.

 

You may add a section entitled "Endorsements", provided it contains nothing

but endorsements of your Modified Version by various parties-for example,

statements of peer review or that the text has been approved by an

organization as the authoritative definition of a standard.

 

You may add a passage of up to five words as a Front-Cover Text, and a

passage of up to 25 words as a Back-Cover Text, to the end of the list of

Cover Texts in the Modified Version. Only one passage of Front-Cover Text and

one of Back-Cover Text may be added by (or through arrangements made by) any

one entity. If the Document already includes a cover text for the same cover,

previously added by you or by arrangement made by the same entity you are

acting on behalf of, you may not add another; but you may replace the old

one, on explicit permission from the previous publisher that added the old

one.

 

The author(s) and publisher(s) of the Document do not by this License give

permission to use their names for publicity for or to assert or imply

endorsement of any Modified Version.

---------------------------------------

 

5. COMBINING DOCUMENTS

 

You may combine the Document with other documents released under this

License, under the terms defined in section 4 above for modified versions,

provided that you include in the combination all of the Invariant Sections of

all of the original documents, unmodified, and list them all as Invariant

Sections of your combined work in its license notice.

 

The combined work need only contain one copy of this License, and multiple

identical Invariant Sections may be replaced with a single copy. If there are

multiple Invariant Sections with the same name but different contents, make

the title of each such section unique by adding at the end of it, in

parentheses, the name of the original author or publisher of that section if

known, or else a unique number. Make the same adjustment to the section

titles in the list of Invariant Sections in the license notice of the

combined work.

 

In the combination, you must combine any sections entitled "History" in the

various original documents, forming one section entitled "History"; likewise

combine any sections entitled "Acknowledgements", and any sections entitled

"Dedications". You must delete all sections entitled "Endorsements."

---------------------------------------

 

6. COLLECTIONS OF DOCUMENTS

 

You may make a collection consisting of the Document and other documents

released under this License, and replace the individual copies of this

License in the various documents with a single copy that is included in the

collection, provided that you follow the rules of this License for verbatim

copying of each of the documents in all other respects.

 

You may extract a single document from such a collection, and distribute it

individually under this License, provided you insert a copy of this License

into the extracted document, and follow this License in all other respects

regarding verbatim copying of that document.

---------------------------------------

 

7. AGGREGATION WITH INDEPENDENT WORKS

 

A compilation of the Document or its derivatives with other separate and

independent documents or works, in or on a volume of a storage or

distribution medium, does not as a whole count as a Modified Version of the

Document, provided no compilation copyright is claimed for the compilation.

Such a compilation is called an "aggregate", and this License does not apply

to the other self-contained works thus compiled with the Document, on account

of their being thus compiled, if they are not themselves derivative works of

the Document.

 

If the Cover Text requirement of section 3 is applicable to these copies of

the Document, then if the Document is less than one quarter of the entire

aggregate, the Document's Cover Texts may be placed on covers that surround

only the Document within the aggregate. Otherwise they must appear on covers

around the whole aggregate.

---------------------------------------

 

8. TRANSLATION

 

Translation is considered a kind of modification, so you may distribute

translations of the Document under the terms of section 4. Replacing

Invariant Sections with translations requires special permission from their

copyright holders, but you may include translations of some or all Invariant

Sections in addition to the original versions of these Invariant Sections.

You may include a translation of this License provided that you also include

the original English version of this L

About this document ...

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

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -toc_depth 1 -show_section_numbers -auto_navigation --iso_language BG -no_footnode -split 0 -link 1 -local_icons pht-bg.tex

The translation was initiated by on 2001-11-25


2001-11-25