unir recortar quitar propietario paginas extraer dividir combinar archivos archivo linux pdf pdftk

linux - quitar - recortar pdf ubuntu



¿Eliminar la última página de un archivo pdf usando PDFtk? (3)

¿Puede alguien decirme cómo eliminar la última página de un archivo PDF utilizando PDFtk?


Con cpdf , puede hacer referencia a una página por lo lejos que está del final del documento, utilizando una tilde, así como el comienzo.

Entonces, podemos hacer

cpdf in.pdf 1-~2 -o out.pdf


Necesita averiguar el recuento de páginas, luego use esto con la función pdftk cat, ya que (AFAICT) pdftk no permite especificar una "compensación desde el último".

Una herramienta como ''pdfinfo'' de Poppler ( http://poppler.freedesktop.org/ ) puede proporcionar esto.

Envolver esto en un poco de scripts bash puede automatizar fácilmente este proceso:

page_count=`pdfinfo "$INFILE" | grep ''Pages:'' | awk ''{print $2}''` page_count=$(( $page_count - 1 )) pdftk A="$INFILE" cat A1-$page_count output "$OUTFILE"

Obviamente, agregar parámetros, verificar errores y lo que no se puede colocar en dicho script:

#! /bin/sh ### Path to the PDF Toolkit executable ''pdftk'' pdftk=''/usr/bin/pdftk'' pdfinfo=''/usr/bin/pdfinfo'' #################################################################### script=`basename "$0"` ### Script help if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-?" ] || [ "$1" = "/?" ]; then echo "$script: <input-file.PDF> [<output-file.PDF>]" echo " Removes the last page from the PDF, overwriting the source" echo " if no output filename is given" exit 1 fi ### Check we have pdftk available if [ ! -x "$pdftk" ] || [ ! -x "$pdfinfo" ]; then echo "$script: The PDF Toolkit and/or Poppler doesn''t seem to be installed" echo " (was looking for the [$pdftk] and [$pdfinfo] executables)" exit 2 fi ### Check our input is OK INFILE="$1" if [ ! -r "$INFILE" ]; then echo "$script: Failed to read [$INFILE]" exit 2 fi OUTFILE="$2" if [ "$OUTFILE" = "" ]; then echo "$script: Will overwrite [$INFILE] if processing is ok" fi timestamp=`date +"%Y%m%d-%H%M%S"` tmpfile="/tmp/$script.$timestamp" page_count=`$pdfinfo "$INFILE" | grep ''Pages:'' | awk ''{print $2}''` page_count=$(( $page_count - 1 )) ### Do the deed! $pdftk A="$INFILE" cat A1-$page_count output "$tmpfile" ### Was it good for you? if [ $? -eq 0 ]; then echo "$script: PDF Toolkit says all is good" if [ "$OUTFILE" = "" ]; then echo "$script: Overwriting [$INFILE]" cp -f "$tmpfile" "$INFILE" else echo "$script: Creating [$OUTFILE]" cp -f "$tmpfile" "$OUTFILE" fi fi ### Clean Up if [ -f "$tmpfile" ]; then rm -f "$tmpfile" fi


Usar la operación cat y especificar un rango de página.

pdftk infile.pdf cat 1-r2 output outfile.pdf