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 - подобни операционни системи.
Бележка на преводача: ще приемам с благодарност всички забележки и коментари по превода, дори и дребни.
"Как да отпечатваме под Linux" би трябвало да съдържа всичко, което ви е необходимо да знаете, за да можете да настроите услугите за печат на вашата Linux машина/и. Както обикновенно става в живота, това е малко по - сложно от посочи - с - мишката - и - щракни светът на Microsoft и Apple, но освен това то е по - гъвкаво, и със сигурност по - лесно за администриране на големи локални мрежи.
Настоящият документ е структуриран по такъв начин, че за мнозинството от четящите го ще е достатъчно да прочетат първата половина от него (приблизително). По - мъглявата и зависима от различните ситуации информация е концентрирана главно във втората половина; тя може лесно да бъде открита в Съдържанието. За мнозинството от хората навярно най - важно ще бъде да прочетат написаното в глави 10 и 11.
Ако намирате този документ, или Интернет страницата LinuxPrinting.org за ползотворни, не пропускайте шанса да си купите нещо (мастило например), като проследите съответните връзки на страницата; такива покупки подпомагат страницата и документа.
Тъй като версиите 3.х и нагоре са изцяло пренаписани, липсва много от информацията от предишните редакции на документа. Това е направено умишлено,понеже по - старите версии достигаха големина от 60 печатни страници и нагоре. Ако не откриете отговора на вашия въпрос тук, ви препоръчвам следното: а)прегледайте по - старите версиин на адрес LinuxPrinting.org , и б)напишете ми писмо за това какво трябва да съдържа документа, а го няма.
LinuxPrinting.org е правилното място за откриване на последната версия; естествено, документа се публикува от metalab.unc.edu , и неговите най - близки до вас огледални копия на LDP.
Старал съм се да използвам еднаква терминология в целия домумент, с оглед на това и потребителите на свободни Unix - подобни операционни системи (ОС), и тези с други ОС, използващи свободен софтуер, да имат полза от написаното. За беда се срещат много нееднозначни термини, а освен тях има и много проблематични еднозначни термини; за да бъдат ясни нещата, по - долу съм изложил малък речник на използваните термини:
В момента четете четвъртото поколение на документа "Как да печатаме подLinux". Ето накратко неговата история:
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 според условията на Лиценза за Свободна Документация, и следва да се разпространява съобразно този Лиценз.
Най - бързият начин да започнете да отпечатвате е да използвате съответните инструменти за настройка, предоставени от доставчика ви. Изхождайки от преположението, че в тях има поддръжка за драйвер за вашия принтер, и също така предполагайки, че вашият доставчик ви е предоставил този драйвер, следва основните настройки да бъдат направени лесно и бързо по този начин. Повече информация за инструментите за настройка, предоставяни от различните доставчици, можете да намерите в част 9.
Ако не се получи с инструментите на доставчика ви, би трябвало да си изясните дали въобще ще можете да ползвате вашия принтер. Проверете списъка на съвместимите принтери в част 5.3.1, а също и в споменатата тук Интернет страница.
Ако има работещ драйвер за вашия принтер, проверете дали разполагате с този драйвер, и се снабдете с него ако го нямате. В повечето случаи ще можете да намерите Ghostscript пакет, включващ нови и предоставени от трета страна драйвери. Ако не намерите, може да си компилирате сами; това не е лека задача, но за сметка на това е добре документирана. в част 10 можете да намерите повече информация за Ghostscript.
След като инсталирате драйвера, опитайте отново да направите настройките за принтера си с помощта на инструментите на доставчика ви. В случай на неуспех, изберете си някой от предоставяните от трета страна инструменти, описани в част 8. Ако и така не успеете, ще трябва сами да направите настройките; отново погледнете в част 8.
Ако и след това резултата е несполучлив, ще трябва да проверите дали не грешите някъде. Вероятно ще бъде най - добре първо да прочетете целия документ, за да придобиете усещане как работят нещата; така ще бъдете в по - добра позиция при търсене на грешки.
В Usenet групите comp.os.linux.hardware, comp.os.linus.setup, и comp.periphs.printers има множество общи запитвания, свързани с разпечатването. Въпросните групи са много посещавани, и със сигурност там можете да се намери отговор; проверете също и в архивите на Deja.com. Аз също съм създал няколко linuxprinting.foo новинарски групи; те са достъпни едновременно и като форуми на Интернет страници, и през NNTP; вижте на страницата в Интернет.
Поразровете се също така и в Интернет за решение на вашия проблем. Като начало би било добре да погледнете на LinuxPrinting.org; там има връзки към други станици и проекти. Получавам множество писма с въпроси, отговорите на които могат да бъдат намерени на моята страница, или в документацията доставена ви с принтера.
Ако ви е необходима допълнителна помощ, моля опитайте с новинарските групи, кореспондентските списъци, отдела за поддръжка на вашия доставчик, и т.н., преди да попитате мен. Въпреки че се опитвам да отговоря на всяко писмо, което съм получил, на практика не съм успял да изпратя отговор на около 10 % от получените през последната година писма. И нещата ще се влошават за в бъдеще. Ако все пак искате да се свържете с мен, направете го чрез форумите на LinuxPrinting.org; така ще имате шанс да получите отговори и от други хора, като същевременно въпросът ви, и евентуалните отговори, ще останат на публично място в архива.
На практика вие използвате различни команди, когато искате да печатате, в зависимост от софтуера за управление на печат който използвате.
Мнозинството от операционните системи в наше време се доставят с lpd, така че тази част се явява неприложима. Нека го кажа сега, аз препоръчвам на хората да инсталират и използват PDQ в мнозинството от случаите, вместо (или като добавка към) lpd. PDQ е навярно най - лесна за разбиране и ползване, докато CUPS е сред по - мощните системи, предназначени за много по - опитни потребители. И при двете системи поддръжката на различни настройки по принтерите, и възможностите за интересни конфигурации, са много по - добри, отколкото при LPD.
Когато използвате PDQ, вместо командата lpr трябва да използвате командите pdq или xpdq. И двете работят почти като lpr, т.е. те отпечатват зададените им файлове, или стандартния вход ако не е зададен файл.
Xpdq е приложение за X Windows, което показва списък от наличните принтери и обобщена информация за опашката от задачи за отпечатване (включваща текущите и предишни задачи). Във File менюто има предостваени две възможности - едната е да се отпечатват определени файлове, а другата - да се отпечатва стандартния вход. Във диалога Driver Options, можете да изберете каквито искате настройки, от зададените за вашия драйвер за принтера; обикновено се избира дали да се дуплексира, каква да бъде разделителната способност, какъв вид хартия се използва, с какви размери, и т.н.
Командата за отпечатване от команден ред при PDQ системата е наречена просто pdq. В мнозинството от ситуациите тя може да се използва на мястото на lpr; тя възприема -Р аргумента за определяне на принтер. Също както и lpr, pdq отпечатва или зададения файл (файлове), или стандартния вход.
Настройките за принтера могат да се променят посредством -о и -а аргументите.
Ако вече сте настроили lpd системата да отпечатвате на принтера си, или вашия системен администратор е направил това, или пък вашият системен доставчик, тогава всичко, което трябва да направите, е да научите как да използвате командата lpr. Документа "Printing Usage HOWTO" изчерпателно покрива тази тема, както и някои допълнителни подробности, касаещи управлението на опашката за отпечатваните задачи. Можете също така просто да прочетете man страницата на lpr(1).
Казано с прости думи, трябва да посочите името на опашката за печат с -Р, и да зададете името на файла, който ще отпечатвате (или нищо, ако печатате от стандартния вход). По традиция настройките на драйвера не могат да се променят от lpr, но различните системи понякога приемат определени аргументи като -o, -Z, или -J.
Болшинството от системите за отпечатване, сами по себе си, предоставят като средство за общуване само най - основни команди за командния ред. Възможно е, вместо да използвате директно lpr, да пожелаете да придобиете и използвате по - обогатен интерфейс. Лесните за използване графични интерфейси, като цяло, дават възможност да се променят множество от настройките за разпечатване (например кой принтер, какъв тип хартия, и др.). Е, някои от тях могат да имат и допълнителни възможности.
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.
Ако използвате CUPS и KDE, навярно бихте спряли избора си на QtCUPS - един приятен инструмент за управление на CUPS - разпечатването с графичен интерфейс. Заедно с него получавате и библиотека, която се грижи за тясната взаимообвързаност с KDE средата; разработчиците на KDE могат с минимални изменения да поддържат CUPS разпечатването през QtCUPS.
Също както в XPP, в QtCUPS наскоро добавиха цифрови настройки за поддръжка на Foomatic, така че свободни драйвери за CUPS с Foomatic ще бъдат напълно контролируеми от графичния интерфейс.
Друг добър избор за CUPS представлява програмата XPP (вж. Фигура 5). XPP и изграден на основите на библиотеката FLTK, и следователно признава единствено графичния интерфейс.
За да разпечатате нещо с ХРР, просто стартирайте програмата хрр и посочете файл за печат (или нищо, в случай че използвате хрр на мястото на lpr за разпечатване от стандартния вход). След това изберете принтер от списъка с конфигурираните принтери, и направете желаните от вас настройки по различните панели. На Фигура 6 можете да видите примерен панел със стандартни CUPS настройки .
Когато се използва с моята система за драйверен интерфейс Foomatic, ХРР ще ви позволи да използвате и цифрови параметри, за които няма поддръжка в CUPS. Сред тях обикновено са неща като разширено управление на цветовете, изравняване на касетата, и т.н. На Фигура 7 можете да видите такъв пример.
Можете да запазите всички промени, които сте направили по настройките, като натиснете бутона 'Save Settings'.
PDQ лесно може да се настрои да отпечатва към опашките за печат на мнозинството от използваните системи, а синтаксисът на настройките му позволява много лесно да се дефинират каквито пожелаете филтри и потребителски настройки за отпечатваните неща. Следователно можете много успешно да използвате xpdq за посредник на LPD - разпечатването.
За повече информация вижте в част 6.2.
Има два напълно различни драйвера за паралелния порт; кой от драйверите ще използвате, зависи от версията на ядрото ви (последното можете да разберете с командата uname -a). Драйверът беше променен във версията на ядрото 2.1.33; на практика всички съвременни системи използват ядра с версия 2.2 или по - висока, така че спокойно можете да скочите оттук направо на разела за parport устройството.
Има наколко детайла, които са общи за двата драйвера. И най - вече следното: много хора откриват че Linux не може да открие паралелният порт на компютъра им, докато не забранят "Plug and Play" във BIOS. (Това не е изненадващо; проблемите със PnP при не-PCI устройства при Windows и въобще навсякъде са близо до бедствени).
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
Започвайки от ядро 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 драйвер.
Най - често срещаните проблеми с това устройство произлизат обикновено от неправилната му настройка:
Серийните устройства под 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" на серийният порт за отпечатване, както и други негови параметри.
Аз нямам на разположение USB устройство, така че всичко което мога да предложа е само насочващо. След като си направите настройките веднъж, ще имате на разположение файлът за устройство /dev/usb/lp0, който, подобно на този за паралелния порт, можете да посочите в printcap, или като местно устройство на PDQ.
USB е добре документирана в Интернет страницата Linux USB. Би трябвало да имате някакви, малки или големи успехи, с по - късните версии на ядрата 2.2 и с всички версии на ядро 2.4.
Linux ядрото позволява да "говорите" на почти всички принтери, които се включват към серийния, паралелния , или USB порт, плюс всеки принтер в мрежата. За съжаление, само това не е достатъчно; трябва също да можете да генерирате информация, която принтерът разбира. Основната част от несъвместимите принтери са тези, обозначававани като "Windows" или "GDI" принтери. Те са наречени така, понеже всичко, или поне една част от език за управление на принтера и конструктивните детайли на механизма му за печатане не са документирани. Обикновено производителите на такива принтери доставят драйвери за Windows, и спокойно ги продават на потребители на Windows; затова и тези принтери биват наричани Win-принтери. Има и случаи, в които производителя доставя драйвери за NT, OS/2 или друга операционна система.
Много от въпросните принтери не работят със свободен софтуер. Някои от Win - принтерите работят, а други само донякъде (обикновено защото някой, използвайки реверсивно инжинерство е установил детайлите, необходими за написване на драйвер). Вижте по - долу списъка с поддържаните принтери за повече подробности за определени модели.
Някои от принтерите заемат междинно положение между двете крайности. Част от моделите на NEC например, предоставят проста форма на поддръжка на стандартния език за отпечатване PCL, което позволява на ползващите софтуер, "говорещ" PCL, да отпечатват с 300dpi, но само NEC знаят как да извадят от тези принтери 600dpi отпечатка.
Имайте пред вид, че ако вече притежавате такъв Win-принтер, могат да се намерят заобиколни начини да се отпечатва на тях от Linux машина, но те не са много лесни, и аз лично не съм ги изпробвал. Във част 12 на настоящия документ можете да намерите повече информация за този тип принтери.
Говорейки за това кои принтери работят със свободен софтуер, най - добрият избор е да си купите принтер, имащ вградена във вътрешното програмно осигуряване (firmware) поддръжка за Postscript. Почти целия софтуер за Un*x, използван за обработване материали за печат, дава като краен резултат информация в Postscript формат, така че очевидно би било хубаво да притежавате принтер, който директно поддържа Postscript. За съжаление тази поддръжка се среща най - вече при лазерните принтери, и в някои случаи се явява скъпа добавка.
Софтуерът по Un*x, а също и книгоиздателската индустрия като цяло, са спрели избора си за предпочитан език за управление на принтери на Postscript. Това се е случило по няколко причини:
Отказвайки се от (големия) бюджет, необходим за закупуването на Postscript принтер, на вас ви остава да използвате кой да е принтер, поддържан от Ghostscript - свободният Postscript интерпретатор, използван като заместител на вградената поддръжка на Postscript в принтерите. Трябва да се отбележи, че съобразявайки се с лиценза му, мнозинството от GNU/Linux дистрибуциите се разпространяват с малко остарели версии на Ghostscript. За щастие, обикновенно винаги може да се намери поготвена последната версия на Ghostscript в областта contrib на всяка дистрибуция.
Понастоящем Adobe имат нов език за принтери, наречен PrintGear. Мисля, че това е доста опростен език в двоичен формат, имащ свойства като Postscript, но несъвместим с него. И не съм чувал той да се поддържа от Ghostscript. Но някои от поддърржащите PrintGear принтери изглежда поддържат и друг език като PCL, и те биха могли да работят с GNU/Linux (ако PCL езикът е въведен в принтера а не във Windows драйвера).
Ако искате да си купите принтер, можете да проверите предварително на много места дали той ще работи. Целта на съвместно поддържаната база данни за принтери към "Printing HOWTO" е да дава разбираема оценка за състоянието на поддръжката на печата в GNU/Linux. По - долу можете да намерите част от нея; не пропускайте да проверите страницата в Интернет за повече детайли и информация кой драйвер да използвате.
За тези от вас, които искат да си купят нов принтер, най - добре ще бъде да се консултират със списъка от предлаганите от мен принтери. В този списък има предимно цветни мастиленоструйни и монохромни лазерни принтери. Имате възможност да подкрепите настоящия документ, и страницата в Интернет, като проследите някоя от връзките там към различни производители, си купите нещо от тях.
На страницата за съвместими принтери на Ghostscript има списък от работещи принтери, а също и връзки към други страници.
На Dejanews можете да откриете стотици съобщения, от типа на "това работи", и "това не работи". Проверете и на трите места, и когато сте готови, увверете се дали вашият принтер е правилно вписан в базата данни. Ако не е, изпратете вашата информация, така че за в бъдеще той да бъде вписан правилно в този документ.
Изброеното тук представлява обобщение на станицата в Интернет. Последната включва основни параметри на принтерите, бележки, връзки към информация за драйвери, поддържана от други потребители документация, Web страници на производителите, и интерфейсни скриптове за използването на драйвери с различни системи за печат (в това число LPD, LPRng, PDQ и CUPS). Версията на този списък в Интернет освен това е жизнена - хората могат да добавят информация по всяко време, така че проверявайте я по - често. И накрая, ако вашият принтер го няма в списъка - добавете го!
Имайте пред вид, че настоящият списък не е евангелие; хората понякога добавят неправилна информация, която аз все някога ще отстраня. Вписвания, които аз лично не съм проверил дали са верни, са отбелязани със звездичка (*). Проверете на Dejanews, дали някой е успял да накара съответния принтер от този списък да работи, преди да си го купите. Ако не можете да откриете информация в Dejanews, пишете ми, и аз ще ви свържа с човекът, направил вписването за съответния принтер.
Принтерите са категоризирани в три типа.
И без повече приказки, ето го и самия списък на съвместимите принтери:
Вписванията, отбелязани със звездичка (*), са частично подозрителни.
Малко е трудно да се избере принтер в наши дни; произвеждат се много модели, сред които можете да избирате. Ето и някои съвети при пазаруването:
Аз притежавам 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 жак. Единствения му недостатък е, че не позволява двупосочна комуникация, и аз не мога да уредя нещата така, че да получавам електронна поща, когато мастилото свърши.
До скоро изборът на потребителите на Linux беше прост - всички използваха все същия стар lpd , пренесен почти дословно от първичния код на BSD Net-2. Дори и в наши дни, мнозинството от доставчиците на софтуер продължават да го включват в дистрибуциите си. Но нещата вече почват да се променят. Системи от типа SVR-4, включително Solaris на Sun, се доставят със съвсем различен софтуер за управление на печата, базиран основно на lpsched.
В наши дни има няколко добри системи, между които може да се избира. Описъл съм ги всички по - долу в документа; PDQ е най - простата съвременна система с графичен интерфейс; тя е подходяща както за редови домашни потребители, така и за хора, работещи с големи мрежи (в съчетание с LPD). За бизнес среди, където обикновено има мрежови Postscript принтери, програмата за крайни потребители GPR в съчетание с LPRng е добра алтернатива; тя борави директно с PPD настройките, и има малко по - малко хубав интерфейс. В други ситуации е добре да се избере CUPS; в него също има отлична поддръжка за Postscript принтери, а освен това предлага и поддръжка за IPP, има интерфейс за браузър, и още доста други особености.
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.
Ако сте се спрели на LPD, най - добрия начин да го използвате е посредтвом приложения за крайни потребители. Можете да избирате между няколко такива; GRP (вж. част 3.3) и XPDQ (вж. част 6.2) са навярно най - добрите. Има и други; разкажете ми за тях ако ги познавате.
PDQ е система за управление на печата без централен демон, която има вграден, разумен синтаксис за настройки на драйвери. Тя предоставя възможност да се декларират настройки за печат, и предлага на потребителите приложения за команден ред или с графичен интерфейс, с които да се извършат тези настройки; пред потребителя излиза една красива диалогова кутия, в която могат да се изберат желаната разделителна способност, вида на хартията, и т.н. (вж. Фигура 8)
Стартирането на всичките филтри на системата ви дава големи предимства като потребител: възможните проблеми със сигурността от Postscript вече почти липсват, могат да се печатат множество свързани LATEX файлове, и други.
Аз използвам тази система понастоящем; написал съм си файлове със настройки за моите принтери; много такива файлове идват наготово с дистрибуцията, така че има достатъчно примери как и вие да си направите своите. Създал съм също така няколко помощни инструмента, с които се автоматизира създаването на настройки за драйверите, за да помогна на всички вас.
PDQ не без недостатъци: най забележимия е, че обработва цялата задача за печат, преди да я изпрати на принтера. Това означава, че за големи задачи PDQ може да бъде просто непрактично; стотици мегабайти ще се копират напред - назад по твърдия ви диск. Още по -лошо, при бавни драйвери, като тези на качествените мастиленоструйни принтери, задачата няма да почне да се отпечатва преди Ghostscript и драйвера да завършат обработката и. Това може да отнеме много минути след подаването и за печат.
Ако имате много потребители, много принтери, или каквaто и да е сложнa сistema, ви препоръчвам да използвате PDQ като лицева част на основано на LPD - протокол мрежово отпечатване (можете да отпечатвате чрез lpd - протокола на локалната машина). В много ситуации бих ви препоръчал да използвате като основа на разпечатващата система не стария lpd на BSD, а 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.
PPR e Postscript-центрична система за буфериране на печата, със способност да изследва Postscript материалите в сурово състояние, благодарение на която PPD има някои много хубави черти. Тя предоставя добри възможности за отчетност, добра поддръжка за Appletalk, SMB, и LPD клиенти, и много по - добра система за управление на грешките, отколкото lpd. PPR, както и всички описани тук системи, може да извиква Ghostscript в случай на работа с неподдържащи Postscript принтери.
Научих съвсем наскоро за PPR; не знам някой да е изпробвал тази система. Тя е създадена, и се използва в Trinity College. Лицензът и е в стил BSD - свободна за всички, като се изисква посочване на създателите.
Изхождайки от написаното в документацията и, тя е донякъде експериментална. Неправилни Postscript задачи не се отпечатват; вместо това те се връщат, и за потребителя остава задачата да коригира Postscript. Това прави използването на системата не особено подходящо в някои ситуации, макар че мнозинството от потребителите генерират Postscript с някой от малкото, добре известни генератори на Postscript, така че в крайна сметка това не е от голяма важност.
Едно интересно ново лице на сцената е "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:
За да работи добре системата за печат, трябва да знаете как работи вашата система за буфериране на печата. По прицип всички системи работят по един и същи начин, макар и редът в който се изпълняват операциите да не е един и същ навсякъде, и някои системи да изпускат стъпка или две:
Pdq идва от "Print, Don't Queue" (буквално:"печатай, не буферизирай"), и начина по който работи напълно съответства на името му. Когато използвате PDQ за да отпечатате нещо, се случва следната последователност от събития:
Lpd идва от Line Priner Daemon (демон за печат на линейни принтери), и когато се говори за него в различни случаи, се имат предвид и демона, и сбора от програми за управление системата за печат. Те са:
Има много програми, подпомагащи написванетона LPD филтър. Сред тях са:
В стандартни ситуации бихте могли изцяло да прескочите тази част от документа, и да отидетена частта по - долу, в която са описани решенията на Системните доставчици, или още по - добре - направо на документацията на доставчиците. Мнозинството от GNU/Linux дистрибуциите се доставят с един или повече "глупакоустойчиви" инструменти (приложения), с които може да се направи всичко описано тук за често срещаните принтери.
В случай, че въпросните инструменти на доставчиците дадат неудовлетворителни резултати, или имате желание непосредствено да оказвате влияние на настройките за печат, когато отпечатвате, би трябвало да изполвате някоя друга система. PDQ е един добър избор; той е функционален и лесен за настройка. Друга добра система е APS Filter; тя безпроблемно конфигурира опашките и филтрите на LPD при мнозинството от Unix системите.
Можете също така да използвате интерфейсите за системи за печат от Интернет страницата LinuxPrinting.org, като свръзка между множеството свободни драйвери и няколкото състеми за буфериране печата. Когато проекта бъде завършен, тези интерфейси ще предлагат най - добрата функционалност: те поддържат всички видове свободни драйвери, има възможност потребителят да си избира настройки, и се поддържат всички системи за буферизация на печата.
Конфигурирането на PDQ може да се направи както от root, така и от всеки редови потребител на системата. Първият извършва промени във файла /etc/printrc ; тези промени влияят на всички. Вторите могат само да променят личния си файл .printrc Всичко описано по - долу, важи и за двата вида конфигуриране.
Ако PDQ не е част от вашата дистрибуция, можете да вземете първичния му код от домашната страница в Интернет на PDQ , и да си го компилирате сами. Компилирането протича лесно, в случай че предварително сте проверили дали в системата ви са инсталирани необходимите за случая разнообразни библиотеки за разработка на GTK, библиотеките за разработка на С, компилатора gcc, make, и навярно още няколко неща за разработчици.
PDQ системата позволява на потребителя си да избере на кой принтер да се извърши разпечатването. В PDQ принтерът се дефинира като съвкупност от "драйвер" и "интерфейс". И драйверът, и интерфейса, на практика представляват отделни участъци от текст във конфигурационния файл на PDQ.
PDQ интерфейсът казва всичко, относно това как да бъде изпратена информацията до принтера. Най - изпозлваните интерфейси, които могат да се открият и в предварително подготвения към дистрибуцията printrc файл са:
Ако някой от включените в PDQ драйвери не е подходящ за вашия принтер, прочетете по - долу как можете сами да си го напишете.
За да дефинирате принтер в PDQ:
Сега ще ви преведа стъпка по стъпка през процеса на създаване на драйвер за PDQ. Преди да направите това обаче, потърсете из множеството възможни места дали вече няма готов:
Сега, нека да преминем през етапите на създаване на драйвер за принтер, който в базата данни е посочен като работещ, но не можете да намерите драйвер за него. Ще използвам за пример принтера Canon BJC-210.
Първо, поглеждаме какво е вписването в базата данни за този принтер. Забележете, че за него има отлична поддръжка - wписан е като "отличенн", и следователно може да очакваме да получим сравними (или по - добри) резултати от Windows потребителите. Важната информация е на две места във вписването:
В списъка от драйвери за този принтер има драйвери за два модела - 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.
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(<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(<INPUT>) {
chomp;
print OUTPUT, "$_\r\n";
}
}
}
}
В случай, че искате да добавяте нещо в началото или края на всяка задача за печат, или да правите някъкъв вид преобразуване върху цялата информация от всеки тип, трябва да го направите в подраздела 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
}
}
Мнозинството от GNU/Linux системите се разпространяват с LPD. Тук ще бъде описана съвсем основна настройка на 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 не се справят достатъчно добре с 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 директно.
Веднъж след като сте настроили LPD системата с Postscript възможности на VA, вие можете да управлявате настройките на принтера си по два начина:
За да използвате GRP, първо трябва да се уверите, че сте определили правилния PPD файл. След това настройките на принтера ще бъдат достъпни за вас в панела "Advanced". Основните настройки на ppdfilt ще бъдат достъпни от панела "Common".
Тази команда 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 файла. Сред тях са:
П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 бита на тези програми.
Големите системи, под което разбирам мрежи с два или повече принтера или сървъра, имат специални изисквания. По - долу има някои съвети. При наистина големи системи, простото боравене с информацията в printcap/filters може да се превърне в сложен проблем; Cisco Enterprise Print System е подходящо решение за такива ситуации, като добра отправна точка, или като завършено решение, в зависимост от нуждите ви. В средни до големи системи ще се чувствате добре с вградените особености на LPRng.
Обикновения 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.
Тази част от документа по дефиниция е незавършена. Чувствайте се свободни да ми изпращате подробности за вашите любими дистрибуции. Понастоящем не ми е известно да има дистрибуция която да поддържа, или дори да доставя, софтуерът, който аз препоръчвам за единични потребители: PDQ. Няколко дистрибуции вече имат поддръжка за CUPS, системата с най - голяма функционалност за момента; някои дори използват моят основан на база данни конфигурационен инструмент.
Има множество предоставяни от трети страни пакети за улесняване настройките по печата в Unix. Те са разгледани в част 8; за подробности вижте подсекциите там.
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.
Дистрибуцията Debian предлага избор между стандартния lpd, LPRng и CUPS; LPRng или CUPS са навярно по - добрият избор. PDQ се предлага в нестабилната версия (понастоящем наречена sid) на дистрибуцията. Debian предоставя също и разнообразни инструменти за конфигуриране на печата; версия 5 или следваща на apsfilter е най - доброто, на което можете а заложите, тъй като в тази версия има поддръжка аа схемата за uniprint драйвери на LPRng и Ghostscript.
Системата за печат на дистрибуцията SuSE Linux се основава на apsfilter, с хякои разширения; при SuSE apsfilter разпознава всички често срещани файлови формати (включително HTML, ако е инсталиран html2ps). Съществуват два начина да се настрои печат при SuSE системите:
Wolf Rogner ми изпрати впечатленията си за затрудненията които е изпитал при настроиването на печата със SuSE. Може да ви се случат някои от следните неща:
Caldera предлага LPRng. Нямам представа какви инструменти за конфигуриране се предлагат.
Наскоро назначих служител на Caldera да поддържа базата данни на Linuxprinting.org; очевидно те смятат за в бъдеще да предлагат основани на CUPS и Foomatic системи за печат.
Corel се базира на Debian, така че всичко, казано по - горе за Debian важи и тук. Има добавен и собствен инструмен за настройка, основаващ се на библиотеката sysAPS, която от своя стрна използва моята база от данни. Със сигурност са я направили като част от WordPerfect.
Corel поддържат нюзгрупата corelsupport.linux.printing. Болшинството от приказките в нея са за WordPerfect и CorelLinux.
Версия 7.2b1 на Mandrake се предлага стандартно с CUPS. Програмата QtCUPS осигурява чисто фрафичен административен интерфейс. Имаха някои проблеми да включат колкото е възможно повече драйвери, и затова предоставят CUPS PPD файлове, изградени с кода на моя интерфейс foomatic.
Мисля, че по - ранните версии на Mandrake се предлагаха с с инструмента на RedHat printtool.
Slackware пристига с APS Filter. SETUP скриптът от apsfilter се инсталира като команда apsfilterconfig. Би трябвало да успеете да направите подходящи настройки просто като я стартирате.
Възможно е Slackware да включва и други системи; не разполагам с дистрибуцията, за да се запозная с нея.
Моля, изпратете ми информация какво е направено по въпроса в другите дистрибуции!
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-принтер.
Най - често Ghostscript бива стартиран от филтъра, който сте избрали (аз ви препоръчвам apsfilter, ако вашият доставчик не предоставя нищо, което да ви върши работа), но също така е много удобно да го стартирате самостоятелно на ръка, за да проверявате за евентуални грешки.
Изпълнявайки командата gs -help ще получите кратък списък от наличните настройки и драйвери (имайте пред вид, че това е списъка от вградените при компилирането драйвери, а не главния списък с всички налични драйвери).
За да изпитате работата на Ghostscript или даден файл, можете да изпълните следната примерна команда: gs OPTIONS -q -dSAFER -sOutputFile=/dev/lp1 test.ps
Има множество настройки, които бихте могли да промените, в случай че изхода от gs не ви удовлетворява (в действителност, можете да правите каквито ви хрумнат дяволии, стига това да ви доставя удоволствие - все пак разполагате с първичния код).
Някои от тези настройки, както и други, описани в потребителското ръководство на Ghostscript (файлът Use.htm в Ghostscript дистрибуцията; вероятно се намира в /usr/doc или /usr/share/doc на вашата система) са чудесни кандидати за драйверни настройки във вашата филтрираща система, или в декларациите за драйвери на PDQ.
Местоположението, големината, и съотношението между страните на изображението на една страница се определят от специфичния за принтера драйвер в Ghostscript. Ако сметнете, че вашите страници се отпечатват твърде къси, или твърде дълги, или твърде големи (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.
Стандартният 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 събирането, всички необходими хора говорят за това, така че очаквайте ситуацията да се промени в скоро време.
Една от особеностите на повечето системи за буфериране на печата е, че те поддържат разпечатването през мрежа към принтери, физически свързани към друга машина. С внимателно подбрана комбинация от програми за филтриране, и използвайки ралични полезни приложения, можете да печатате към принтери, свързани във всякакъв тип мрежи.
За да позволите машини от мрежата ви да отпечатват към вашия принтер чрез LPD протокола, трябва да ги изброите във файла /etc/hosts.equiv или /etc/hosts.lpd . (Имайте пред вид, че изброяването на машини в hosts.equiv има странични ефекти; уверете се, че знаете какво правите, когато изписвате името на някоя машина в него.) Може да разрешите само на определени потребители от другите машини да отпечатват на вашия принтер посредством атрибута rs; прочетете man страницата на lpd за повече информация.
Ако използвате PDQ, трябва да дефинирате принтер с интерфейс тип "bsd-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. Ако мрежовата машина, към която е свързан принтера, е заета или няма връзка, задачите за печат от местната машина изчакват в тази директория, докато настане момент да бъдат изпратени.
Можете също да използвате и rlpr, за да изпращате задачите за печат направо на опашката за отпечатване на мрежовата машина, без да е необходимо да правите настройки на lpd. Този вид разпечатване е много уместен в ситуации, където само от време на време се извършва разпечатване към различни принтери. Ето и част от уводните думи към rlpr:
Rlpr използва TCP/IP за да изпраща задачите за печат към lpd сървъри, намиращи се където и да е в мрежата.
За разлика ор lpr, НЕ_Е необходимо мрежовия принтер изрично да е известен на машината, от която печатате (т.е. посредством /etc/printcap) - едно значително по гъвкаво и по - лесно за администриране решение.
rlpr може да се използва навсякъде, където може да се използва традиционното lpr, и е обратно съвместимо с традиционното lpr на BSD.
Най - силната черта на rlpr е способността да се разпечатва дистанционно *отвсякъде навсякъде*, без значение как е конфигурирана машината, от която се печата. Rlpr може да работи като филтър, също както традиционното lpr, така че клиентски програми, работещи по машините в мрежата, като netscape, emacs, и т.н., могат да отпечатват към вашата машина с минимални усилия.
Plpr може да се намери на Metalab
За повече и по - подробна информация от изнесената тук можете да прочетете "Printing to Windows mini-HOWTO".
Не ми е известно да има готов smb интерфейс, но да се направи такъв не е много трудно, използвайки за пример основания на Nettalk appletalk интерфейс. Моля някой да го напише и да го предостави за включване в PDQ!
Прочетете по - надолу частта Windows/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 страницата.
Пакета ncpfs включва и командата nprint, която върши същите неща като smbprint, само че за NetWare. Можете да вземете ncpfs от Metalab. Ето част от краткото описание на ncpfs (версия 0.16):
" С помощта на ncpfs можете да монтирате томове от вашия NetWare сървър на Linux. Можете също да отпечатвате към опашка за печат на NetWare система, и да изпращате за печат от тази опашка към буферната директория за печат на Un*x. Ще ви бъде необходимо ядро с версия 1.2.х или 1.3.54 и по - висока. ncpfs НЕ работи с ядра, имащи версия по - ниска от 1.3.54. "
За да накарате 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 -
Пакетът nettaalk включва инструмент, подобен на nprint и smbclient. Други хора са документирали начините за печат от и към Apple мрежа много по -добре, отколкото аз някога бих могъл; погледнете в "Linux Nettalk-HOWTO".
В PDQ има готов интерфейс, наречен "appletalk". Той използва пакета Nettalk за отпечатване към свързан в Apple мрежа принтер. Просто трябва да изберете този интерфейс в съветника "Add printer" на xpdq.
Много принтери се доставят с 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 услугата, която изобщо не е сигурна. Не ви съветвам да използвате тази възможност.
Съществуват мрежови принтери (и "черни кутии" за мрежов печат), единствената възможна връзка към които може да се направи през 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&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 (<IN>) {
print S;
}
sleep 3;
do dokill();
} else {
while(<S>) {
print;
}
}
sub dokill {
kill 9,$child if $child;
}
По - старите версии на 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 <options> -q -dSAFER -sOutputFile=- - | \
lpr -Plj-5-remote -U$5
Аргумента -U към lpr върши работа само ако lpr работи като демон; с него се установява правилно името на изпратилия задачата за печат в опашката за повторно изпратените задачи. Добре би било да използвате по - сигурен метод за получаване на потребителското име, тъй като в някои случаи то не е аргумента 5. Вижте man страницата printcap за подробности.
В пакета 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, в който просто са изброени наличните принтери. Всичко, от което се нуждаете в този файл, е по едно късо и дълго име за всеки принтер, по един на ред:
lp1|Printer One
lp2|Printer Two
lp3|Printer Three
Късото име ще бъде използвано като име на принтера за командата print
Това трябва да се направи горе-долу по следния начин: pdq -P %p %s ; rm %s
Изглежда за момента няма добра стойност за тази настройка. Задачите за печат на PDQ ще изтекат след определен перопд от време, така че ако ако принтера е напълно извън строя, няма проблеми. Ако промените мнението си, можете да използвате xpdq за да спирате отпечатването на определени задачи, но това е неудобно от Windows. Засега просто сложете невършеща нищо команда като true. Ако използвате lpd или LPRng, подходящо написана команда lprm ще свърши работа. Не съм сигурен по какъв начин Samba може да установи номера в опашката за печат на подадена от lpr задача, получена от своя страна от pdq.
PDQ отново не предлага нищо подходящо за тук. И тук поставете невършеща нищо команда като true засега. Ако използвате lpd или LPRng, подходящо написана команда lpq ще свърши работа; просто няма да виждате задачите, докато те не бъдат филтрирани от PDQ.
Nettalk поддържа разпечатването от Apple клиенти през Ethertalk. Погледнете страницата на Nettalk HOWTO за повече информация.
Наистина, в наши дни всеки съвременен Mac може да печата през TCP/IP, използвайки LPD протокола. UVa имат много хубава страница в Интернет с детайлна информация по въпроса.
Пакетът ncpfs включва демон, наречен pserver, който може да предоставя услуги на Netware опашка за печат. От това което знам, системата изисква "Bindery"-базирана версия на NetWare, т.е. 2.х, 3.х или 4.х с позволен "bindery access".
За повече информация относно ncpfs и pserver, погледнете на FTP страницата на ncpfs.
Мнозинството мрежови принтери поддържат някой метод за отдалечено администриране. Често има лесни за употреба web страници за конфигуриране. Нерядко има поддръжка за SNMP управление. което е още по - полезно. Обикновено можете да получите интересна информация за неща като количество на мастилото и хартията, отпечатвани количества, и други, и също така можете да променяте определени настройки. Управлението на принтер чрез SNMP, както и много други неща, свързани с отпечатването, се стандартизират от работната група за принтери към IEEE (IEEE Print Working Group).
Npadmin е програма за командния ред, която предлага интерфейс към общата SNMP функционалност на мрежовите принтери. В нея е реализиран стандартния Printer MIB, а също и няколко схеми, собственост на отделни производители, използвани предимно за по - стари устройства. Има поддръжка както за действия в стил откриване - на - принтер, така и за различни питания за състоянието на принтера.
npadmin има отлична man страница, и негови предварително компилирани пакети се разпространяват от няколко RPM и dpkg - базирани дистрибуции.
Освен npadmin, има още доста SNMP инструменти, които могат да ви бъдат полезни. snmptraploggd може да води отчет за SNMP trap събития. Това е полезно за наблюдаване на събития като засядане в принтера, свършване на хартията, и т.н.; би било елементарно да се препредават отделни събития към пейджър, или да се изпращат към електронна поща.
Докато npadmin предлага опростена поддръжка за SNMP интерфейсите на много мрежови принтери, в някои принтери може да има добавени от производителя разширения, за които npadmin не знае. В този случай можете да използвате CMU SNMP инструментите, които поддържат произволни SNMP GET и SET операции, а също и допълнителни. С тях, като поработите малко, ще можете да използвате всички SNMP особености, предлагани от MIB на вашия принтер. Може да стане нужда да поискате MIB от вашия доставчик, за да определите кои са всичките промеливи; понякога доставчиците си мислят че хората на практика ползват направените и доставяни от самите тях инструменти.
Библиотеката на VA Linux libprinterconf включва код, който се използва за разпознаване принтери в мрежата. Принтерите се идентифицират посредством сравняване с предварително компилирани вътре в нея подписи на принтери; за момента библиотеката не е голяма, но покрива много от често срещаните модели мрежови принтери.
Както споменах по - рано, за някои принтери по принцип няма поддръжка, понеже те не "говорят" нормален език за отпечатване; вместо това, те използват процесора на компютъра, който преобразува информацията за печат в тип bitmap, и след това я подава с фиксирана скорост към принтера. В малка част от случаите, принтерите от този тип разбират и нещо нормално като PCL, но в повечето случаи не могат и това. Има и случаи (в най - долния клас), в които принтерът дори не използва нормална паралелна връзка към принтера, а се уповава на драйвера на производителя, който симулира необходимото поведение на хардуера (най - важно се явява управлението потока на данните).
Във всеки случай, има няколко неща, които можете да опитате, ако ви се е паднал такъв лимон.
Сега вече има нов Ghostscript драйвер, наречен mswinpr2, който отпечатва, използвайки Windows GDI повиквания. Съществува и пренасочващата програма redmon, която прекарва задачата за печат през Ghostscript, преди да я подаде към принтера. (Сходно на if филтъра при LPD на Unix). Всичко това събрано, дава възможност от Windows машина да се отпечатва Postscript на Win-принтер, през драйвера на производителя.
Ако имате такъв принтер, който не може да се използва директно, можете да го опишете като "Postscript" принтер, да го свържете към компютър с Windows, и да отпечатвате с драйверите на производителя му посредством redmon, Ghostscript, и mswinpr2.
Някои от принтерите на НР използват "Printing Performance Architecture" (маркетингов жаргон за "бяхме твърде стиснати, за да сложим PCL"). За тях има поддръжка, по малко заобиколен начин, посредством написаната от Tim Norman преобразуваща програма pbm2ppa. В основни линии, (първо) използвате Ghostscript за да преобразувате Postscript в bitmap с формат pbm, и след това използвате pbm2ppa, за да преобразувате информацията за печат в специфичния за принтера (bitmap) ppa формат, който вече може да бъде изпратен на принтера. Тази програма може да бъде намерена и като драйвер за Ghostscript.
Софтуер за ppa може да се вземе от неговата в Интернет; pbm2ppa поддържа някои от моделите НР 720, 820 и 1000; прочетете документацията, идваща с програмата, за повече подробности относно отпечатването на ppa принтер.
Мнозинството от евтините мастиленоструйни принтери на Lexmark използват собствен език за отпечатване, и следователно спадат към Win-принтерите. Обаче Henryk Paluch е написал програма, с която може да се отпечатва на Lexmark 7000. Да се надяваме, че той ще успее да добави поддръжка за цветен печат, а също и за други модели мастиленоструйни принтери на Lexmark. Вижте ТУК за повече информация.
Подобно на споменатия модел, сега има драйвери за 5700, 1000, 1100, 2070, и за други модели. Вижте по - горе списъка на поддържаните принтери, и моята страница в Интернет, за повече информация относно получаването на тези драйвери.
Вие можете да отпечатвате на фкас-машина, с или без модем.
Има много програми, с помощта на които можете да изпращате и получавате документи по факс. Една от най - цялостните е HylaFax, която може да бъде намерена на ftp.sgi.com. Тя поддържа множество неща - от използването на няколко модема до broadcasting.
SuSE предлага Java HylaFax клиент, който работи на всяка Java платформа (включително Windows и Linux). Има също и не-Java факс - клиенти за повечето платформи; GNU/Linux със сигурност може да удовлетвори нуждите ви да обненяте факсове в мрежа.
Има също така и една проста програма, наречена efax, с която можете да изпращате факсове; тя е подходяща за по - малки системи. Програмата mgetty може да приема факсове (и дори гласова поща, при някои модеми!).
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
}
}
Предлага се една експериментална услуга, която позволява да изпратите електронна поща, съдържаща нещо което бихте искали да бъде отпечатано, така че то да може да се отпечата на факс машина. Поддържат се хубави формати като Postscript, и въпреки че все още няма глобално покритие, може да бъде много полезно. За повече информация погледнете в Интернет .
Има много компании, който предлагат услуги за изпращане на факс през Интернет. Например EFax, предлагат безплатно получаване на факсове (към избран от вас номер, не повече) посредством електронна поща, и изпращане на факсове срещу заплащане. Другите компании предлагат подобни услуги.
Ето тук вече става въпрос за истинско програмно осигуряване. По принцип, на Linux могат да се изпълняват двоични файлове с различена степен на успех от: Linux/x86, Linux/Alpha, Linux/Sparc. Linux/(други платформи...), iBCS, Win16/Win32 (посредством dosemu, и някой бъдещ ден, с Wine), Mac/68k (посредством Executor), и Java. Ще разгледам само естествения за GNU/Linux и общия за Un*x софтуер.
Повечето от форматиращите езици са най - подходящи тогава, когато се работи по големи, или често повтарящи се проекти; при тях вие искате компютърът да поеме управлението на подреждането на текста, с цел нещата да станат по - еднакви.
Това беше един от първите форматиращи езици за 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, а също и пакета от макроси 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 за 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
Вече няма недостиг на WYSIWYG текстообработващ софтуер. Има на разположение няколко цялостни офис системи, и сред тях една свободна за лична употреба (StarOffice)
Има много детайли, за които трябва да се внимава, ако искате да получите качествен отпечатък на фотография от обикновен принтер. Ако все още не сте си купили фотопринтер, погледнете съветите в точка 5.4.
Ghostscript има някои проблеми с обработването на цветни фотографии при мнозинството от драйверите. Проблемите са няколко:
От написаното дотук излиза, че очевидно е по - добре за отпечатване на фотографии да се използва софтуер, с който в последствие да не ви се налага да използвате Ghostscript; такъв софтуер има, разбира се. Най - големият претендент е добавката (pligin) за печат на Gimp, която дава възможност да се отпечатва точка-по-точка към Postscript и Epson Stylus принтери (с основна поддръжка на PPD). Частта от този драйвер за Epson Stylus вече я има и за Ghostscript, под името stp. Освен това, за целта могат да се използват различни програми като на ppm-to-foo (foo - някой друг формат),които могат да се печатат към принтери от рода на евтините модели на Lexmark, например; те отпечатват растера точка-по-точка.
Най - доброто решение, разбира се, е да се купи Postscript принтер; наличният в момента свободен софтуер може да упражнява пълен контрол върху такъв принтер, и при разпечатване ще може да използва докрай всичките му възможности.
Цветните мастиленоструйни принтери са силно зависими от хартията, когато става въпрос за качество на отпечатването. Използвайки скъпа хартия с гланцово покритие за мастиленоструен печат, ще можете да направите разпечатки с почти фотографско качество, докато с обикновена хартия без покритие често ще получавате разпечатки с размазани цветове и неточни детайли. С хартия за мастиленоструен печат с негланцово покритие ще получите междинни резултати - най добре използвайте такъв тип хартия за финално отпечатване на текст. С по - твърда "фото" хартия с гланцово покритие се получават разпечатки, сходни с тези на по - тънка; разликата е в усещането за истинска снимка.
За фотопечат, при мнозинството от цветните мастиленоструени принтери трябва да използвате най - детайлния (interlaced) режим (който е и най - бавен); в противен случай може да се получат неточни извивки или цветове. В общия случай, това се задава като изберете най - голямата разделителна способност в Ghostscript. При Postscript принтерите може да се наложи да добавите малко информация в началото на пролога, базирайки се на настройките в PPD файла. В PPD за Gimp няма (за отделните принтери) настройки за качество на отпечатване, но аз, макар и грубо, си добавих една за собствена употреба; пишете ми, ако искате да разберете как. Ако използвате PDQ или CUPS, можете лесно да управлявате всички настройки за принтера, които смятате за необходими. Библиотеката libppd на VA Linux програмата за крайни потребители GRP могат също да добавят тези настройки за Postscript принтери.
Разпечатките от цветни мастиленоструйни принтери обикновено стават негодни след няколко години, особено ако са били подложени на големи количества светлина и въздух; това се дължи на мастилото. За принтери, чиито единствени консумативи са мастилата, като Canon и Epson, можете да си купите архивни мастила - отпечатките от тях са по - издържливи. По - новите принтери често използват мастила на суха основа, които не остаряват толкова бързо, както по - старите мастила на течна основа. Но никоя отпечатка от мастиленоструен принтер не е достатъчно дълговечна, за да се използва за архивни нужди. За такива цели по - добре си запишете файловете с изображения на CD-R.
Има една програма, наречена xwtools, която предоставя всякакви възможности и настройки за цветен печат на Epson, HP и Canon принтери. За нещастие, първичният и код не се разпространява. В случай, че я използвате за нещо различно от Epson Stylus Color 300 под Linux x86, тя струва 15 евро за лична употреба; търговската цена е неизвестна.
В произвеждания от Easy Software пакет ESP Print Pro има поддръжка за много принтери, за които може би другаде няма да намерите. За тези драйвери са ми казвали, че не са много добре настроени за отпечатване на фотографии, но те все пак работят.
Почти всичко, което можете да отпечатате, може също така да бъде разгледано предварително на екрана на компютъра.
Към Ghostscript има драйвер за Х11; най - добра реализация на драйвера е направена в програмата за преглеждане на Postscript файлове gv. С последните версии на този вид програми би трябвало да имат възможност да се разглеждат също и PDF файлове. Трябва да се отбележи, че gv замени по - старата сходна програма Ghostview; новият потребителски интерфейс е много по - приятен, и по - богат на функции, в сравнение стария, базиран на Athena потребителски интерфейс на ghostview.
dvi файловете от ТеХ могат да бъдат преглеждани под Х11 с помощта на програмата xdvi. Съвременните версии на xdvi могат да повикват ghostscript да обработва Postscript материали, ако се налага.
Има също така и драйвер за VT100. Нарича се dgvt. Tmview работи с GNU/Linux и svgalib, в случай че това е единственото с което разполагате.
Adobe предлагат Acrobat Reader и във версия за Linux; просто си я изтеглете от Интернет страницата им.
Също така може да използвате и xpdf - разпространява се безплатно, и идва с първичния код; мисля, че понастоящем и с gv би трябвало да могат да се преглеждат PDF файлове в Х11.
Необходими са някои трикове, за да се настроят серийнните принтери под lpd
В 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 < /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = C; quit = \; erase = ?; kill = U; eof = D; eol = <undef>;
eol2 = <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".
Jon Luckey отбелязва, че някои по - стари модели серийни принтери с безобразно евтини серийни интерфейси и малки буфери НАИСТИНА спират, когато си поискат, при наличие на контрол на потока от данни. Той е забелязал, че проблема с изпуснатите символи се решава, като забранил FIFO буферите на 16550 серийния порт на Linux машината си с помощтта на setserial (същото можете да направите, като изрично посочите типа на uart като 8250).
Много от частите на завършената система за печат все още не съществуват. Има проекти, които работят по болшинството от тях, но от почти всички проекти все още липсва работещ код; усилията за стандартизиране на необходимите протоколи и приложни програмни интерфейси са съвсем в начална фаза.
Всеобщ проблем е приспособяването на всички части така, че да могат да общуват помежду си; и по - специално, по независим от системата за буфериране път. Този проблем се явява най - забележимо в предизвикващата съжаление при приложенията поддръжка на начин за управление на всички "обикновени" настройки за печат. Просто не съществува начин разработчикът на дадено приложение да получи информация за принтерите, задачите за печат, и т.н.; няма стандартизиран начин за генериране информация за печат (макар че мнозинството от новите графични потребителски системи предлагат свои приспособления за целта).
Работата по дефиниране на чувствителен приложен програмен интерфейс, който приложенията да използват за печат, без колебание ще се съсредоточи около sysAPS библиотеката на Corel, която предлага базова реализация на няколко характеристики, като подредба на опашка и информация за принтера.
Управлението на шрифтовете при свободните системи е доста неудобно. В идеалния случай, екрана, принтера, приложението, и файловете с данни, трябва а имат достъп до едни и същи шрифтове. За нещастие това просто не е така. Има планове, по които се работи, да се премахне управлението на шрифтовете от Х сървъра, което ще опрости част от проблема, но установяването на добра връзка между шрифтовете на принтера и шрифтовете на приложението все още е задача, по която има да се работи. Изглежда все още няма проект, който да е на път да реши проблема; понастоящем авторите на приложения просто включват свои собствени шрифтове в данните за печат.
Приложенията или системите за буфериране имат нужда по някакъв начин да научат за свойствата на принтера и драйвера. Схемата, която е стандарт понастоящем, и е реализирана в Windows, Mac, и CUPS, е да се използват PPD файлове за управление на програмния и потребителския интерфейс. Това очевидно не е подходящо решение за не-Postscript принтери, и затова от Printer Working Group към IEEE са разработили проект за определяне на универсален формат за драйвери за принтери (Universal Printer Driver Format), или UPDF. Те направиха файл - образец в XML формат. Този файл силно напомня на PPD файл, и в него липсва всякаква специфична информация за драйвера и платформата; така че UPDF за момента е неизползваем. IBM притежават напълно дефинирана (parameterized) архитектура за драйвери за OS/2, която се предлага като свободен софтуер; когато тя бъде отворена, със сигурност ще стане източник на полезени идеи или програмен код, и при възможност достатъчно добра система, за да бъде използвана без ограничения. Дoри и тази ситема, обаче, не предоставя определен механизъм за обмяна на интересни свойства от драйверното пространство към приложението. Някой XML формат, и/или програмен приложен интерфейс за извличане определени характеристики е на път да се появи в даден момент.
Състоянието на драйверите - свободен софтуер е доста лощо. За щастие, има няколко проекта, които са на път да променят ситуацията, и понастоящем могат да се видят някои впечатляващи резултати от принтери, работещи с такъв код. Крайната цел изглежда е да се осигурят едновременно и добри драйвери, и добра основна рамка за споделяне на често повтарящите се (и трудни!) части от програмния код (dithering например).
Убеждаването на производителите на принтери да си сътрудничат ще бъде важна част от постигането на тази цел. Понастоящем производителите не предоставят минималната документация, необходима за да се накарат техните устройства да работят добре. На събирането Printing Summit 2000 имаше предтавители на много производители, и беше постигнат малък напредък по тази точка. Производителите най - вече са силно заинтересувани да запазят в тайна алгоритмите си за dithering и други, свързани с последното; това са софтуерните компоненти, с които се постигат такива впечатляващи резултати при мастиленоструйния печат, и производителите естествено се конкурират. Производителите, представени на събирането, сега би трябвало да имат по - ясна представа как работи свободния софтуер, и какво иска той от тях. Това не е много, но установява платформа за бъдещо развитие по въпроса.
Специални благодарности на 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 ми изпрати няколко отлични абзаца, отнасящи се за настройването на сървър за печат на някои мрежови модели на НР, които включих без промени в документа.
И специални благодарности на десетките и десетки от вас, които ми посочваха печатни грешки и некоректни Интернет адреси в документа през всичките тези години.
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
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