SuSE Linux: Verziók a következő dátum óta: 8.2
Előfeltételek: Alapvető ismeretekkel kell rendelkeznünk a nyomtatási rendszerről, természetesen a CUPS-ról, a bash burok szkriptnyelvéről és az általánosan használt parancssori eszközökről.
/etc/cups/mime.types
és /etc/cups/mime.convs
fájlokban megadott módon, minden egyes nyomtatási sorhoz, a PPD fájl *cupsFilter
bejegyzései alapján.
/etc/cups/mime.types
fájlban található bejegyzésnek megfelelően
a PostScript formátumú adatoknak
application/postscript
mime-típusa van.application/postscript application/vnd.cups-postscript 66 pstops
/etc/cups/mime.convs
fájlban jelzi, hogy az
application/postscript
mime-típusú adatok konvertálásra kerülnek az
application/vnd.cups-postscript
mime-típusra, amely a pstops
CUPS szűrőn keresztül történik (vagyis /usr/lib/cups/filter/pstops
).66
egységnyi idő.
application/vnd.cups-postscript
mime-típusú adatok a PostScript nyomtatónak
kerülnek elküldésre.
/etc/cups/mime.types
bejegyzése alapján az ASCII szövegeknek
text/plain
mime-típusa van.text/plain application/postscript 33 texttops
bejegyzésnek megfelelően/etc/cups/mime.convs
fájlban a text/plain
mime-típusú adatok
konvertálásra kerülnek application/postscript
mime-típusúvá
a CUPS texttops
szűrője által (vagyis /usr/lib/cups/filter/texttops
).33
egységnyi idő.
application/postscript
mime-típusú adatok
konvertálásra kerülnek application/vnd.cups-postscript
mime-típusú adatokká a
/usr/lib/cups/filter/pstops
CUPS szűrő által, 66
egység időben.application/vnd.cups-postscript
mime-típusú adatok kiküldésre kerülnek a
PostScript nyomtatónak.
application/postscript
mime-típusú
adatok konvertálásra kerülnek application/vnd.cups-postscript
mime-típusúvá
az /usr/lib/cups/filter/pstops
CUPS szűrővel.
*cupsFilter
bejegyzésének megfelelően, mint a Foomatic PPD fájlnál:*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip"
application/vnd.cups-postscript
mime-típussal) konvertálásra kerülnek
nyomtató-specifikus adatokra (pl. PCL adatok egy PCL nyomtatónál) a
/usr/lib/cups/filter/foomatic-rip
Foomatic szűrőn keresztül.
text/plain
mime-típusú adatok konvertálásra kerülnek
application/postscript
mime-típusra a
/usr/lib/cups/filter/texttops
CUPS szűrő segítségével.
application/postscript
mime-típusú adatok
application/vnd.cups-postscript
mime-típusúvá konvertálódnak
a /usr/lib/cups/filter/pstops
CUPS szűrő által.
application/vnd.cups-postscript
mime-típusú adatok konvertálásra kerülnek
nyomtató-specifikus adatokra a
/usr/lib/cups/filter/foomatic-rip
Foomatic szűrő segítségével.
/usr/lib/cups/filter/texttops
- lásd:/usr/lib/cups/filter/pstops
- lásd:/usr/lib/cups/filter/foomatic-rip
- lásd:A közvetlen megoldás a felbontás és színmélység értékek csökkentése az alkalmazásban, amellyel a PostScript fájlt létrehozzuk.
A nyomtatási rendszer képes a problémás PostScript dokumentumok konvertálására PCL adatokká
(kisebb felbontással, illetve színmélységgel, ha szükséges) a fentebb leírt módon.
A kinyomtatáshoz a PCL adatok (a felbontástól és a színmélységtől függően)
sokkal kevesebb memóriát igényelnek.
A PostScript nyomtatók általában értik a PCL nyelvet is. A legtöbb PostScript+PCL nyomtató
automatikusan felismeri az adattípust és átkapcsol a PostScript és PCL mód között.
A legegyszerűbb megközelítés egy további nyomtatási sor létrehozása a PostScript+PCL nyomtatóhoz. Ez a sor minden esetben PCL adatokat szolgáltat egy kompatibilis PCL nyomtatóhoz tartozó PPD fájl használatával.
Az alapvető kényelmetlenség azonos nyomtatókon több sor használatakor az, hogy szükséges
lekérdezni az összes sort, ha látni szeretnénk az összes várakozó vagy aktív nyomtatási feladatot
a nyomtatóra vonatkozólag.
Annak ellenére, hogy nem lehet probléma egyetlen nyomtató esetében vagy egyedülálló rendszereknél,
a nyomtatónkénti több sor használata túl komplikált lesz, ha több hálózati nyomtatót használ számos
felhasználó.
Éppen ezért csak ergyetlen sort hozzunk létre minden PostScript+PCL nyomtatóhoz
a PCL adatok továbbítására, hogy a problémás PostScript dokumentumokat is PCL-en keresztül nyomtathassuk.
(kisebb felbontásban és/vagy kisebb színmélységben, ha szükséges).
Közvetlen megoldás erre a PostScript szint megfelelő beállítása az alkalmazásból, amelyben a PostScript
dokumentumot létrehozzuk. Sajnos, ez nem mindig lehetséges.
Még általánosabb, egyszerűbb megközelítés egy további nyomtatósor létrehozása a nyomtató számára.
Ez a sor az általános Foomatic PPD fájlt használja
(/usr/share/cups/model/Generic/PostScript_Printer-Postscript.ppd.gz
),
mivel a PostScript level 1 vagy 2 a Ghostscript általi előfeldolgozással hozható létre.
A legjobb megoldás a szükséges betűkészletek beágyazása a PostScript dokumentumba abból
az alkalmazásból, amellyel létrehoztuk a dokumentumot.
Egyes esetekben segít egy további nyomtatósor használata az általános Foomatic PPD fájl
fenti módon történő alkalmazásával, e módon lehetőségünk van egy opcióval integrálni legalább
a GhostScript betűkészleteket a PostScript dokumentumba, a GhostScript előfeldolgozón keresztül.
/etc/cups/ppd/queue.ppd
PPD fájlt és szúrjuk be a következő sort:
*cupsFilter: "text/plain 0 TextToPrinter"
az alábbi sor alatt:*cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip"
A PPD fájlokban a *cupsFilter
bejegyzések célja a nyomtató-specifikus adatokra történő
konvertálás, amely aztán egyenesen a nyomtatónak kerül kiküldésre.
Ez a bejegyzés közvetlenül konvertálja az összes text/plain
mime-típusú adatot
nyomtató-specifikus adatokra a /usr/lib/cups/filter/TextToPrinter
segítségével,
bármely más szűrő használata nélkül.
Éppen ezért nem lehetséges testreszabni a kimenetet, amikor a
text/plain
mime-típusú adatokat nyomtatjuk ezzel a sorral, mivel az
ehhez szükséges CUPS és Foomatic szűrők hiányoznak.
/usr/lib/cups/filter/TextToPrinter
az a szűrőszkript, amelyet
létre kell hoznunk az ASCII szövegek nyomtató-specifikus kódba történő konvertálásához.
A legtöbb mátrixnyomtató IBM PC kompatibilis karakterkódokat tartalmaz.
Használhatjuk a recode "lat1..ibmpc"
parancsot az ASCII szöveg
IBM PC-kompatibilissá konvertálásához.
Ha a nyomtató az első párhuzamos kapura csatlakozik, használjuk
a következő parancsot:
echo -en "\rline 1\numlauts: ÄÖÜäöüß\nline 3\f" | recode "lat1..ibmpc" >/dev/lp0hogy teszteljük a
recode "lat1..ibmpc"
parancsot, hogy
az a megfelelő nyomtató-specifikus kódokat eredményezi.recode
számos más átkódolási
lehetőséget kínál,
használhatjuk a tr
parancsot (emellett) egyetlen karakter
konvertálásához vagy a
sed
parancsot karakterláncok konvertálására - ehhez nézzük meg
az adott programok kézikönyv lapjait.
Ez a szkript kiírja a nyomtatható karaktereket oktális kódjukkal együtt:
#! /bin/bash # soremelés a nyomtatás után echo -en "\r" # nyomtatható 8-bites karakterek nyomtatása (CR, NL, TAB, BS, 32-126, 128-254) echo -en "a vízszintes tabulátor és backspace speciális karakterek:\r\n" echo -en "a következő sor 5 vízszintes tabulátort tartalmaz, mindegyiket egy I követi\r\n" echo -en "\tI\tI\tI\tI\tI\r\n" echo -en "a következő sor egy C, backspace és = jelet tartalmaz\r\n" echo -en "C\b=\r\n" echo -en "a C, backspace és = kimenetének úgy kell kinéznie, mint egy euró-jelnek\r\n" echo -en "\na nyomtatható 7-bites oktális kódok (040-176) és karakterek:\r\n" for i in 04 05 06 07 10 11 12 13 14 15 16 do for j in 0 1 2 3 4 5 6 7 do echo -en "${i}${j} \\${i}${j} " done echo -en "\r\n" done for i in 170 171 172 173 174 175 176 do echo -en "${i} \\${i} " done if test "$1" = "7" then # lapdobás nyomtatás után echo -en "\r\f" exit 0 fi echo -en "\r\n" if test "$1" = "a" then echo -en "\nA 8-bites oktális kódok (200-237) és karakterek:\r\n" for i in 20 21 22 23 do for j in 0 1 2 3 4 5 6 7 do echo -en "${i}${j} \\${i}${j} " done echo -en "\r\n" done fi echo -en "\nA nyomtatható 8-bites oktális kódok (240-376) és karakterek:\r\n" for i in 24 25 26 27 30 31 32 33 34 35 36 do for j in 0 1 2 3 4 5 6 7 do echo -en "${i}${j} \\${i}${j} " done echo -en "\r\n" done for i in 370 371 372 373 374 375 376 do echo -en "${i} \\${i} " done # lapdobás nyomtatás után echo -en "\r\f"Bármely további paraméter megadása nélkül, a kimenet az egyszerűen nyomtatható 8-bites kódokból áll.
7
paraméter megadásával
csak a nyomtatható 7-bites ASCII kódok jelennek meg.a
paraméter az összes nyomtatható
8-bites kódot eredményezi, de ez felülírhatja a terminálbeállításokat
a folyamat során. Ezért az a
paraméter nem jelenik meg a képernyőn.szkript a >/dev/lp0A kimenet a nyomtatóba beépített karakterkészlet lesz.
Ha a fenti recode
parancs megfelelő nyomtató-specifikus
kódokat produkált,
a /usr/lib/cups/filter/TextToPrinter
fájl így fog kinézni:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információk a /var/log/cups/error_log fájlban set -x # a bemenet mindig fd0 (stdin) legyen [ -n "$6" ] && exec <"$6" # soremelés a nyomtatás előtt echo -en "\r" # nyomtatás recode "lat1..ibmpc" # lapdobás nyomtatás után echo -en "\f"
/usr/lib/cups/filter/
könyvtárban.
cupsd
démont.
echo -en "line 1\numlauts: ÄÖÜäöüß\nline 3" | a2ps -1 -o - | lp -d queue lp -d queue /usr/share/doc/packages/ghostscript/examples/colorcir.psA PostScript a fentebb leírt módon kerül feldolgozásra a CUPS szűrő rendszerben. Ennek eredményeként a fent említett CUPS szűrő hívása a
/var/log/cups/error_log
fájlban látható:
I ... Started filter /usr/lib/cups/filter/pstops I ... Started filter /usr/lib/cups/filter/foomatic-rip
echo -en "line 1\numlauts: ÄÖÜäöüß\nline 3" | lp -d queue lp -d queue /usr/lib/cups/filter/TextToPrinterMost a
/var/log/cups/error_log
egyetlen szűrőt
tartalmaz:
I ... Started filter /usr/lib/cups/filter/TextToPrinterHa a
LogLevel debug
aktiválva van az /etc/cups/cupsd.conf
fájlban,
a /usr/lib/cups/filter/TextToPrinter
parancs nyomkövetési kimenete a
/var/log/cups/error_log
fájlban látható:
D ... + '[' -n /var/spool/cups/... ']' D ... + exec D ... + echo -en '\r' D ... + recode lat1..ibmpc D ... + echo -en '\f'
text/plain
mime-típusú:
Ha önátírós vagy indigós papírra készült formanyomtatványok folyamatos kitöltésére
szeretnénk használni mátrixnyomtatónkat egyszerű ASCII szöveg nyomtató-specifikus kódokkal történő
nyomtatásához, akkor nem szabad elfogadnunk más mime-típusú adatokat, mint a text/plain
.
Az összes text/plain
mime-típustól eltérő adatok figyelmen kívül hagyásához
nyissuk meg a PPD fájlt és változtassuk meg a
application/vnd.cups-postscript
mime-típussal rendelkező
*cupsFilter
bejegyzést a következőképpen:
*cupsFilter: "application/vnd.cups-postscript 0 /bin/true"Ezzel a
/bin/true
lesz aktív az összes olyan típusra, amely eltér a
text/plain
-tól az utolsó szűrési részben.
Ez elvégzi a műveletet
bármely feldolgozás nélkül és az összes átmenetileg tárolt adat törlésre kerül.
text/plain
mime-típustól eltérő adatokat:
Ha önátírós vagy indigós papírra készült formanyomtatványok folyamatos kitöltésére
szeretnénk használni mátrixnyomtatónkat egyszerű ASCII szöveg nyomtató-specifikus kódokkal történő
nyomtatásához, akkor nem szabad elfogadnunk más mime-típusú adatokat, mint a text/plain
.
Hogy csak ezen formátumú adatokat fogadhassuk, különbséget kell tenni közöttük.
Például vegyünk egy tetszőleges karatersorozatot az első sorból.
Ha az első sor pl. a Foo...Bar
szöveget tartalmazza,
a /usr/lib/cups/filter/TextToPrinter
az alábbi módon néz ki:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # hibainformációk a /var/log/cups/error_log fájlban set -x # a mintának egyeznie kell az "egrep -i"-vel az első sorban pattern="foo.*bar" # a bemenet fd0 (stdin) bármely esetben [ -n "$6" ] && exec <"$6" # tesztelés read -t 1 -r line echo $line | egrep -i -q "$pattern" || exit 0 # soremelés nyomtatás előff echo -en "\r" # nyomtatás echo $line | recode "lat1..ibmpc" recode "lat1..ibmpc" # lapdobás nyomtatás után echo -en "\f"amikor teszteljük a következő paranccssal:
echo -en "line 1\numlauts: ÄÖÜäöüß\nline 3" | lp -d queuesemmi sem nyomtatódik ki és a
/var/log/cups/error_log
a következőket tartalmazza:
... D ... + egrep -i -q 'foo.*bar' D ... + exit 0A következő teszt parancs:
echo -en "line 1: FooBar\numlauts: ÄÖÜäöüß\nline 3" | lp -d queuea megfelelő kimenetet eredményezi.
A fenti esetben (a mátrixnyomtató csak egyszerű ASCII szöveget nyomtat) elegendő a nyomtatási sor létrehozása a PPD fájl nélkül, de e helyett használjuk a fenti "System V style interface script" szkriptet:
lpadmin -p queue -i /usr/lib/cups/filter/TextToPrinter ...A szűrő szkript, amely jelenleg végrehajtásra kerül a CUPS által, az
/etc/cups/interfaces/Warteschlange
, amely a
/usr/lib/cups/filter/TextToPrinter
másolata.
Bármely fajta bemeneti adat a "System V style interface script" által kerül feldolgozásra. Éppen ezért nem lehetséges testre szabni a kimenetét ennek a sornak, mivel a szükséges CUPS és Foomatic szűrők hiányoznak.
/usr/share/cups/model/Postscript.ppd.gz
)
vagy a /usr/share/cups/model/Generic/PostScript_Printer-Postscript.ppd.gz
fájlt.
/etc/cups/ppd/queue.ppd
fájlt a következőképpen:
*cupsFilter: "application/postscript-problematic 0 PsToPCL" *cupsFilter: "application/vnd.cups-postscript 0 foomatic-rip"vagy szúrjuk be a következő sorokat az
/etc/cups/ppd/queue.ppd
fájlba, ahogyan az általános Foomatic PPD fájl esetében:
*cupsFilter: "application/postscript-problematic 0 PsToPCL" *cupsFilter: "application/vnd.cups-postscript 0 ToPrinter"A
*cupsFilter
bejegyzések célja a PPD fájlokban a
nyomtató-specifikus adatok konverziója, amelyet ezután a nyomtatónak
küldünk ki.application/postscript-problematic
mime-típusú adatokat nyomtató-specifikus adatokká az /usr/lib/cups/filter/PsToPCL
egyéb szűrők használata nélkül.application/postscript-problematic
mime-típussal
ebben a sorban, mivel a szükséges CUPS és Foomatic szűrők hiányoznak.
application/postscript-problematic
mime-típust
egy további sorként:
application/postscript-problematicaz
/etc/cups/mime.types
fájlba.
Ellenkező esetben a CUPS nem fogadja el ezt a mime-?ípust.
/usr/lib/cups/filter/PsToPCL
a szűrő szkript, amelyet létre kell hozni
a PostScript adatok nyomtató-specifikus kódra történő konvertálásához.
A legtöbb PostScript+PCL nyomtató megérti a PCL5e nyelvet, amelyet
az ljet4
és lj4dith
Ghostscript meghajtók hoznak
létre (Floyd-Steinberg árnyaláshoz), vagy használhatjuk az ljet4d
-t
duplex nyomtatáshoz 600 dpi vagy nagyobb felbontáshoz.
Ha a nyomtató az első párhuzamos kapura csatlakozik, használjuk a következő
Ghostscript parancsot az ljet4
parancs tesztelésére (vagy egyéb PCL5e meghajtót),
hogy az a megfelelő nyomtató-specifikus kódot generálja.
gs -q -dBATCH -dNOPAUSE -sDEVICE=ljet4 -sOutputFile=/dev/lp0 /usr/share/doc/packages/ghostscript/examples/colorcir.psHa nem ez az eset áll fenn, akkor a Ghostscriptben használhatunk további PCL meghajtókat (lásd az alábbi SDB cikket:"Nyomtatók vásárlása és kompatibilitás" (http://sdb.suse.de/hu/sdb/html/jsmeix_print-kompatibel.html)).
Ha a színes ellipszis megfelelőny nyomtatható a fent említett
gs
paranccsal, a
/usr/lib/cups/filter/PsToPCL
szűrő konvertálja az application/postscript-problematic
mime-típusú
adatokat az ljet4
-tel PCL5e nyelvre 300 dpi felbontással, amely így néz ki:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemenet minden esetben fd0 (stdin) [ -n "$6" ] && exec <"$6" # nyomtatás gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=ljet4 -r300 -sOutputFile=- -
application/vnd.cups-postscript
mime-típusú,
és mindegyiket a /usr/lib/cups/filter/foomatic-rip
dolgozta fel
vagy egyenesen kiküldésre került a nyomtatónak a /usr/lib/cups/filter/ToPrinter
szkriptből./usr/lib/cups/filter/ToPrinter
ehhez hasonló:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemenet minden esetben fd0 (stdin) [ -n "$6" ] && exec <"$6" # nyomtatás cat -
/usr/lib/cups/filter/
könyvtárban találhatók.
cupsd
démont.
-o document-format=application/postscript-problematiclehetővé teszi számunkra a nyomtatandó PostScript dokumentum mime-típusát
application/postscript-problematic
típusra megváltoztatni parancssorból./usr/lib/cups/filter/PsToPCL
)
vagy a közös CUPS szűrők lesznek használatban.application/postscript-problematic
mime-típus csak a PostScript dokumentumokban használható.
Nyomtathatunk egy PostScript tesztoldalt a /usr/lib/cups/filter/PsToPCL
szűrővel az
alábbi paranccsal:
lp -d queue -o document-format=application/postscript-problematic /usr/share/doc/packages/ghostscript/examples/colorcir.psEnnek eredményeként, a
/var/log/cups/error_log
tartalma:
I ... Started filter /usr/lib/cups/filter/PsToPCL ... D ... + '[' -n /var/spool/cups/... ']' D ... + exec D ... + gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=ljet4 -r300 -sOutputFile=- -
-o document-format=application/postscript-problematicopció már be van állítva:
lpoptions -o document-format=application/postscript-problematic -p queue/problematicEzzel elkerülhető a parancssorban történő kiadás minden alkalommal, amikor nyomtatni szeretnénk, ehelyett egyszerűen adjuk meg a sor példányt:
lp -d queue/problematic /usr/share/doc/packages/ghostscript/examples/colorcir.psSzerencsétlen módon a példányok nem használhatók a hálózaton, csak a helyi gépen. Éppen ezért, ha távoli gépről szeretnénk nyomtatni, az opciót minden egyes nyomtatási parancsnál meg kell adnunk.
A Ghostscript közvetlenül kezeli a PDF dokumentumokat is, de csak akkor, ha rendes fájlként adjuk meg a szabványos bemenet helyett.
A
CUPS szoftver programozók kézikönyve: Szűrők írása: Parancssori paraméterek
alapján csak az első szűrő a láncban fogadja a CUPS fájl bemenetét és
a
/usr/lib/cups/filter/PsToPCL
az egyetlen szűrő. Éppen ezért ez a szűrő a következő
módon változtatható meg, hogy a Ghostscript egyenesen a CUPS fájlból
fogadhassa a kimenetet:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemeneti fájl beállítása a bemenetre inputfile="-" [ -n "$6" ] && inputfile="$6" # nyomtatás gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=ljet4 -r300 -sOutputFile=- $inputfile
Sok PostScript+PCL nyomtató megérti a PJL feladatvezérlő nyelvet.
Ha a nyomtató nem kapcsol automatikusan át PostScript-ről PCL-re, de támogatja
a PJL nyelvet, az átkapcsolást egy PJL paranccsal is kezdeményezhetjük.
A /usr/lib/cups/filter/PsToPCL
kiegészíthető a megfelelő
PJL parancsokkal:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemeneti fájl beállítása a bemenetre inputfile="-" [ -n "$6" ] && inputfile="$6" # váltás PCL-re és a PCL alaphelyzetbe állítása echo -en "\033%-12345X@PJL ENTER LANGUAGE = PCL\n\033E" # nyomtatás gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=ljet4 -r300 -sOutputFile=- $inputfile # PCL alaphelyzetbe és a munkafolyamat vége PJL nyelven echo -en "\033E\033%-12345X\n"Ezen a módon más eltérő vezérlőnyelv parancsait is megadhatjuk a nyomtató számára.
Miután átváltottunk PCL nyelvre a PJL parancsokkal,
a végső PJL parancs (\033%-12345X
) visszakapcsolja
a nyomtatót az eredeti PostScript módba.
Ennek megerősítéséhez egészítsük ki a
/usr/lib/cups/filter/ToPrinter
fájlt a következőképpen:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemenet fd0 (stdin) legyen [ -n "$6" ] && exec <"$6" # váltás PostScript-be echo -en "\033%-12345X@PJL ENTER LANGUAGE = POSTSCRIPT\n" # nyomtatás cat - # PostScript folyamat vége és PJL feladat befejezése echo -en "\004\033%-12345X\n"Ha a sor létre lett hozva a gyártótól származó nyomtató-specifikus PPD fájllal, a megfelelő folyamatvezérlő parancsokat beszúrhatjuk ebbe (mint
*JCL...
bejegyzések). A CUPS automatikusan elküldi ezeket a parancsokat a
nyomtatónak és éppen ezért nem szükségesek további parancsok.
Ha a nyomtatónk megérti a PCL és PJL nyelvet, használhatjuk a PJL parancsokat néhány nyomtatási opció beállításához.
A PJL+PCL nyomtatási feladat szintaktikája:
\033%-12345X@PJL SET option-1 = value-1 @PJL SET option-2 = value-2 ... @PJL SET option-n = value-n @PJL ENTER LANGUAGE = PCL PCL-commands+data\033%-12345XMinden PJL nyomtatási feladatnak egy "Universal Exit Language" paranccsal kell végződnie:
\033%-12345X
.\n
).
Ha a nyomtató az első párhuzamos felületre csatlakozik, használjuk a következő parancsot
a PJL parancsok működésének tesztelésére.
Ebben a példában szeretnénk aktiválni a környezetbarát módot és a
kézi jóváhagyást nyomtatás előtt (pl. ha speciális papírt akarunk berakni):
echo -en "\033%-12345X@PJL SET ECONOMODE = ON\n@PJL SET MANUALFEED = ON\n@PJL ENTER LANGUAGE = PCL\n" >/dev/lp0 gs -q -dBATCH -dNOPAUSE -sDEVICE=ljet4 -sOutputFile=/dev/lp0 /usr/share/doc/packages/ghostscript/examples/colorcir.ps echo -en "\033%-12345X\n" >/dev/lp0Egészítsük ki a
/usr/lib/cups/filter/PsToPCL
fájlt a következőképpen a megfelelő PJL parancsok elküldéséhez:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információ: /var/log/cups/error_log set -x # a bemeneti fájl legyen a bemenet inputfile="-" [ -n "$6" ] && inputfile="$6" # PJL nyomtató beállítás echo -en "\033%-12345X@PJL SET ECONOMODE = ON\n@PJL SET MANUALFEED = ON\n" # váltás PCL-re és PCL alaphelyzetbe echo -en "@PJL ENTER LANGUAGE = PCL\n\033E" # nyomtatás gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=ljet4 -r300 -sOutputFile=- $inputfile # PCL alaphelyzetbe és PJL munkafolyamat vége echo -en "\033E\033%-12345X\n"
application/postscript-pswrite
mime-típust
egy további sorba:
application/postscript-pswriteaz
/etc/cups/mime.types
fájlba.
application/postscript-pswrite application/postscript 33 PsWriteaz
/etc/cups/mime.convs
fájlba.
Ezzel az összes application/postscript-pswrite
mime-típusú adat
konvertálásra kerül az application/postscript
mime-típusúra
a /usr/lib/cups/filter/PsWrite
szűrővel.
Ez a szűrő az összes sorhoz használható.
Az adatok kinyomtatása application/postscript-pswrite
mime-típussal
testreszabható hosszú részekre az application/postscript
mime-típussal
a közös CUPS és Foomatic szűrőkön keresztül.
A lehetőségek (/usr/lib/cups/filter/pstops
)
az alábbi leírásnak megfelelően választhatók ki:
CUPS szoftver felhasználói kézikönyv: dokumentum opciók
viszont ezek nem minden esetben működnek a PostScript előfeldolgozással
kapcsolatban.
A PPD fájlnak megfelelő nyomtató-specifikus opciók legalább működnek.
pswrite
Ghostscript meghajtó használható PostScript előfeldolgozásra Ghostscripttel.gs -q -dBATCH -dNOPAUSE -sDEVICE=pswrite -sOutputFile=/dev/lp0 /usr/share/doc/packages/ghostscript/examples/colorcir.ps gs -q -dBATCH -dNOPAUSE -sDEVICE=pswrite -dLanguageLevel=2 -sOutputFile=/dev/lp0 /usr/share/doc/packages/ghostscript/examples/colorcir.ps gs -q -dBATCH -dNOPAUSE -sDEVICE=pswrite -dLanguageLevel=1 -sOutputFile=/dev/lp0 /usr/share/doc/packages/ghostscript/examples/colorcir.psannak kiderítésére, hogy a
LanguageLevel
a megfelelő
nyomtató-specifikus adatokat hozza létre./usr/lib/cups/filter/PsWrite
szűrő így néz ki:
#! /bin/bash # lásd: http://localhost:631/spm.html#WRITING_FILTERS # nyomkövetési információk: /var/log/cups/error_log set -x # a bemeneti fájl beállítása a bemenetre inputfile="-" [ -n "$6" ] && inputfile="$6" # nyomtatás gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=pswrite -dLanguageLevel=1 -sOutputFile=- $inputfile
/usr/lib/cups/filter/
könyvtárban.
cupsd
démont.
-o document-format=application/postscript-pswritelehetővé teszi a nyomtatandó PostScript dokumentum mime-típus beállítását parancssorból
application/postscript-pswrite
-ra./usr/lib/cups/filter/PsWrite
) vagy
csak a közös CUPS szűrés történik meg./usr/lib/cups/filter/PsWrite
az első szűrő
a láncban, ez fogadja egyenesen a bemenetet a CUPS fájlból, amely ismertetésre
került a
CUPS szoftver programozói kézikönyv: Szűrők írása: Parancssori paraméterek
részben. Éppen ezért a PDF dokumentumok előfeldolgozása is lehetéges.
Egy PostScript tesztoldalt nyomtathatunk a
/usr/lib/cups/filter/PsWrite
segítségével az alábbi paranccsal:
lp -d queue -o document-format=application/postscript-pswrite /usr/share/doc/packages/ghostscript/examples/colorcir.psEnnek eredményeként a
/var/log/cups/error_log
:
I ... Started filter /usr/lib/cups/filter/PsWrite I ... Started filter /usr/lib/cups/filter/pstops ... D ... + gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -sDEVICE=pswrite -dLanguageLevel=1 -sOutputFile=- /var/spool/cups/...
-o document-format=application/postscript-pswritealapértelmezett.
Bármely esetben a Ghostscriptnek lehetővé kell tennie a legalább PostScript és/vagy
PDF dokumentum feldolgozását.
Ha mind a nyomtató PostScript interpretere és a Ghostscript hibásan dolgozza fel
a dokumentumot, lehetséges hogy lehetetlen nyomtatni.
A nyomtatási kisérletek bármely dokumentumból egy alkalmazásból
hibásak lehetnek, mivel az alkalmazás PostScript kimenete
nem dolgozható fel a nyomtatási rendszer által (vagy csak részben).
Ez ellenőrizhető a problémás PostScript/PDF dokumentum konvertálásával
és nyomtatásával PostScript fájlba.
Alternatívaként használhatjuk a meglévő PostScript/PDF dokumentumot és
megjeleníthetjük oldalról-oldalra a grafikus felületen az alábbi parancsot kiadva:
gs -r60 fájlnévegy terminálban és hagyjuk jóvá az enter billentyű megnyomásával. A megjelenő dokumentum bezárásához nyomjuk meg a [Ctrl]+[C] billentyűkombinációt a terminálban.
SDB-jsmeix_print-cups-filters
)