1 votos

Automatizar la eliminación de la última página de un montón de archivos PDF

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?

1voto

user3439894 Puntos 5883

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 $PATHpara 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

Automator Service Workflow


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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X