Perl-skript " krypa " över nätet , siktning genom havet av HTML-sidor för information och oundvikligen att stöta på några av de miljontals Adobe Acrobat PDF-filer stänkte över Internet . Även om de är redo att skriva ut och attraktiv , ur synvinkel en sökrobot , PDF-filer är en något svårare nöt att knäcka än enkla , textbaserade HTML-sidor . Lyckligtvis , som med många webb aktiviteter , det finns ett Perl -modul som kan bidra till att göra livet lättare : CAM :: PDF . Detta programmeringsgränssnitt , men mestadels är avsedda att skapa och manipulera PDF-filer , har vissa verktyg som gör att skript för att söka sitt innehåll . Saker du behöver
Perl scripting miljö
CAM :: PDF Perlmodul
text eller kod redaktör Review PDF -fil
Visa fler instruktioner
1
Installera CAM :: PDF . Den cpan Verktyget ger det enklaste sättet att göra detta - starta cpan på kommandoraden och vid prompten skriver " install CAM :: PDF " ( utan citattecken )
2
Öppna en redaktör och . starta skriptet , ange följande rader för att starta Perl tolk och importera den nödvändiga modulen :
# /usr /bin /perluse CAM :: PDF ,
Tillsätt nästa två rader ! bearbeta kommandoradsargumenten att användaren kommer att passera in :
min $ file = skift, min $ search = skift,
det första argumentet som skickas till manuset kommer att vara namnet på en PDF . filen , och den andra , söksträngen
3
Skapa en ny CAM :: PDF-objekt genom att lägga till följande rad i skriptet :
min $ doc = CAM :: PDF - > nya ( $ file ) ;
Använda importerade modulens NumPages metod för att definiera den övre gränsen , skapa en slinga för att bearbeta varje sida av dokumentet :
foreach min $ p ( ( 1 .. $ doc -> NumPages ( ) ) ) {
4
i slingan , lägga till denna rad för att få varje sida av text från PDF-filen :
my $ str = $ doc - > getPageText ( $ p ) ;
Lägg nästa manus uttalande att dela upp sidans text upp i ett system av separata linjer :
@ rader = split ( /\\ n /, $ str ) ;
Avsluta slingan uttalande genom att ange en avslutande haken :
}
5
Slutligen , lägga till ytterligare en loop manuset att bearbeta varje rad på sidan och söka en match för användarens söksträngen som ett reguljärt uttryck . Om det reguljära uttrycket returnerar en match , skriver detta exempel linjen och sidnummer till stdout . I stället för dessa tryckta uttalanden , bör du genomföra för att bearbeta resultaten som behövs
min $ i = 0; . Foreach $ line ( @ rader ) { + + $ i , om ( $ rad = ~ /$ sökning /) { print " \\ " $ sökning \\ " hittades i linje $ i av sidan $ p \\ n"; print " $ line \\ n \\ n " } } Addera ditt