-
Cómo utilizar Perl para buscar un archivo PDF Doc
-
scripts de Perl \ "arrastre \" a través de la web, tamizado a través del océano de páginas HTML de información, e inevitablemente se encontrará con algunos de los millones de archivos PDF de Adobe Acrobat salpicadas a través de Internet. A pesar de que están listos para imprimir y atractivo, desde el punto de vista de un rastreador web, archivos PDF son una tuerca un poco más difícil de descifrar que las páginas HTML simples, basados en texto. Por suerte, al igual que con muchas tareas web, hay un módulo Perl que puede ayudar a hacer la vida más fácil: CAM :: PDF. Esta interfaz de programación, aunque sobre todo la intención de crear y manipular archivos PDF, tiene algunas utilidades que permite secuencias de comandos para buscar su contenido.Instrucciones
1 Instalar CAM :: PDF. La utilidad CPAN proporciona la forma más sencilla de hacerlo - iniciar CPAN en la línea de comandos y en el indicador, escriba \ "instalar CAM :: PDF \" (sin comillas).
2 Abra un editor y comenzar la secuencia de comandos, entrando en las siguientes líneas para iniciar el intérprete Perl y es necesario importar el módulo:
! / Usr / bin / perl
utilizar CAM :: PDF
IRAñadir las siguientes dos líneas para procesar los argumentos de línea de comandos que el usuario pase en:
mi archivo $ = desplazamiento
IR
mi búsqueda $ = desplazamiento
IREl primer argumento pasado al script será el nombre de un archivo PDF, y la segunda, la cadena de búsqueda.
3 Crear un nuevo objeto CAM :: PDF añadiendo la siguiente línea a la secuencia de comandos:
mi $ doc = CAM :: PDF-> nueva ($ archivo)
IRUtilizando el método númPáginas del módulo importado para definir el límite superior, crear un bucle para procesar cada página del documento:
foreach my $ p ((1 .. $ doc-> númPáginas ()))
{4 Dentro del bucle, añada esta línea para conseguir cada página de texto del archivo PDF:
mi $ cadena = $ doc-> getPageText ($ p)
IRAñadir la siguiente sentencia de script para dividir la página de texto hacia arriba en un conjunto de líneas separadas:
@lines = split (/ \ n /, $ cadena)
IRTerminar la sentencia de bucle mediante la introducción de un corchete de cierre:
}
5 Por último, añadir otro bucle de la secuencia de comandos para procesar cada línea de la página y buscar una coincidencia para cadena de búsqueda del usuario como una expresión regular. Si la expresión regular devuelve una coincidencia, este ejemplo imprime la línea y el número de página a la salida estándar. En lugar de estas declaraciones de impresión, se debe implementar código para procesar los resultados según sea necesario.
my $ i = 0
IR
foreach $ línea (@lines)
{++$i
IR
if($line =~ /$search/)
{
print \"\\\"$search\\\" found in line $i of page $p\\n\"IR
print \"$line\\n\\n\"
}}
Consejos y advertencias
- Debido a que el texto en archivos PDF no está jerárquicamente organizada como la de los archivos HTML, lo más probable es que tenga que diseñar secuencias de comandos para buscar ciertos tipos de archivos PDF (por ejemplo, formularios, boletines, horarios). Puede que no sea posible escribir un script Perl robusta que puede buscar de manera efectiva cualquier tipo de archivo PDF.