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 "}}
|