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.pdf
en el escritorio, la otra más larga y almacena el archivo como(Edited)
InputFileName.pdf
en 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.
- (opcional)Agrega unEstablecer valor de variableacción y nombre la variable
FilePath
. (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
(opcional)Agrega unEstablecer valor de variableacción y nombre la variable
Folder
.- (opcional)Agrega unObtener valor de variableacción y devolver la variable
FilePath
. Ignora la entrada de esta acción en suOpciones. (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" )"
(opcional)Agrega unEstablecer valor de variableacción y nombre la variable
FileName
.(opcional)Agrega unObtener valor de variableacción y nombre la variable
FilePath
. Ignora la entrada de esta acción en suOpciones.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.
- Agrega unEstablecer valor de variableacción, para que luego sepamos qué archivos temporales eliminar. Nombra la variable
TempFiles
. 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
Agrega unCombinar páginas PDFacción para volver a juntar las piezas, medianteañadiendo páginas.
- 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
Folder
variable. - 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 deProcessed PDF File
. Si optó por utilizar la variante más larga, arrastreFileName
desde la lista de variables al campo de texto y agréguela(Edited)
justo antes. Ahora básicamente hemos terminado, solo necesitamos limpiar. - Añade elObtener valor de variableacción y obtener el valor de
TempFiles
. Ignora la entrada de esta acción en suOpciones. - 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:
Respuesta2
Usando lo antes mencionadoherramientas PDF de línea de comandos, pude compilar un flujo de trabajo que hace lo siguiente:
- Tome un PDF de entrada (o PDF) y genere un nuevo archivo menos la primera página
- Mover el PDF original a la papelera
- 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