¿Cómo configuro un servicio OSX para eliminar la primera página de un PDF?

¿Cómo configuro un servicio OSX para eliminar la primera página de un PDF?

Con frecuencia recibo archivos PDF donde la primera página está vacía o es solo una portada que no uso. ¿Puede sugerirme una forma rápida y eficiente (Applescript, Servicio o ???) de eliminar solo esa primera página y guardar el archivo?

Si esto se puede automatizar mediante Vista previa o Adobe Acrobat Professional, sería lo ideal.

¿Algunas ideas?

Respuesta1

Puedes hacer esto usando unautomatizadorflujo de trabajo. Es un poco más complejo que la mayoría, así que tenga cuidado al implementarlo.

Esta publicación contienedosversiones: una es más corta y almacena el resultado como Processed PDF File.pdfen el escritorio, la otra más larga y almacena el archivo como(Edited)InputFileName.pdfen el mismo directorio. Los pasos requeridos solo para la versión más larga están marcados(opcional).

Abiertoautomatizadory seleccione para crear un nuevoServicioque recibearchivos PDFcomo entrada enCualquier aplicación.

  1. (opcional)Agrega unEstablecer valor de variableacción y nombre la variable FilePath.
  2. (opcional)Agrega unEjecute AppleScriptacción y utilice el siguiente código de secuencia de comandos para obtener el nombre de la carpeta en la que se encuentra el archivo:

    on run {input, parameters}
        tell application "Finder" to return (container of first item of input) as alias
    end run
    
  3. (opcional)Agrega unEstablecer valor de variableacción y nombre la variable Folder.

  4. (opcional)Agrega unObtener valor de variableacción y devolver la variable FilePath. Ignora la entrada de esta acción en suOpciones.
  5. (opcional)Agrega unEjecutar script de shellacción y paso de entradacomo argumentos. Utilice el siguiente script para extraer el nombre base del archivo:

    echo "$( basename "$1" )"
    
  6. (opcional)Agrega unEstablecer valor de variableacción y nombre la variable FileName.

  7. (opcional)Agrega unObtener valor de variableacción y nombre la variable FilePath. Ignora la entrada de esta acción en suOpciones.

  8. Agrega unPDF a imágenesacción, guardando el resultado en el escritorio o en cualquier carpeta que pueda contener archivos temporales. Nómbralos como quieras.

  9. Agrega unEstablecer valor de variableacción, para que luego sepamos qué archivos temporales eliminar. Nombra la variable TempFiles.
  10. Agrega unEjecute AppleScriptacción y use el siguiente código de secuencia de comandos para filtrar la lista de archivos temporales (aquí es donde eliminamos la primera página):

    on run {input, parameters}
        return rest of input
    end run
    
  11. Agrega unCombinar páginas PDFacción para volver a juntar las piezas, medianteañadiendo páginas.

  12. Utilizar elMover elementos del buscadoracción para mover el archivo resultante (el PDF recombinado) al Escritorio o a cualquier carpeta donde lo desee. Si decidió calcular la carpeta principal del archivo de entrada, aquí es donde arrastra y suelta una referencia a la Foldervariable.
  13. ElCambiar el nombre de los elementos del buscadorEsta acción puede dar a estos archivos un mejor nombre que, por ejemplo, zOpY3O.pdf, que es el nombre de archivo asignado automáticamente para el archivo PDF combinado. Utilice por ejemploNombre artículo únicoy dale un nombre base de Processed PDF File. Si optó por utilizar la variante más larga, arrastre FileNamedesde la lista de variables al campo de texto y agréguela (Edited)justo antes. Ahora básicamente hemos terminado, solo necesitamos limpiar.
  14. Añade elObtener valor de variableacción y obtener el valor de TempFiles. Ignora la entrada de esta acción en suOpciones.
  15. Agrega unMover elementos del buscador a la papeleraacción para eliminar los archivos temporales de una sola página.

Aquí hay una captura de pantalla de la versión más larga terminada del flujo de trabajo:

ingrese la descripción de la imagen aquí

Respuesta2

Usando lo antes mencionadoherramientas PDF de línea de comandos, pude compilar un flujo de trabajo que hace lo siguiente:

  1. Tome un PDF de entrada (o PDF) y genere un nuevo archivo menos la primera página
  2. Mover el PDF original a la papelera
  3. Cambie el nombre del nuevo archivo para que coincida con el archivo original

Primero instalé las herramientas PDF según las instrucciones. La herramienta clave en este caso es pdfsplit.

En Automator, creé un nuevo servicio para recibir archivos PDF seleccionados en el Finder.

Agregué la acción "Ejecutar script de Shell", con el shell como "/bin/bash" y "pasar entrada" configurado en "como argumentos". Luego escribí el siguiente script simple:

for f in "$@"
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Agregué una acción "Mover elementos del Finder a la Papelera" para el archivo original y una acción "Reemplazar texto" para eliminar la extensión .tmp del nuevo archivo.

Para ejecutar el proceso con una entrada de carpeta, el script sería algo como:

cd "$@"
for f in *pdf
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Supongo que podría haber hecho todo en el script de shell, incluido eliminar y cambiar el nombre. Pero el comando rm puede ser peligroso y prefiero mover el archivo original a la papelera.

El script se puede modificar para hacer más que simplemente eliminar x número de páginas. He desarrollado un programa similar para recortar y combinar archivos PDF por lotes, por ejemplo. Consulte el manual sobre pdfsplit y las herramientas que lo acompañan para obtener más información.

Respuesta3

Alguien en otro foro desarrollóalgunoherramientas PDF de línea de comandos, incluido uno que elimina páginas. Parecía ser relativamente fácil. El único problema posible podría ser cómo funciona con su flujo de trabajo. Según su descripción, parece que tiene algo que funciona mientras el PDF está abierto y estas herramientas parecen funcionar (mejor) con un archivo cerrado.

Respuesta4

Solo para agregar a la respuesta proporcionada por Joseph Yannielli, para aquellos que decidan ejecutar el script de shell, puede ser más fácil incluir comandos para eliminar y cambiar el nombre del archivo en el script en lugar de agregar acciones separadas a través de Automator:

for f in "$@"
do
    /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
    rm "$f"
    mv "$f".tmp "$f"
done

En cuanto a la instalación de herramientas PDF de línea de comando, se puede hacer cómodamente con el uso decerveza casera:

brew install pdf-tools

información relacionada