Tisk jen první a poslední stránky z pdf souborů v adresáři

Odkazy na zajímavé články ze světa Linuxu.
Zamčeno
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Tisk jen první a poslední stránky z pdf souborů v adresáři

Příspěvek od xsouku04 »

do souboru .bashrc ve svém domovském adresáři přidám následující řádky.

Kód: Vybrat vše

function tiskpdfPrvniAposledni(){
for file in $@
do
STRANEK=`pdfinfo $file|grep Pages|sed 's/[^0-9]*//'`
pdftk A=$file cat A1 A$STRANEK output - |pdftops -paper A4 - -|lpr -o media=A4;
done
}
Pro vytištění první a poslední stránky všech PDF souborů v adresáři, do konzole poté jen napíši.

Kód: Vybrat vše

tiskpdfPrvniAposledni  *.pdf
I u bash funkcí funguje doplňování klávesou tab. Tedy vlastně stačí napsat třeba tiskp a zmáčknout tab.

Samozřejmě místo *.pdf můžete napsat jiný "filtr" jako třeba 2015-11*.pdf kde tisknout se budou jen soubory z listopadu 2015.

V našem případě jsou PDF soubory až šedesátistránkové dokumenty, podstatné údaje pro účetní jsou ale vždy jen na první a poslední stránce. Díky oboustranné tiskárně se tak každý dokument vejde jen na jeden list papíru, ostatní lze archivovat elektronicky. A účetní se stále lépe pracuje s papírovými dokumenty, už třeba jen proto, že je může snadno přendávat z hromádky na hromádku (po zpracování), jak je zvyklá.
Není moc pravděpodobné, že by někdo potřeboval úplně to stejné, i tak to ale dobře demonstruje možnosti pomocných bashovských funkcí, které může být dobré si udělat na často opakující se operace se soubory jako tisknutí, skenování, zálohování a podobně. Samotná těla těchto funkcí jsou obvykle tak krátká, že dělat pro ně samostatný script je zbytečné. Příspěvek také píši tak trochu jako veřejnou poznámku sám pro sebe, kdybych to ještě někdy potřeboval. Dobrý kontrast je také v tom, že obvykle typický uživatel Windows by se při dělání podobných kancelářských operací mohl často zbytečně uklikat k smrti a nadělat přitom spousty chyb ...
MaT
Příspěvky: 364
Registrován: pát 29. bře 2013 14:35:14

Re: Tisk jen první a poslední stránky z pdf souborů v adresá

Příspěvek od MaT »

No pdftk používám k manipulaci s PDFky docela často - a mám na to právě napsané nějaké skripty na často používané operace. Asi by bylo dobré také zdůraznit, že v defaultu to většinou instalované není, je potřeba si repozitářů konkrétní distribuce nainstalovat patřičný balíček (většinou se to bude jmenovat pdftk).

Nástroj pdfinfo jsem sice už někde na něco použil také, ale zrovna v této úloze je podle mně zbytečný. Nemusím vědět celkový počet stránek, pdftk má i instrukci pro poslední stránku. Takže příkaz, který z jednoho pdf souboru vezme jen 1. a poslední stranu a uloží třeba do vystup.pdf vypadá nějak takto:

Kód: Vybrat vše

pdftk vstupni_vicestrankovy_soubor.pdf cat 1 end output vystup.pdf
Hlavně by mě asi nebavilo to z toho ještě vykosťovat pomocí sedu. Ten moc často nepoužívám, tak se vždycky syntaxi toho, co potřebuji, musím učit znovu. Spíš bych si na to asi napsal skript v Pythonu - ten má knihovnu pyPdf a ta umí v zásadě to samé, jako pdftk a pdfinfo...
MaT
Příspěvky: 364
Registrován: pát 29. bře 2013 14:35:14

Re: Tisk jen první a poslední stránky z pdf souborů v adresá

Příspěvek od MaT »

Když tak o tom přemýšlím, to pdf4ps je tam možná také zbytečné, alespoň mně tedy v poslední době myslím lpr sežere klidně rovnou i PDFka (ono je to stejně jen nějak obalený PostScript). CUPS (resp. lpr) má myslím něco jako filtry na vstupu a ty si prostě zrovna s formátem PDF poradí.
Zamčeno