Hlavní navigace

Utility pro práci s PDF: rozdělení, spojování, transformace

Petr Krčmář

PDF je velmi rozšířený formát dokumentů, který má spoustu výhod. Občas se hodí přijaté PDF mírně upravit, rozdělit na víc dokumentů nebo jej naopak různě přeskládat. Ukážeme si utility, které to dokáží.

Doba čtení: 4 minuty

Sdílet

PDF je v zásadě statický dokument určený k prohlížení a především k tisku. Někdy se ale hodí do dokumentu zasáhnout. K tomu vám může pomoci některá z řádkových utilit, které si dnes představíme. Co všechno se tedy dá snadno s PDF dělat?

Vytvoření PDF z obrázků

Začneme tím, že si jednoduché PDF vyrobíme. Máme sadu obrázků a chceme z nich udělat jeden dokument. Dejme tomu, že jsme si naskenovali nějakou smlouvu a protistrana ji od nás chce právě v PDF. Pomoc je snadná, poslouží nám k tomu utilita convert z balíčku ImageMagick.

Ta umí konvertovat mnoho různých formátů, především těch obrázkových. Dobře si ale poradí i s PDF. Základní použití je velmi přímočaré:

$ convert *.jpg vystup.pdf

Utilita convertspoustu parametrů, v souvislosti s PDF by vás mohly zajímat -density pro nastavení DPI, -quality pro konfiguraci kvality obrázků uvnitř PDF a také -trim pro odstranění zbytečných okrajů u obrázků.

Výběr některých stránek

Máte velké PDF, ale potřebujete z něj jen několik stránek, které odešlete kolegovi k vytištění. Nebo potřebujete odstranit nepovedený úvod, který později nahradíte vlastními stránkami. V tom vám pomůže utilita pdftk ze stejnojmenného balíčku.

$ pdftk vstup.pdf cat 1-12 output vystup.pdf

Tento příkaz do výstupu vybere jen prvních dvanáct stránek. Můžete takto ale snadno odebrat třeba jen třináctou stranu, pokud za seznam stránek přidáte 14-end. Takto lze vybírat libovolné stránky či rozsahy oddělené mezerou a ty se pak objeví ve výstupním souboru.

Sloučení několika dokumentů

Výše uvedeným postupem můžeme rozsekat dokumenty na vybrané listy, ale ty pak budeme chtít spojit. K tomu je určena utilita pdfunite z balíčku poppler-utils. Použití je velmi jednoduché:

$ pdfunite vstup1.pdf vstup2.pdf vstup3.pdf vystup.pdf

Zašifrování PDF

Utilita pdftk toho umí ještě mnohem více, hodit se může například zašifrování PDF. To má dvě úrovně: vlastnickou a uživatelskou. První po zadání hesla odemyká možnosti tisku, kopírování obsahu, podepisování dokumentu a podobně; druhá je potřeba pro samotné čtení dokumentu. Obě hesla můžeme nastavit zároveň:

$ pdftk vstup.pdf output vystup.pdf owner_pw heslo1 user_pw heslo2

Dešifrování PDF

Užitečnější bude pravděpodobně zpětný proces, tedy dešifrování přijatého PDF. Pokud vlastnické heslo známe, je postup analogický předchozímu příkladu:

$ pdftk vstup.pdf input_pw heslo1 output vystup.pdf

Získáme tak stejný dokument, nebude však už chráněn heslem a otevírat jej budeme standardním způsobem.

Prolomení hesla

Horší situace nastává, pokud heslo neznáme. Také tady nám může pomoci šikovná utilita, tentokrát s názvem pdfcrack ve stejnojmenném balíčku. Hádání hesel je poměrně časově náročné a samozřejmě záleží na délce a kvalitě hesla.

$ pdfcrack vstup.pdf

Ve výchozím stavu utilita hádá jen uživatelské heslo, pokud chceme zkoušet i to vlastnické, přidáme parametr -o. Hodí se vědět i o dalších parametrech, které umožňují například nastavit minimální délku zkoušeného hesla ( -n), dovolují odkázat na soubor se slovníkem ( -w) nebo umí omezit množinu použitých znaků na ty vybrané ( -c). Číselné heslo je takto odhaleno během několika sekund.

$ pdfcrack vstup.pdf -c 1234567890 -o

PDF version 1.5
Security Handler: Standard
V: 2
R: 3
P: -3904
Length: 128
Encrypted Metadata: True
FileID: 848ae446f1817fc85f9babbbf1042f78
U: b2f5f1c3f4058e0e6bae6bfc27ba420900000000000000000000000000000000
O: 079852154b9eb958a74f285c758a81fffb7a564759c288fc0c43addafe27e796
found owner-password: '658414'
found user-password: '891347'

Více listů na stranu

Nejen k úspornému tisku se hodí možnost připravit si PDF s více listy na jedné straně. Budeme k tomu potřebovat balíček texlive-extra-utils s z něj v tuto chvíli konkrétně utilitu pdfjam. Řekněme, že máme dvě stránky, které chceme takto spojit a vytisknout na jeden papír.

$ pdfjam vstup1.pdf vstup2.pdf --nup 2x1 --landscape --outfile vystup.pdf

Výroba brožurky

Na školeních a workshopech dávám lidem do ruky vytištěnou brožurku, podle které pak společně děláme praktická cvičení. Brožurka vzniká pomocí XeLaTeXu jako normální PDF ve formátu A4. Já z ní ale vyrábím sešitek ve formátu A5, který vzniká oboustranným vytištěním a přeložením v polovině stránky na šířku.

K tomu je potřeba stránky poskládat správně tak, aby na prvním listu byla poslední a první strana a zezadu pak druhá a předposlední a tak dále. Naštěstí to není potřeba dělat nijak ručně, pomůže utilita pdfbook z už zmíněného balíčku texlive-extra-utils.

$ pdfbook vstup.pdf

Výstupem je pak soubor vystup-book.pdf, který obsahuje hotovou poskládanou brožurku, kterou stačí jen správně oboustranně vytisknout a přehnout.

Odstranění okrajů

Součástí už dvakrát zmíněného balíčku texlive-extra-utils je i utilita pdfcrop, která slouží k odstranění okrajů u již hotových PDF dokumentů. Použití je opět velmi podobné předchozímu příkladu, prostě jí stačí jako parametr předhodit PDF a výstupem je soubor vystup-crop.pdf, už bez okrajů.

Někdy je naopak potřeba okraje přidat, k čemuž poslouží stejná utilita. Pomocí parametru --margins můžete nastavit postupně levý, horní, pravý a spodní okraj. Jednotky jsou bp (big point), tedy 1/72 palce.

$ pdfcrop vstup.pdf --margins "20 20 20 20"

Máte další tipy?

Některé zde zmíněné utility jsou mnohem mocnější a často jsou i vzájemně zastupitelné. Cílem článku bylo ukázat nejběžnější úpravy, které se v praxi s PDF mohou hodit. Autor sám je v praxi používá.

Máte další nápady na využití těchto či dalších utilit k úpravám PDF? Podělte se v diskusi.