Linux E X P R E S

Facebook

Tisk z příkazové řádky trochu jinak

Aneb jak si ulehčit práci například při přípravách na zkoušky...


Úvodník (aneb "vo co go")

Ať se nám to líbí či nikoliv, realita je taková, že právě na "vysokou školou povinné" udeřilo oblíbené období zvané zkouškové. Vzhledem k tomu, že i moje maličkost se ještě stále snaží dostudovat, potýkám se momentálně s klasickými problémy typu "jak to narvat do hlavy" (s tím mi moc Linux nepomůže), kde sehnat materiály apod.

Nevím jak velectěné čtenářstvo, ale já osobně mám poměrně velký problém se studiem materiálů v elektronické podobě, jinými slovy papír je papír. Věřím, že ekologičtí aktivisté se právě chytají za hlavu s hesly typu "chraňte naše lesy" atd., ale opravdu si nemůžu pomoct. Proto se snažím studijní materiály půjčit v knihovně,  případně ty, které splaším v elektronické formě, tisknu na papír. Prostě mě v tomto směru "elektronická doba" ještě nedostihla.

Zásadní problém většiny elektronických studijních materiálů, ze kterých šprtám na zkoušky je ten, že se málokdy jedná o jediný dokument. Zhusta se právě naopak jedná o bohatou sbírku dokumentů a formátů (Microsoft Office, OpenOffice, PDF atd.). Otevřít každý dokument extra, vybrat tiskárnu a vytisknout na tiskárnu zabere poměrně dost času, který by člověk mohl věnovat jiné činnosti. A jelikož jsem od přírody lenivý tvor, začal jsem špekulovat, jak bych si s tiskem "skript" ušetřil práci.

S plaintextovými, postscriptovými a PDF soubory v Linuxu oběcně při tisku problém není, tam si vystačíme s klasickým příkazem lpr, ale co s těmi různými .doc, .ppt, .odt (velmi velmi zřídka), a podobně? Žádný problém! Stačí natáhnout ruku a .... kde se tu vzal ten krokodýl?! Ehmm, chtěl jsem říct:

Stačí použít OpenOffice!

Středník (aneb "co s tím")

OpenOffice? Proboha a co jako s ním? Vždyť před chvílí psal, že otevírat ty soubory jeden podruhém a posílat na tiskárnu je opruz, ne? Ano přátelé, ale OpenOffice je potvůrka šikovná a umí hafo věcí i z příkazové řádky. Jednou z možností, kterou nám OpenOffice nabízí je právě tisk souboru na tiskárnu. Pro tento případ máme k dispozici dvě možnosti:

Pokud chceme tisknout soubor na výchozí (default) tiskárnu, stačí zadat na příkazovém řádku (parametr -p jako "print"):

mike@jingles:~$ openoffice.org -p soubor.odt

V případě, že chce zvolit jinou než výchozí tiskárnu, musíme ještě specifikovat název tiskárny a napsat (parametr -pt jako "print to"):

mike@jingles:~$ openoffice.org -pt TISKARNA soubor.odt

Tolik k teorii a nyní už nezbývá než spáchat nějakou tu realizaci...

Konečník (aneb "realizace")

Realizace spočívá v troše skriptování v bashi. Následující skriptík prostě a jednoduše vytiskne všechny Microsoft Office, OpenOffice a PDF dokumenty ze zadaného adresáře na tiskárnu, kterou si zvolíme. Žádná velké kouzla nečekejte, profík ve skriptování jsem nikdy nebyl a asi ani nebudu. Je to tak říkajíc "bastl na koleně", který mně osbně funguje, víc mě nezajímalo. Optimalizace a jiné fičurády nebyly účelem, tudíž zůstává prostor pro Vaši relizaci :-)

#!/bin/bash
#
# dirprint - Skript pro vytisteni všech "office" a pdf souboru v adresari
#
DIR=$1
PRINTER=$2

# Kontrola parametru
if [ "$DIR" == "" ] && [ "$PRINTER" == "" ]; then
echo "Syntaxe: dirprint [adresář] [tiskarna]"
exit
fi


# Kontrola existence adresare
if [ ! -d $DIR ]; then
echo "CHYBA: Adresář neexistuje! Zkontrolujte cestu a práva."
exit
fi

# Kontrola existence tiskarny
TEST=`lpc status all | grep "$PRINTER:" | sed -e "s/://"`
if [ "$PRINTER" != "$TEST" ]; then
echo "CHYBA: Špatné jméno tiskárny. Zkontrolujte jméno tiskárny"
printers=` lpc status all | sed -e '/^\s.*/d' | sed -e 's/://'`
echo
echo "Dostupné tiskárny v systému:"
echo "$printers"
exit
fi

# Vytisteni souboru ze zadaneho adreare
cd $DIR
for file in *; do
# Otestujeme zda jsou soubory PDF nebo Office dokumenty (MS nebo OOo)
mso=`file -b "$file" | grep '^Microsoft Office Document'`
ooo=`file -b "$file" | grep '^OpenDocument'`
pdf=`file -b "$file" | grep '^PDF document'`

# Office dokumenty vytiskneme pomoci OpenOffice.org
if [ "$mso" != "" ] || [ "$ooo" != "" ]; then
openoffice.org -pt "$PRINTER" "$file"
fi

# PDF lze tisknout primo
if [ "$pdf" != "" ]; then
lpr -P "$PRINTER" "$file"
fi
done

Skriptík stačí uložit například do  ~/bin, případně jinam, podle toho, jak máte nastavenou proměnnou $PATH a nastavit mu příznak spustitelnosti. Přítomnost OpenOffice ve většině desktopových instalací je dnes již snad samozřejmostí.

Takže Linuxu zdar a všemu studentstvu držím palce u zkoušek!

Diskuze (1) Nahoru