Automator: extraiga texto PDF y guárdelo en el directorio actual

1

He creado un servicio de Automator para extraer texto PDF y guardarlo en el directorio actual, y funciona razonablemente bien.

Toma uno o varios archivos PDF, extrae el texto y lo guarda como .rtfs separados colocados en el mismo directorio donde se encontraron los PDF originales.
Bien, excelente, excepto por un pequeño roce: lo que invariablemente también se guarda junto con el otro .rtfs es uno vacío (cero bytes), con el nombre del directorio actual.

Mirando el flujo de trabajo a continuación, parece que ambas variables ("PDF" y "Bane") se pasan a la acción "Hent ut PDF-tekst". ¿Mi suposición es razonable y, en cualquier caso, cómo puedo solucionarlo?

Elscriptentextoplano:

onrun{input,parameters}tellapplication"System Events"
 set thePath to POSIX path of (container of (item 1 of input))
 end tell
 return thePath
end run

Además, Automator crea automáticamente una representación PNG de su flujo de trabajo cuando lo guarda, y se puede acceder fácilmente revelando el contenido del paquete.
Genius me dio cuenta de esto solo después de un poco de trabajo con la captura de pantalla y GIMP.

    
pregunta AkselA 14.01.2016 - 19:16

1 respuesta

1

Este es el problema que encontré con la traducción de "Hent ut PDF-tekst" en el traductor de Google al traducir del noruego al inglés, se tradujo como "Obtenga el texto en PDF", por lo que cuando escribí "Obtener" en las Acciones En el cuadro de búsqueda, no mostró ninguna acción en PDF con las acciones "Obtener" que se mostraron. Tras un examen más detallado, encontré Extraer texto PDF y lo utilicé.

Pude replicar el problema de un archivo RTF de tamaño cero que se creó junto con el del archivo PDF real; sin embargo, no pude depurar el por qué y probé muchas cosas diferentes. A través del flujo de trabajo, mostró Bane como una carpeta que es la ruta al archivo PDF seleccionado, pero luego lo convirtió al RTF de tamaño cero junto con el archivo RTF adecuado y para mí, parece un error en Automator.

Dicho esto, presento una solución que puedes elegir si nadie más tiene una respuesta que resuelva el problema sin tener que recurrir a esta solución.

Agregue una acción Ejecutar script de shell al final de la lista de Acciones, configurando Shell: / bin / bash y Ingrese la contraseña: como argumento con el siguiente código :

for f in "$@"; do
    if [ ! -s "$f" ]; then
        rm "$f"
    fi
done

Lo que se traduce en: Si este archivo no tiene un tamaño mayor que cero, elimínelo.

Por cierto, si quieres probar el código primero, puedes reemplazar temporalmente rm "$f" con algo como say deleting "$f" para escuchar qué archivo se va a eliminar. Cuando esté satisfecho, va a eliminar el archivo de tamaño cero, luego vuelva a ponerlo en rm "$f" .

Aquí hay una imagen de mi Servicio de Automatización.

    
respondido por el user3439894 15.01.2016 - 01:08

Lea otras preguntas en las etiquetas