Portál AbcLinuxu, 2. května 2025 15:11
Tisknout nějaký delší dokument pouze na jednu stranu listu je plýtvání papírem a bohužel jen málokomu stojí za námahu se zabývat oboustranným tiskem.
V některých situacích je dokonce, bůh ví proč, jednostranný tisk přímo vyžadován (diplomky na některých školách). Nejvíce papírů a lesů se samozřejmě ušetří tím, zůstane-li vše v elektronické podobě, ale to je čistá utopie.
Po tomto kontroverzním úvodu se pokusím uvést návod, jak tisknout na obě strany papíru.
Předpokládejme, že není k dispozici tzv. duplexní tiskárna, která je schopná potisknout obě strany papíru bez zásahu uživatele. Takže řeč bude o obyčejné tiskárně, do které je nutno papír potištěný z jedné strany znovu vložit tak, aby se potiskl i ze strany druhé. Vložíte-li potištěný papír znovu do tiskárny zcela nahodile, statistika praví, že to v 75% případů zkazíte. Zkušenost ukazuje, že je to obvykle ještě horší. A to mluvím o situaci, kdy dokument má jen jednu stranu. Je-li dokument delší a je třeba mít na paměti sudé a liché stránky, jejich pořadí a vzájemné lícování, je téměř nemožné to napoprvé zvládnout bez chomáče vyrvaných vlasů a plné krabice s nápisem zkažené papíry.
Existují různé druhy tiskáren, ale dvě vlastnosti, ze kterých budu vycházet, by měly mít všechny tiskárny.
Nepovažuji se za znalce tiskáren, ale všechny tiskárny, se kterými jsem se dosud setkal, tyto vlastnosti splňovaly. Jsou to vlastnosti celkem pochopitelné a lze předpokládat, že se takto chová drtivá většina tiskáren.
Je zřejmé, že na každém listu papíru bude z jedné strany natištěna lichá strana a z druhé sudá. Počítáme-li strany od 1, bude pořadí stran 1-2, 3-4, 5-6 atd.
Tisk je nutno provést dvouprůchodově - zvlášť sudé a zvlášť liché strany. Vzhledem k tomu, že liché strany jsou na opačné straně papíru než sudé, je nutné celý balík papírů potištěných z jedné strany otočit a znovu vložit do tiskárny. Otočením se ovšem obrátí pořadí stránek, takže se papíry kromě otočení musí ještě přeskládat nebo buď liché nebo sudé strany tisknout v opačném pořadí. Pohodlnější je samozřejmě tisk v opačném pořadí.
Po vytištění by bylo dobré, aby s dokumentem nebylo potřeba nic dalšího dělat (přeskládávat), takže aby první strana, kterou uvidíme, byla strana s číslem 1. Přihlédneme-li k první vlastnosti běžné tiskárny (viz výše), je zřejmé, že liché strany tudíž necháme v původním pořadí (1, 3, 5, 7, ...). Z toho vyplývá, že musíme obrátit pořadí stránek sudých (..., 8, 6, 4, 2).
V případě, že má dokument sudý počet stran, je situace jednoduchá, protože je jedno, jestli vytiskneme nejdříve sudé stránky a potom liché. Ale jestliže má dokument lichý počet stran, bude počet lichých stránek o jednu vyšší než počet stran sudých. Jako příklad můžeme uvažovat např. pět stran číslovaných 1 - 5. Poslední list bude potištěn pouze z jedné strany a tato poslední strana bude lichá. Kdybychom vytiskli nejprve liché strany, vyjedou z tiskárny tři listy se stranami 1, 3, 5. Při pokusu o tisk sudých stran (již víme že v obráceném pořadí) bychom získali listy potištěné stranami 2-3, 4-5, což zaprvé nechceme (chceme 1-2, 3-4, 5) a zadruhé by list s první stranou zůstal v tiskárně a ani by nevyjel. S tím listem v tiskárně to není žádný problém, trochu horší je, že po první stránce následuje prázdná stránka. To pořád ještě nemusí být kritické, ale smůla je, když se u dokumentu počítá s okrajem pro svázání. Takto pokažený výtisk by svázat nešlo, protože by okraje byly na každém listu jinak. Často totiž bývá u lichých stránek širší levý okraj a u sudých stránek širší pravý okraj právě kvůli vazbě.
Jsou možná tři řešení:
psmandup
, o kterém bude řeč později.Když z tiskárny vyjedou sudé stránky a chystáme se na tisk stránek lichých, jak vlastně balík potištěných papírů vložit zpátky do tiskárny? V souladu s druhou vlastností obvyklých tiskáren platí, že stránka se tiskne odshora dolů, takže potištěné papíry je třeba natočit tak, aby šly do tiskárny "hlavou napřed". Pozor, situace není tak zřejmá v případě, když je dokument vysázený "na šířku" (landscape), protože se těžko určuje, kde je nahoře a kde dole. V takovém případě je nutno sledovat např. na kterém okraji jsou čísla stran a toto dodržet i u druhého průchodu. Jednodušší ale je držet se pravidla, že vytištěný balík papírů otáčíme vždy pouze kolem příčné osy, nikdy ne kolem podélné.
Zbývá si ještě ujasnit poslední stupeň volnosti. Při druhém průchodu se tisknou strany liché, a to v normálním (tj. vzestupném) pořadí. Balík listů potištěných sudými stranami z prvního průchodu se musí otočit tak, aby byly strany seřazeny vzestupně, tj. 2, 4, 6, ..., takže jako první musí jít do tiskárny list se stranou 2.
Tisknout sudé strany v opačném pořadí a liché strany v původním pořadí umí většina programů, od kterých se to očekává, např. OpenOffice.org či Acrobat Reader. Z příkazové řádky lze tímto způsobem tisknout také snadno, máme-li jako vstupní formát pro tisk postscript nebo PDF. Z PDF lze totiž vyrobit postscript například takto:
pdftops -paper A4 neco.pdf neco.ps
|
Pro oboustranný tisk existuje příkaz psmandup
, který ze
vstupního postscriptového dokumentu vytvoří jiný, určený pro přímý tisk.
Pořadí stránek se změní na (1,3,5,7,9,...,10,8,6,4,2). Liché stránky
jsou tedy jako první, pak následují sudé v obráceném pořadí. Toto
je zdánlivě v rozporu s předchozím doporučením, že sudé stránky
je vhodné tisknout jako první. V tomto případě to ale nevadí, protože
celkový počet stran výsledného souboru je vždy sudý. psmandup
se o to postará tím, že přidává jednu prázdnou lichou stránku v případě,
že počet stran původního dokumentu byl lichý. Je tudíž jedno, jestli
se tisknou nejprve liché nebo sudé.
psmandup
dále využívá faktu, že některé tiskárny si umí vzít
papír buď z hlavního zásobníku nebo z ručního podavače. Uprostřed postscriptového
dokumentu, tedy tam, kde končí liché strany a začínají sudé, je řídící
sekvence pro tiskárnu, aby si brala papír z ručního podavače. Je dobré
být v kritickém okamžiku poblíž tiskárny, protože je potřeba stihnout
vložit potištěné papíry do zásobníku. Použití je jednoduché:
psmandup tisk.ps | lpr
|
Řešení pomocí psmandup
má své výhody i nevýhody. Máte-li síťovou
tiskárnu, jistě oceníte, že v průběhu tisku vám nikdo nemůže potisknout
druhou stranu papírů nějakými nesmysly (kdyby byl dost rychlý).
psmandup
totiž vytvoří jeden soubor a tudíž
jen jednu tiskovou úlohu, takže do fronty vám nikdo jiný nezasáhne.
Nevýhodou je, že manuální zásobník mívá jen omezenou kapacitu ve srovnání
s hlavním zásobníkem a navíc - některé tiskárny mají pouze jeden zásobník.
Mně osobně se moc nelíbí, že se nejprve tisknou liché stránky a pak
sudé, což je v mírném rozporu s výše uvedenými zásadami. Jako berlička
se používá ono přidávání prázdné stránky navíc, aby počet stran byl
vždy sudý.
Další možností je použití programu
psselect
, který dokáže z postscriptového dokumentu
vybrat jen určité stránky a uložit je do zváštního souboru, případně
poslat na standardní výstup. Přesměrováním do příkazu
lpr
se dokument rovnou vytiskne.
Sudé stránky v opačném pořadí vytiskneme takto:
psselect -e -r tisk.ps | lpr
|
liché stránky v původním pořadí takto:
psselect -o tisk.ps | lpr
|
Některé tiskárny jsou zrádné a v nejnevhodnější chvíli sežerou papír,
pomuchlají jej a posypou nezapečeným tonerem, takže výsledek jsou
černé ruce a chaos v číslování stran. Máte-li podezření, že vás
tiskárna může takto překvapit, je lepší tisknout dokument po částech.
Opět je možné použít příkaz psselect
:
Bylo by samozřejmě možné napsat
psselect -e -r -p1-5 tisk.ps | lpr
|
což vytiskne stránky 4 a 2 (pozor, za parametrem -p
nesmí být
mezera). Asi je zřejmé, proč je číslování právě takové,
ale než se tím zabývat, bude lepší si vytvořit dva pomocné
postscriptové soubory - s lichými stranami a se sudými stranami
v opačném pořadí,
psselect -e -r tisk.ps sude-opacne.ps
|
a tyto soubory pak posílat na tiskárnu po částech. Pak sice přestane souhlasit číslování stran (např. 1-5 u lichých ve skutečnosti znamená 1,3,5,7,9) ale má to i své výhody. Například příkazy
psselect 1-5 sude-opacne.ps | lpr
|
Vytisknou dvacetistránkový dokument po blocích o pěti stránkách. Parametr
-p
je v tomto kontextu nepovinný.
Pro úplnost dodávám, že
psselect 1- sude-opacne.ps | lpr
|
vytiskne celý postscriptový soubor, tj. všechny stránky od začátku až do
konce. Použití příkazu psselect
je v tomto případě zbytečné,
uvádím jej pouze jako ukázku zadávání rozsahů stran.
psselect
+ ghostviewZpůsobů tisku je mnoho, ale pro běžnou praxi bych doporučil kombinaci příkazu
psselect
a klikacího ghostview (spouští se příkazem
gv
).
Nejprve rozdělte dokument na dva: s lichými a sudými stránkami
(sudé v opačném pořadí) podle předchozího návodu a poté oba dokumenty
tiskněte pomocí ghostview
gv sude-opacne.ps ; gv liche.ps
|
kde lze pravým tlačítkem myši pohodlně označit rozsah stran.
Ve volném pokračování tohoto článku se pokusím popsat zmenšování dokumentu tak, aby se jednu stranu papíru vešly dvě stránky dokumentu. Přeji vám co nejméně zkažených papírů a jiných komplikací.
psnup
(ten uz tu nekdo citoval) a take mpage
. Oba umi zmensit 2 (ci 4 atd.) stranky na jednu, pripocteme-li k tomu jeste obostrany tisk mame 100 strankovy na 25 listech. Na vytisknuti bookletu je perfektni psbook
.
Jinak mpage
jsem s uspechem pouzival pred par lety i ve windows.

hp8550:\ :lp=xxx.xxx.xxx.xxx%9100:\ :sd=/var/spool/lpd/hp8550-2:\ :if=/usr/lib/ifhp/ifhp -Tmodel=hp8550,debug=65535,trace,a4:To xxx.xxx.xxx.xxx je IP tiskarny. Filtr ifhp vlozi do postcriptu spec. komentar, ktery aktivuje duplexni jednotku. Funguje to na vsech HP tiskarnach.
psbook mujposcript.ps | psnup -2 > out.psa do out.ps dam - skriptem - parametr pro oboustranny tisk:
sed -e '1 i\ %%BeginFeature *Duplex true\ << /Duplex true /Tumble true >> setpagedevice\ %%EndFeature'tento skript mam primo v printacpu - muzu poslat - takze ve skutecnosti je to:
psbook mujposcript.ps|psnup -2 > out.ps;lpr -Pduplex out.ps
Nikdo ti tu nikdy nebude upirat nazor, ze nejaky program nebo OS je lepsi nez jiny. Je to tvuj nazor a mas plne pravo jej vyjadrit. Mozna s nim nekdo nebude souhlasit, ale nepovede to k cenzure. Co vsak k cenzure povede, to je takovy vpravde 'omezene' napsany vykrik, ktery nejenze vlastne ani zadny nazor nenese, ale navic je i formulovan zjevne tak provokativne, aby vyvolal zcela neplodnou prestrelku o necem, co s clankem vubec nesouvisi (tim samozrejme nemyslim programy pro tisk, ale zcela zbytecnou hadku o tom, jestli nekomu muze stat za to prejit na Linux).
Reknu to jeste jinak, aby nedoslo k nedorozumeni: To, jak jsi ted popsal vyhody win reseni oproti tomu, ktere je popisovane v clanku, mozna vyvola par usklebku, ale je naprosto v poradku. Ten cenzurovany prispevek je vsak uplne bezcenny a jak jsem jiz rekl, provokativne napsany. Jako takovy snizuje uroven diskuze a vytvari atmosferu zralou pro flame a ne pro plodnou diskuzi.Dovedu si to více než živě představit. Tisknu rád a hodně a až moc často mi z toho tekly nervy, měl jsem z toho kuří oka, křečové žíly a kruhy pod očima.
Moje tiskárnička je poněkud staršího data (HP LaerJet 4L), a tak k ní musím být tolerantní.
Žel, mně moc nepomůže, když si vytisknu napřed sudé stránky a potom liché. Při takovémhle počítání se zkrátka vždycky přepočítám, protože tiskárna dost často nabere dva i více papírů nebo se v ní papír zasekne.
Nic naplat, pokud chci opravdu minimalisovat ztrátu papíru, toneru a nervů, musím tisknout všecko hezky popořadě. Lichou - otočit - sudou - založit - lichou ... Jenže žádný tiskový program, který znám, se vás už nezeptá, jestli se stránka povedla. On prostě jede dál.
Tak jsem se naštval a napsal jsem si na to vlastní prográmek v Pythonu. Možná vypadá dosti obskurně, protože převádí postscript na obrázky, a ty ukládá na disk. Ale funguje spolehlivě; hlavně mi dovoluje ihned zopakovat nepovedené listy. Tisknu teď manuál o 2037 stránkách (8 stránek na jednu stranu papíru, 16 str. na list: 128 listů), trvá to sice děsně dlouho, musím pořád obracet papíry, ale ztráty jsou minimální (6 zkažených listů: 4,7%)
Kdyby měl někdo zájem, rád poskytnu či zveřejním kód.
Pavel
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.