PDF-ből html vagy txt

PDF -- mindenki ismeri ezt a formátumot. Egy hasznos CLI, azaz parancssoros megoldást mutatok be a pdf-ek konvertálásához.

Pár alkalommal pdf-ből ki kellett másolni egy szöveget, vagy egy képet. Ez egypár mondatnál, vagy egy képnél nem fárasztó, de ha sok képről, vagy szövegről van szó, akkor már az.

Jó lenne, valami „szövegesebb” megoldás erre. Web-es leírások a pdftohtml-t ajánlják ehhez, vagy pedig webes oldalakat. Webes felületek nagyon jók, de korlátos oldalszámot engednek, ami jó pár tucat oldalra, de komolyabb mennyiségre nem.

Más programokat is említenek, de nekem most előfeltétel, hogy az alaptárolókban legyen, és ne kelljen semmit fordítani, vagy külső forrásból telepíteni.

Fedora 28-on és a MX linuxon is már telepítve van a poppler-utils, ha a saját disztribúciódban nem, akkor az ott megszokott módon telepítsd fel.

Én kétféle paraméterrel használtam:

pdftohtml -q -p -c teszt.pdf

Ezzel minden oldal külön html-be kerül, a képeket külön fájlba menti.

pdftohtml -noframes -q -p -c 1.pdf

Egy html fájlt készít el, így könnyebb kezelni, vagy tovább feldolgozni. Ha nagy (nekem 950 oldal, sok kép és tábla) a pdf, akkor az elkészített html betöltése lassabb lesz, így ajánlott valami könnyített webböngészőben nézegetni. A nagy méretű pdf-eknél érdemes az előbbi megoldást használni, nehogy nehézkessé váljon a nagy html + több száz kép kezelése egy gyengébb gépen.

A futása korrekt, a 950 oldalt két perc alatt konvertálta.

A kimenet elfogadható minőségű.

Praktikus, ha minden pdf-et külön könyvtárba rakva konvertálsz, mert így könnyebb kezelni a sok fájlt tartalmazó kimenetet.

A fenti paraméterezésen kívül sok egyéb megoldás is lehetséges, így érdemes a pdftohtml -h és a man pdftohtml olvasása is.

Amit fontos tudni: ez nem OCR program, azaz ha sok képből összefűzött „pdf”-et kapsz, azt nem fogja jól feldolgozni. A "valódi" pdf-re van kifejlesztve, nem az összetákoltakra!

A poppler-utils csomag több pdfto... eszközt is tartalmaz, ha csak a szövegre van szükséged a pdftotext használd. Gyorsabb, kisebb fájlt készít, de képek és táblázatok nélkül. Illetve a táblázatokat nem kezeli, de sok esetben azokat próbálja szövegként konvertálni, ami csúnya lesz.

Jogos kérdés, hogy az alábbi megoldás miért nem jó:

libreoffice6.1 --infilter="writer_pdf_import" --convert-to odt 1.pdf

Hiszen a libreoffice tud pdf-et importálni és a fenti parancssor teljesen korrekt és müködőképes. Egyrészt nagyon lassú, az általam tesztelt több száz oldalas dokumentumot fél óra alatt konvertálta át. Ami ennél is nagyobb gond, hogy a minősége messze elmaradt az általam ajánlottól.

Ennyi... a feladat megoldva.

Az eredeti bejegyzés a blogomban jelent meg