Estoy buscando una herramienta de línea de comandos de código abierto para recortar archivos PDF, tal como podemos hacer en Adobe Acrobat Pro. He probado PdfTk, ImageMagick, PyPDF y GhostScript, todo sin éxito hasta ahora.
Estoy buscando una herramienta de línea de comandos de código abierto para recortar archivos PDF, tal como podemos hacer en Adobe Acrobat Pro. He probado PdfTk, ImageMagick, PyPDF y GhostScript, todo sin éxito hasta ahora.
Respuestas:
Te sugiero que eches un vistazo a PDFcrop .
Si desea recortar un pdf con márgenes izquierdo, superior, derecho e inferior de 5, 10, 20 y 30 puntos (puntos), ejecute
pdfcrop --margins '5 10 20 30' input.pdf output.pdf
en terminal. Para recortar algo, use valores negativos en el argumento para recortar. Por ejemplo,
pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf
recorta 50 pts desde la izquierda, arriba, derecha, abajo (en este orden).
Si ejecuta solo el comando pdfcrop input
, generará un archivo titulado input-crop.pdf con cero márgenes. Esto me resulta muy útil cuando incluyo ilustraciones en pdf en documentos.
Recortar múltiples archivos
Desafortunadamente, pdfcrop no puede recortar varios archivos a la vez. Sin embargo, es fácil escribir un script que recorte todos los archivos PDF en la carpeta en la que se encuentra el script.
Cree un nuevo archivo vacío y llámelo something.sh
. Ábralo con un editor de texto e inserte lo siguiente:
#!/bin/bash
for FILE in ./*.pdf; do
pdfcrop "${FILE}"
done
Guárdelo y cierre. Luego haga clic derecho en el archivo, vaya a Propiedades> Permisos y marque el campo Permitir ejecutar el archivo como programa . Ahora cierra el diálogo. Ejecute el script haciendo doble clic en él y eligiendo Ejecutar en la Terminal . Y ahora se imprimirá en la carpeta la nueva versión recortada de margen cero de todos los archivos PDF con sufijo-recorte . Si desea márgenes u otras cosas, por supuesto, simplemente puede abrir el script y agregar argumentos después pdfcrop
.
--bbox "<left> <bottom> <right> <top>"
. Esto permite utilizar el enfoque para determinar el área de cultivo que se describe en mi respuesta a continuación .
pdfcrop --help
enumera las opciones disponibles. No puedo ver nada allí que permita especificar un rango de páginas.
Gracias por Rasmus, puede instalar pdfcrop desde el paquete texlive-extra-utils:
sudo apt-get install texlive-extra-utils
Luego recorte los archivos pdf usando el comando de recorte pdf como:
pdfcrop input.pdf output.pdf
utilizar --help
para ver parámetros más sorprendentes como--margins
pdfcrop --margins 5 input.pdf output.pdf
que recortar pdf con 5 pb de cada lado de la página
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf
después, lo que solucionó el tamaño del archivo.
También puede recortar archivos PDF simplemente usando Ghostscript. He escrito un pequeño script para simplificar el proceso (inspirado en esta respuesta ):
#!/bin/bash
if [ $# -lt 5 ]
then
echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
echo "Notes:"
echo " - all coordinates are absolute; no calculation of width/height necessary"
echo " - use 'gv' to determine the coordinates"
exit 65
fi
file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"
base="${file%.*}"
outfile="${base}_cropped.pdf"
echo "writing to: $outfile"
gs \
-o $outfile \
-sDEVICE=pdfwrite \
-c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
-f $file
Para determinar las coordenadas para el recorte, utilizo gv
, que imprime las coordenadas del cursor del mouse usando las mismas unidades que Ghostscript. Por ejemplo, aquí determino las coordenadas mínimas para x / y (los valores en la esquina superior izquierda):
Ahora las coordenadas máximas:
Y finalmente, ejecuto el script pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
produciendo un test_cropped.pdf
que se ve así:
Sin embargo, no tengo idea de cómo se compara la solución Ghostscript pdfcrop
en términos de calidad y corrección.
Cuando no puedo hacer algo con pdftk, el siguiente lugar al que recurro es PDFjam , que es un contenedor de línea de comandos para el paquete pdfpages LaTeX (por lo tanto, también necesita eso y una distribución TeX instalada). Para obtener ayuda sobre cómo usarlo, recomiendo la pantalla de ayuda regular:
pdfjam --help
como la página de manual es escasa y la página web se concentra en ejemplos.
Para recortar un PDF, el comando que necesita es algo como esto:
pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf
Esto generará un archivo llamado input-cropped.pdf
. El orden de los ajustes debe ser dejado, abajo, derecha, arriba, de acuerdo \includegraphics
a graphicx .
Para dar una idea de cómo se compara con PDFcrop, recientemente tuve que recortar un PDF bastante elegante. Mi original era de 675 kB, mi versión recortada a través de PDFjam tenía 1,2 MB, mientras que una versión recortada a través de PDFcrop tenía 4,5 MB. Mientras que PDFjam y PDFcrop eliminaron los hipervínculos y marcadores incrustados, PDFjam con la --keepinfo
opción conservaba las propiedades del documento (por ejemplo, título, autor, asunto).
Si una herramienta gráfica también está bien, recomendaría krop
: http://arminstraub.com/software/krop
Esto puede ayudarte.
Esto está de acuerdo con la versión más nueva de Ubuntu y la vida. Este es el editor de PDF maestro . Puedes usarlo recortar, agregar algunas cosas, etc.
Podrías usar un script pypdf desde esta página . Pero en la respuesta a esta pregunta de stackexchange , parece que también hay muchas opciones.
El programa pdfCropMargins es una aplicación de línea de comandos para recortar automáticamente los márgenes de los archivos PDF.
Este programa depende del programa Ghostscript o del programa pdftoppm que se está instalando (y localizable) en el sistema. Y analice las imágenes de la página con PIL para encontrar cuadros delimitadores, utilizando el umbral 191.
instalar usando
pip install pdfCropMargins
Ejecutar usando
pdf-crop-margins -v -s -u your-file.pdf
Por ayuda
pdf-crop-margins -h | más