Portál AbcLinuxu, 26. května 2024 05:02

Porovnávání souborů PDF

10. 9. 2015 | David Kolibáč
Články - Porovnávání souborů PDF  

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.

diff-pdf

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.

diff-pdf

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.

DiffPDF

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í.

DiffPDF

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.

DiffPDF

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.

Další články z této rubriky

Praktický test komprese ZPAQ v programu lrzip
Porovnávání souborů PDF
Microsoft rozdává zadarmo stovky e-knih
Minimalistické prezentace s Markdown
Kde hledat Creative Commons a alternativy

Diskuse k tomuto článku

10.9.2015 11:40 VK
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin
Skvělý článek, neměl jsem tušení, že něco takového existuje. Jen víc takových. Díky.
xkucf03 avatar 12.9.2015 10:17 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
+1
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
⧠ A = 0 avatar 10.9.2015 16:56 ⧠ A = 0 | skóre: 10 | blog: Technokratovo_zrcadlo | Helsinki
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin
Corporate bullshit.
Nevolte zmrdy.
Fluttershy, yay! avatar 10.9.2015 19:01 Fluttershy, yay! | skóre: 92 | blog:
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Brought to you by the Corporate Bullshit Generator.
🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
11.9.2015 13:02 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin

konečně použitelný článek na abclinuxu. Jen tak dále

USE="-gnome -kde";turris
11.9.2015 16:49 tydyt
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin
Článek zajímavý ale praktické využití mě nenapadá. Jedině kdyby byly ke stažení PDF Mein Kampf pak zkoumal cenzuru ale jinde využití nevidím.
11.9.2015 20:29 jkb
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
my spolupracujeme na redakcnim systemu pro jedno vetsi nakladatelstvi a ti maji na rade webu take pdfka a prave pred nedavnem se ptali, zda je mozno ruzne verze nejak porovnat. Takze velky dik autorovi , hned to vyzkousime.
11.9.2015 18:02 fri
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF - DiffPDF
Odpovědět | Sbalit | Link | Blokovat | Admin

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.

Fluttershy, yay! avatar 14.9.2015 16:46 Fluttershy, yay! | skóre: 92 | blog:
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin
Díky za ohlasy.

Poznámka k lokalizaci: na Ubuntu mám DiffPDF implicitně anglicky bez ohledu na nastavení prostředí/systému; s českou lokalizací se spouští s parametrem --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.
🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
17.9.2015 20:07 fri
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF

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.

Fluttershy, yay! avatar 18.9.2015 20:58 Fluttershy, yay! | skóre: 92 | blog:
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
když už sis dal práci, nejprve nastavil spouštění v angličtině

wat

Nic jsem nenastavoval.

🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
19.9.2015 19:26 fri
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF

Něco jsi ale nastavit musel, je jedno kdy.

Ten pohled se taky mohl odehrát jinde a jindy.

Fluttershy, yay! avatar 19.9.2015 22:07 Fluttershy, yay! | skóre: 92 | blog:
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Mám tu úplně čerstvé Xubuntu, při instalaci jsem vybral jako jazyk češtinu… přesto je to anglicky.
🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
18.9.2015 12:21 Ivan
Rozbalit Rozbalit vše Re: Porovnávání souborů PDF
Odpovědět | Sbalit | Link | Blokovat | Admin
Kdysi jsem neco podobnyho scriptoval kdyz jsem testovali vlastni PDF rederer. Ghostview (anebo libfreetype2) nejspis pracuje s neinicializovanou pameti. Staci zmenit poradi objektu (treba fontu) v PDF a Antialising dopadne jinak. Kdyz porovnate bitmapy vyrenderovanych stranek, ktere by mely byt identicke, tak zjistite, ze se lisi v sedych bodech, ktere generuje antialiasing.

V pripade PDF souboru, ve kterych jsou pouze PS fonty se to nedeje.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.