Creé 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 ubicados en el mismo directorio donde se encontraron los PDF originales.
Bien, excelente, excepto por un pequeño problema: lo que también se guarda invariablemente junto con los otros .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". ¿Es razonable mi suposición y, en cualquier caso, cómo lo soluciono?
El guión en texto plano:
on run {input, parameters}
tell application "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 obtener fácilmente revelando el contenido del paquete.
Genio yo me di cuenta de esto solo después de un poco de tonterías con la captura de pantalla y GIMP.
Aquí está el problema que encontré con la traducción de "Hent ut PDF-tekst" en Google Translate mientras traducía del noruego al inglés, se traducía como "Obtener el texto del PDF", así que cuando escribí "Obtener" en el cuadro de búsqueda de acciones, no mostró ninguna acción de PDF con las acciones "Obtener" que sí se mostraron. Tras un examen más detallado, encontré Extraer texto PDF y lo usé.
Pude replicar el problema de la creación de un archivo RTF de tamaño cero junto con el del archivo PDF real; sin embargo, no pude depurar el motivo y probé muchas cosas diferentes. A través del flujo de trabajo, mostró a Bane como una carpeta como la ruta al archivo PDF seleccionado, pero luego lo convirtió a 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 alternativa que puede elegir usar si nadie más tiene una respuesta que resuelva el problema sin recurrir a esta solución alternativa.
Agregue una acción Ejecutar script de Shell al final de la lista de Acciones, configurando Shell: /bin/bash y Pass input: 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, entonces elimínelo.
Por cierto, si desea probar el código primero, puede reemplazarlo temporalmente rm "$f"
con algo como say deleting "$f"
para que pueda escuchar qué archivo se va a eliminar. Cuando esté satisfecho, eliminará el archivo de tamaño cero y luego lo volverá a colocar en rm "$f"
.
Aquí hay una imagen de mi Servicio Automator.
usuario3439894
AkselA
usuario3439894
AkselA