He hecho esto con el versión comunitaria coherente de las herramientas de línea de comandos de PDF .
Puede descargar las herramientas precompiladas o el código fuente para compilar el último por su cuenta, sin embargo, este último requiere la instalación de OCaml al compilar. Así que las herramientas pre-construidas son la manera más fácil de ir. El archivo de distribución descargado, por ejemplo, cpdf-binaries-master.zip , contiene binarios para Linux, OS X / macOS y Windows y tiene un tamaño de ~ 5 MB.
Una vez descargado y extraído (haciendo doble clic en el archivo .zip) , copiaría el archivo, por ejemplo. ~ / Downloads / cpdf-binaries-master / OSX-Intel / cpdf , archivo a una ubicación que se define en la variable de entorno PATH
, por ejemplo. /usr/local/bin/
para que esté globalmente disponible en la línea de comandos en la Terminal. Si no está en PATH
, deberá usar nombre de ruta completo para el ejecutable cpdf
o ./cpdf
si está en el directorio de trabajo actual ( pwd
). En la Terminal, escriba echo $PATH
para mostrar el PATH
.
La sintaxis para eliminar la primera página cuando el archivo PDF tiene 2 o más páginas es:
cpdf in.pdf 2-end -o out.pdf
Porque cpdf
lee el archivo original ( in.pdf ) y escribe en un nuevo archivo ( out.pdf ) el out.pdf filename debe ser diferente si se guarda en la misma ubicación que el archivo in.pdf , o guárdelo en una ubicación diferente con el mismo nombre de archivo in.pdf que el archivo out.pdf filename, o el nombre de archivo out.pdf que desee.
A continuación, mostraré dos ejemplos de automatización usando cpdf
para eliminar la primera página de un archivo PDF, asumiendo que tiene dos o más páginas. Uno utilizando un Automator workflow como Service disponible en Finder en el Menú contextual de servicios y el otro como bash
script , para usar en la Terminal.
Como un flujo de trabajo de Automator Service disponible en Finder en el menú contextual de servicios:
En Automator, cree un nuevo flujo de trabajo de servicio usando la configuración que se muestra en la imagen a continuación y copie y pegue el código debajo de la imagen en Ejecutar Shell Script acción y guardar como, por ejemplo: Eliminar la primera página de PDF
Para usar Eliminar primera página de PDF , en Buscador , seleccione los archivos PDF de los que desea eliminar la primera página y luego seleccione Eliminar primera página de PDF desde el Menú contextual a través de hacer clic con el botón derecho o hacer clic con el botón del control , o desde Finder > Servicios > Eliminar la primera página del PDF
forfin"$@"; 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}"
case "$p" in
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"
;;
*)
# PDF file has 2 or more pages.
# Remove the first page.
/usr/local/bin/cpdf "${fn} (original).${ext}" 2-end -o "$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 PATH
pasó una Ejecutar script de shell acción en Automator es, /usr/bin:/bin:/usr/sbin:/sbin
. Por lo tanto, el código anterior está utilizando el nombre de ruta completo al cpdf
ejecutable , /usr/local/bin/cpdf
ya que es donde lo coloqué para que estará disponible en Terminal mediante el uso de su nombre cpdf
, solo.
También tenga en cuenta que si no desea conservar los archivos originales, descomente (elimine el #
de delante) el comando # rm "${fn} (original).${ext}"
, justo arriba de la última línea de < em> código done
.
Como bash
script para usar en la Terminal:
Cree el script bash
de la siguiente manera:
En la Terminal:
touch rfpfpdf
open rfpfpdf
Copie el bloque de código , comenzando con #!/bin/bash
, a continuación en el documento abierto rfpfpdf
y luego guárdelo.
De vuelta en la terminal:
Haga que el script sea ejecutable:
chmod u+x rfpfpdf
Ahora mueva el script rfpfpdf
a, por ejemplo, /usr/local/bin/
sudo mv rfpfpdf /usr/local/bin/
Luego puede cambiar el directorio cd ...
a un directorio que tenga los archivos PDF de los que desea eliminar la primera página y luego simplemente escriba rfpfpdf
y presione ingresar .
Los archivos originales se moverán a " filename (original) .pdf " y el archivo PDF recién creado sin la primera página, si 2 o más páginas, tendrán el nombre original de filename.pdf
.
#!/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}"
case "$p" in
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"
;;
*)
# PDF file has 2 or more pages.
# Remove the first page.
cpdf "${fn} (original).${ext}" 2-end -o "$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 asume que cpdf
ejecutable está en un directorio que está dentro del entorno PATH
variable , por ejemplo: /usr/local/bin/
También tenga en cuenta que si no desea conservar los archivos originales, descomente (elimine el #
de delante) el comando # rm "${fn} (original).${ext}"
, justo arriba de la última línea de < em> código done
.