Portál AbcLinuxu, 6. května 2025 09:44
Několik podobných dokumentů, prezentace z různých let, více vydání jedné knížky,… Možná jste se někdy potřebovali podívat na rozdíly mezi nimi. Nástroje pro porovnávání textových souborů jsou rozšířené a docela známé. Ale co v případě PDF? Převod dokumentu na text si neporadí s netriviální sazbou, vzorci a už vůbec ne diagramy či obrázky, a to PDF soubory zvláště ze skenerů bývají jako bitmapové obrázky celé. Naštěstí i pro GNU/Linux existuje pár aplikací, které jsou k řešení právě tohoto problému určené: nesou vcelku nenápaditá jména diff-pdf a DiffPDF.
Jeden způsob, jak přistoupit k vizuálnímu porovnání dvou dokumentů, je překrýt je jako obrázky přes sebe. Přesně to dělá diff-pdf. Spouští se příkazem
$ diff-pdf --view soubor1.pdf soubor2.pdf
kde samozřejmě dosadíme jména souborů, které chceme srovnat. V novém okně se zobrazí pohled na překryté stránky; odpovídající vrstvy můžeme posouvat tlačítky s šipkami v horní části obrazovky.
Pokud interaktivní rozhraní nepotřebujeme, můžeme diff-pdf
nechat uložit výsledek porovnání do nového souboru příkazem
$ diff-pdf --output-diff=vystup.pdf soubor1.pdf soubor2.pdf
Takový přístup se hodí k rychlému prohlédnutí drobných změn v textu či ilustracích, a to bez ohledu na to, jak soubor PDF vznikl, ať už jde o skenování, nebo třeba různé metody vkládání diakritiky. Na druhou stranu, tvrdě narazí při výraznější úpravě sazby nebo změně pořadí stránek.
Zdrojové kódy aplikace jsou k mání na GitHubu pod GNU GPL. diff-pdf
je napsaný v C++ a závisí na knihovnách Cairo, Poppler a wxWidgets.
Uživatelé Ubuntu najdou diff-pdf v repozitáři GetDeb, balíčky jsou také v openSUSE Build Service a třeba v případě Arch Linuxu najdeme záznam v AUR.
Sofistikovanější srovnání umožňuje DiffPDF, resp. řádkový comparepdf. Jde o aplikace dnes již neudržované, stále však dostupné pod GNU GPL. Ze závislostí jsou potřeba knihovny Qt4 a Poppler; kód je v C++. Uživatelské rozhraní DiffPDF je jednoduché – vystačit si můžeme s toliko třemi tlačítky pro výběr souborů a porovnání – ale poskytuje několik velmi užitečných funkcí.
V prvé řadě si DiffPDF poradí s přidanými nebo přeházenými stránkami. Do pole Strany můžeme zadat seznam stránek, jak se mají z daného souboru brát. Čísla se oddělují čárkami a příp. můžeme použít spojovník pro zkrácený zápis rozsahu. Např. 2, 1, 6-9
pro jeden dokument a výchozí hodnota pro dokument druhý srovná dvojice stránek <2, 1>, <1, 2>, <6, 3> až <9, 6>.
Podstatná je také možnost výběru režimu porovnání (Porovnat) na kartě Ovládání. DiffPDF podporuje jak srovnání podle vzhledu (Vzhled), tak i podle obsahu (Znaky nebo Slova). V náhledu na stránky dokumentů budou barevně zvýrazněny odlišnosti; barvu můžeme změnit v dialogu Volby vyvolaném z karty Činnosti. Pokud provádíme srovnání textů psaných hláskovým písmem (obvykle latinkou), je žádoucí použít režim Znaky. Režim Slova je primárně vhodný pro texty psané logografickým písmem, ale může posloužit i tehdy, pokud chceme zvýraznit odlišně dělená slova (na konci řádků).
Pokud zkoumané dokumenty obsahují na každé stránce hlavičku či patičku, která se liší např. v datu – typické je to pro prezentace v Beameru – můžeme tuto část stránky vynechat ze srovnání. Na kartě Okraje označíme Vyloučit okraje a buď pro kýžený okraj stránky přímo nastavíme velikost ignorovaného pruhu, nebo kliknutí do náhledu stránky umístí příslušnou hranici.
Jestliže nám však na takových záležitostech nesejde a zajímá nás pouze to, zda se PDF (potažmo stránky) liší, postačí výše zmíněný comparepdf
, který se volá příkazem
$ comparepdf [režim] soubor1.pdf soubor2.pdf
kde [režim]
můžeme vynechat nebo je ho nahradíme argumentem -ct
pro srovnání na úrovni textu (výchozí), nebo -ca
pro vizuální porovnání.
DiffPDF je k mání přímo v oficiálních repozitářích Debianu, Fedory, Ubuntu aj.
konečně použitelný článek na abclinuxu. Jen tak dále
Rozhraní jsem přeložil do češtiny, takže mě zarazilo, když se změnil obchodní model. Někdo by mohl zazálohovat zdrojové soubory.
http://www.fripohled.blogspot.cz/search/label/DiffPDF
Tímto chválím Davida Kolibáče.
--language=cz
, ale učinil jsem tak jen pro účely článku, protože na první pohled mi bylo bohužel jasné, kdo překlad dělal.
Poznámka k využití: já tím porovnával různé revize závěrečné práce při sazbě (před odevzdáním do tisku), slajdy z různých let, když jsem se učil ke státnicím, a nějaké formuláře.
A co před komisí, dal's to?
Jinak, když už sis dal práci, nejprve nastavil spouštění v angličtině, a potom spustil program v češtině (kvůli obrázkům, to se rozumí), měl jsi jich pořídit víc.
když už sis dal práci, nejprve nastavil spouštění v angličtině
wat
Nic jsem nenastavoval.
Něco jsi ale nastavit musel, je jedno kdy.
Ten pohled se taky mohl odehrát jinde a jindy.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.