Perl scripts " kriechen " über die Bahn , Sichtung durch den Ozean von HTML-Seiten zur Information, und unweigerlich stoßen einige der Millionen von Adobe Acrobat PDF-Dateien über das Internet gestreut . Obwohl sie bereit zum Drucken und attraktiv, aus der Sicht eines Web-Crawler , sind PDFs eine etwas härtere Nuss zu als einfache , textbasierte HTML-Seiten zu knacken. Zum Glück wie bei vielen Web- Aufgaben , gibt es ein Perl-Modul , die helfen das Leben leichter machen können : CAM :: PDF . Diese Programmierschnittstelle , wenn auch meist bestimmt zum Erstellen und Bearbeiten von PDF-Dateien , hat einige Dienstprogramme, die Script ermöglicht, ihre Inhalte suchen. Things You
Perl Scripting-Umgebung
CAM :: PDF Perl Modul
Text oder Code-Editor
PDF Datei
brauchen anzeigen Weitere Anweisungen
1
Install CAM :: PDF . Die cpan Dienstprogramm bietet den einfachsten Weg , dies zu tun - starten cpan in der Befehlszeile und in der Eingabeaufforderung "install CAM :: PDF " (ohne Anführungszeichen)
2
Öffnen Sie einen Editor und . starten Sie das Skript , die Eingabe der folgenden Zeilen , um die Perl-Interpreter zu starten , und importieren Sie das erforderliche Modul :
# /usr /bin /perluse CAM :: PDF;
Fügen Sie die nächsten beiden Zeilen zu ! verarbeiten die Kommandozeilen-Argumente , die der Benutzer in übergeben wird :
my $ file = shift; my $ search = shift;
das erste Argument an das Skript übergebenen wird der Name einer PDF sein . Datei , und die zweite , die Suchzeichenfolge
3
neues CAM :: PDF-Objekt , indem Sie die folgende Zeile in das Skript :
my $ doc = CAM :: PDF - > new ( $ file );
Mithilfe des importierten Moduls NUMPAGES Methode, um die obere Grenze zu definieren , erstellen Sie eine Schleife , um jede Seite des Dokuments zu verarbeiten:
foreach my $ p ( ( 1 .. $ doc -> NUMPAGES ()) ) {
4
Innerhalb der Schleife , fügen Sie diese Zeile , jede Seite der Text aus der PDF-Datei zu erhalten:
< p> my $ str = $ doc -> getPageText ($ p);
Fügen Sie das nächste Skript Anweisung der Seite Text aufgeteilt in eine Reihe von separaten Zeilen :
@ lines = split ( /\\ n /, $ str );
Beenden Sie die LOOP-Anweisung durch Eingabe einer schließenden Klammer :
}
5
Schließlich, fügen Sie eine weitere Schleife zu das Skript zu verarbeiten jede Zeile der Seite und suchen eine Übereinstimmung für die Benutzer- Suchbegriff als regulärer Ausdruck . Wenn der reguläre Ausdruck liefert einen Treffer , druckt dieses Beispiel die Linie und die Seitenzahl auf die Standardausgabe . Anstelle dieser print-Anweisungen , sollten Sie bei der Umsetzung Code, um die Ergebnisse zu verarbeiten, wie benötigt
my $ i = 0; . Foreach $ line ( @ lines ) { $ i + + ; if ($ line = ~ /$ search /) {print " \\" $ search \\ " in Zeile $ i Seitenanfang $ p \\ n gefunden"; print " $ line \\ n \\ n"} }