Találtam egy hasznos cikket a Full Circle Magazine legfrissebb számában. Készíettem egy tartalmi összefoglalót, talán érdekel valaki mást is.
------------------------------------------------------------
PDF-Page-Grep szkript
Írta: Lucas Westermann - megjelent a Full Circle Magazine 89. számában (2014. október)
Hivatkozás: http://fullcirclemagazine.org/issue-89/
A cikkben leírt és megosztott szkript célja, hogy pdf fájlokban meghatározott szavakat keressen. A találatokat tartalmazó oldalakat egyetlen pdf fájlba gyűjti össze.
Szükséges csomagok:
- grep
- pdfinfo (poppler utils)
- pdfunite (poppler-utils)
- pdftotext (poppler-utils)
- pdfjam.
A szkript
A legutolsó változat innen tölhető le: http://homepages.dcc.ufmg.br/~lcerf/en/utilities.html#pdf-page-grep
A letöltési hivatkozás („download it”) az „Installation alatt található.
Hogy ne kelljen minden egyes alkalommal a teljes elérési utat megadni az indításához lehetséges megoldások
- szimbolikus linket kell készíteni a /usr/bin könyvtárba (root-ként)
ln -s /útvonal/a/szkripthez /usr/bin/pdf-page-grep
- a home könyvtárban létrehozni egy szkript könyvtárat és azt a PATH változóba berakni.
Használata
- Telepítsd a függőségeket.
- Tedd végrehajthatóvá (root-ként: chmod +x /útvonal/a/fájlhoz)
- Futtasd a szkriptet vagy
— argumentumok nélkül – megjeleníti a felhasználási információkat, vagy
— a felhasználási információk szerint argumentummal.
pl. pdf-page-grep -i valami*.pdf pattern: akármi (a keresett minta)
vagy pattern: (üres, a leállításhoz)
További opciók:
„-E” - kiterjesztett szabályos kifejezés;
„-F” - fix karaktersort;
„-P” - szabályos Perl kifejezések;
„-w” - teljes szóegyezés;
„-x” - teljes soregyezés.
Működése
1.-7. sor: készítői információk, környezeti változók beállítása. Az egyetlen használt változó a SUFFIX (alapértéke: -matches (találatok)) amit az új PDF-fájlhoz fúz hozzá.;
9.-25. sor: argumentum meglétét vizsgáló „if” kifejezés.
27.-28. sor: a pdf-et konvertáló pdftotxt számára átmeneti könyvtár meghatározása.
29.-30. sor: a „trap” paranccsal üríti ki az átmeneti könyvtárat megszakítás, vagy kilépés esetén.
31.-44. sor: egy „while” hurok a kereséshez, ami addig él , amíg üres keresési mintát nem kap. A minta lehet szabályos kifejezés.
46.-54. sor: elválasztójel keresése, ami jelzi számára, hogy keresési minta következik. (Probléma akkor lehet, ha a fájl(ok) neve elválasztójellel kezdődik, ami pedig elég ritka.)
56.-93. sor: az előző ellentetje, ami az elválaszójel hiányából a fájlnevet azonosítja be, majd új sort ír ki az egyes találatokra „matching pages in <fájlné>:<oldalak az egyezéssel>”. Végeredményben lesz egy listád az átnézett fájlokról, a bármely kifejezéssel egyezést tartalmazó oldalakról. A téynleges keresést a txt-re konvertál szövegen a grep parancs végzi el. Egyezés esetén a grep az oldal számát a $sel változóba írja bele, majd lép a következő oldalra. Az utolsó két sor tartalmazza a találatok mentésének helyét és a találatokat tartalmazó pdf-ek darabszámát. A lapok átnézése után kivonatolja az egyező lapokat egy átmeneti fájlba, törli az egyező lapok listáját, majd a legutolsó fájl nevét feljegyzi.
96.-101. sor: a találatokat tartalmazó pdf-ek darabszámát ellenőrzi. Ha nem „0”, akkor továbblp, egyébként kilép.
102.-112.sor: a találatok számát kezeli. Ha egyetlen van, akkor a „pdfunite” ne várjon további összefűzhető. Egynél több esetén indul a pdfunite és egyesíti őket a -matches.pdf-be
113.sor: kiírja a kimeneti fájl nevét.
A szkript egyes részeire vonatkozó konkrét kérdés esetén az „Ez az e-mail cím a spamrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.” e-mail-címre kell üzenetet küldeni.