scripts Perl " ramper " à travers le web , passant au crible l'océan de pages HTML pour information, et rencontrent inévitablement une partie des millions de fichiers PDF Adobe Acrobat saupoudré sur Internet. Bien qu'ils soient prêts à imprimer et attrayant du point de vue d'un robot web, des fichiers PDF sont un écrou légèrement plus difficile à casser que de simples pages HTML , texte. Heureusement , comme pour de nombreuses tâches de web , il existe un module Perl qui peuvent aider à rendre la vie plus facile : CAM :: PDF . Cette interface de programmation , mais surtout pour but de créer et de manipuler les fichiers PDF, a quelques utilitaires qui permet aux scripts de chercher leur contenu. Choses que vous devez
scripts Perl environnement
CAM :: PDF module Perl
texte ou éditeur de code
fichier PDF
Voir Plus Instructions
1
Installer CAM :: PDF . L'utilitaire CPAN fournit la meilleure façon de le faire - commencer CPAN à la ligne de commande et à l'invite , tapez " install CAM :: PDF " (sans les guillemets )
2
Ouvrez un éditeur et . lancer le script , en entrant les lignes suivantes pour démarrer l'interpréteur Perl et importer le module nécessaire :
# /usr /bin /perluse CAM :: PDF ;
ajoutez les deux lignes suivantes à ! traiter les arguments de ligne de commande que l'utilisateur va passer dans :
my $ file = shift; my $ search = shift;
le premier argument passé au script sera le nom d'un fichier PDF . fichier, et la seconde , la chaîne de recherche
3
Créer un nouvel objet CAM :: PDF en ajoutant la ligne suivante dans le script :
my $ doc = CAM :: PDF -> new ( $ file) ;
En utilisant la méthode des numPages du module importé pour définir la limite supérieure, créer une boucle pour traiter chaque page du document:
foreach my $ p ( (1 .. $ doc -> numPages ( ) )) {
4
Dans la boucle , ajoutez cette ligne pour obtenir chaque page de texte à partir du fichier PDF:
< p> my $ str = $ doc -> getPageText ($ p ) ;
Ajoutez l'instruction de script suivant pour diviser le texte de la page vers le haut dans un réseau de lignes :
@ lines = split ( /\\ n /, $ str ) ;
Terminez l'instruction de la boucle en entrant une parenthèse fermante :
}
5
Enfin, ajoutez une autre boucle à le script pour traiter chaque ligne de la page et de rechercher une correspondance pour la chaîne de recherche de l'utilisateur comme une expression régulière . Si l'expression régulière retourne un match, cet exemple affiche la ligne et le numéro de la page sur la sortie standard . En lieu et place de ces états d'impression, vous devez implémenter le code pour traiter les résultats en fonction des besoins
my $ i = 0; . Foreach $ line ( @ lines ) { + + $ i; if ($ ligne = ~ /$ search /) {print " \\" $ search \\ "trouvé dans la ligne i $ de la page $ p \\ n"; print "$ ligne \\ n \\ n "}}