Tengo una carpeta que contiene cientos de archivos PDF, y me gustaría quitar la última página de cada uno de forma rápida. ¿Cómo puedo dejar mi Mac automatizar esta tarea? ¿Necesito software adicional para hacer esto?
Respuesta
¿Demasiados anuncios?He hecho esto con la Coherente PDF Herramientas de Línea de Comandos de la Comunidad de Liberación.
Puede descargar cualquiera de los pre-construcción de herramientas o el código fuente para compilar el más tarde por su cuenta, sin embargo, éste requiere de OCaml ser instalado cuando se compila. Por lo que la pre-construido herramientas son la manera más fácil de ir. El descargado el archivo de distribución, por ejemplo, cpdf-binaries-master.zipcontiene los binarios para Linux, OS X/macOS y Windows y es de ~5 MB de tamaño.
Una vez descargado y extraído (doble clic en el .archivo zip) que había copiar el, por ejemplo ~/Descargas/cpdf-binarios-maestro/OSX-Intel/cpdf, archivo en una ubicación que se define en la PATH
variable de entorno, por ejemplo /usr/local/bin/
a hacerlo globalmente disponible en la línea de comandos en la Terminal. Si no es en el PATH
, entonces usted tendrá que utilizar el nombre completo de la ruta a la cpdf
ejecutable o ./cpdf
si está en el directorio actual de trabajo (pwd
). En la Terminal, escriba echo $PATH
para mostrar el PATH
.
La sintaxis para la eliminación de la última página, cuando el archivo PDF tiene 3 o más páginas es:
cpdf in.pdf 1-~2 -o out.pdf
La sintaxis para la eliminación de la última página, cuando el archivo PDF tiene 2 páginas es:
cpdf in.pdf 1 -o out.pdf
Porque cpdf
lee el archivo original (en.pdf) y se escribe en un archivo nuevo (hacia fuera.pdf) .pdf nombre de archivo debe ser diferente si se guarda en la misma ubicación que el en.pdf archivo o guardarlo en una ubicación diferente con el mismo .pdf nombre de archivo como .pdf nombre de archivo, o lo que sea .pdf nombre de archivo que desee.
A continuación, voy a mostrar dos ejemplos de automatización mediante la cpdf
a quitar la última página de un archivo PDF, suponiendo que tiene dos o más páginas. Uno mediante un Automator de flujo de trabajo como un Servicio disponible en Finder en los Servicios de Menú de Contexto , y el otro como un bash
script, para usar en la Terminal.
Como Automator Servicio de Flujo de trabajo disponible en el Buscador de Servicios de Menú Contextual:
En Automator crear un nuevo flujo de trabajo de servicio a través de la configuración como se muestra en la imagen de abajo y copie y pegue el código de abajo de la imagen al Ejecutar el Shell Script de acción y guardar como, por ejemplo: Quitar la Última Página de un PDF
El uso de Quitar la Última Página de un PDF, en el Finder, seleccione los archivos PDF que desea eliminar la última página y, a continuación, seleccione Quitar la Última Página de un PDF desde el Menú de Contexto a través de clic derecho o control-clic, o desde el Finder > Servicios > Quitar la Última Página de un PDF
for f in "$@"; do
# Get Page Count.
p="$(/usr/local/bin/cpdf -info "$f" | awk '/Pages:/{print $2}')"
# Get file extension.
ext="${f##*.}"
# Get filename without extension.
fn="${f%.*}"
# Rename original file to "filename (original).pdf".
# Use '-n' to not overwrite an existing file.
mv -n "$f" "${fn} (original).${ext}"
# If page count is greater than 2, set 'p' to '3' as any
# PDF with more than 2 pages the command will be the same.
if [[ $p -gt 2 ]]; then
p="3"
fi
case "$p" in
3)
# PDF file has 3 or more pages.
/usr/local/bin/cpdf "${fn} (original).${ext}" 1-~2 -o "$f"
;;
2)
# PDF file has 2 pages.
/usr/local/bin/cpdf "${fn} (original).${ext}" 1 -o "$f"
;;
1)
# PDF file has 1 page. Make a copy to the
# original name for consistency of output.
# Use '-n' to not overwrite an existing file.
cp -n "${fn} (original).${ext}" "$f"
;;
esac
# If you don't want to keep the original
# file, remove '#' from the next line.
# rm "${fn} (original).${ext}"
done
Tenga en cuenta que el PATH
aprobó una Ejecutar el Shell de Comandos de acción de Automator es, /usr/bin:/bin:/usr/sbin:/sbin
. Por lo que el código anterior es usando el nombre completo de la ruta a la cpdf
ejecutable, /usr/local/bin/cpdf
ya que es donde he colocado el fin de estar disponible en la Terminal por medio de la utilización de su nombre cpdf
,.
También tenga en cuenta que si usted no desea conservar el original de los archivos, a continuación, descomentar (quitar el #
de en frente) # rm "${fn} (original).${ext}"
comando, justo encima de la última línea de código done
.
Como bash
script para usar en la Terminal:
Crear la bash
secuencia de comandos de la siguiente manera:
En La Terminal:
touch rlpfpdf
open rlpfpdf
Copia el bloque de código, empezando #!/bin/bash
, por debajo en el abierto rlpfpdf
documento y, a continuación, guárdelo.
De vuelta en la Terminal:
Hacer el script ejecutable:
chmod u+x rlpfpdf
Ahora mueva el rlpfpdf
script , por ejemplo,: /usr/local/bin/
sudo mv rlpfpdf /usr/local/bin/
A continuación, puede cambiar el directorio cd ...
a un directorio que tiene los archivos PDF que desea quitar la última página y, a continuación, simplemente escriba rlpfpdf
y pulse enter.
Los archivos originales se trasladó a "nombre de archivo (original).pdf" y el recién crear archivo PDF sin la última página, si 2 o más páginas, tendrá la original filename.pdf
nombre.
#!/bin/bash
for f in *.pdf *.PDF; do
if [[ -f $f ]]; then
# Get Page Count.
p="$(cpdf -info "$f" | awk '/Pages:/{print $2}')"
# Get file extension.
ext="${f##*.}"
# Get filename without extension.
fn="${f%.*}"
# Rename original file to "filename (original).pdf".
# Use '-n' to not overwrite an existing file.
mv -n "$f" "${fn} (original).${ext}"
# If page count is greater than 2, set 'p' to '3' as any
# PDF with more than 2 pages the command will be the same.
if [[ $p -gt 2 ]]; then
p="3"
fi
case "$p" in
3)
# PDF file has 3 or more pages.
cpdf "${fn} (original).${ext}" 1-~2 -o "$f"
;;
2)
# PDF file has 2 pages.
cpdf "${fn} (original).${ext}" 1 -o "$f"
;;
1)
# PDF file has 1 page. Make a copy to the
# original name for consistency of output.
# Use '-n' to not overwrite an existing file.
cp -n "${fn} (original).${ext}" "$f"
;;
esac
# If you don't want to keep the original
# file, remove '#' from the next line.
# rm "${fn} (original).${ext}"
fi
done
Tenga en cuenta que el código anterior se supone que el cpdf
ejecutable se encuentra en un directorio que está dentro de la PATH
variable de entorno, por ejemplo,: /usr/local/bin/
También tenga en cuenta que si usted no desea conservar el original de los archivos, a continuación, descomentar (quitar el #
de en frente) # rm "${fn} (original).${ext}"
comando, justo encima de la última línea de código done
.