Tecnología

Inicio

Cómo utilizar Perl para buscar un archivo PDF Doc

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
IR

Añ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
IR

El 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)
IR

Utilizando 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)
IR

Añ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)
IR

Terminar 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.