Manipulación de PDFs e imagenes en linea de comandos

De Recursos Educativos
Ir a la navegación Ir a la búsqueda
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.

Crear un jpg con la primera pagina:

gs -q -sDEVICE=jpeg -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -r300 -sOutputFile=test.jpg test.pdf

Extraer una imagen, de la primera pagina, (por ejemplo la portada):

pdfimages -f 1 -l 1 -j fichero.pdf pgs

Un detalle: lo que hace pdfimages no es "generar" una imagen con el contenido de la página sino extraer los elementos de la página que sean imagenes. Es decir si el PDF lo que tiene en la pag 1 son 3 imágenes y un texto, el comando producirá 3 ficheros de imagen, y nada para el texto.

Secuencia de comandos para partiendo de un libro que estaba escaneado, con una imagen por página, pero con 2 paginas reales por imagen y muchos bordes blancos, hacer un PDF mejor, con una página real por pagina PDF y sin bordes blancos:

# Extraer todas las imágenes
pdfimages -j fichero.pdf pgs
# rotarlas 90 a la izq
for f in ???.jpg ; do echo "$f" ; convert "$f" -rotate 270 "${f%.jpg}_r.jpg" ; done
# Cortar las imágenes por la mitad, supongamos que la imagen es de 1200x500
for f in pgs-???.ppm ; do convert "$f"  -crop 600x500! "${f.%.ppm}.%d.ppm"; done
# Cortarlas en 2 veces
for f in ???_r.jpg ; do echo $f ; convert "$f" -crop 1330x2340+0+200\! "${f%.jpg}_r_c1.jpg"; convert "$f" -crop 1330x2340+1330+200\! "${f%.jpg}_r_c2.jpg" ; done
# Tipico caso de banda horizontal arriba y banda horizontal abajo. La de arriba tiene 282px y la imagen que quiero conservar 1490px. El ancho es 1200.
for f in ???.jpg ; do convert "$f" -crop 1200x1490+0+282\! "${f%.jpg}.c.jpg" ; done
# Quitar los bordes blancos
for f in pgs-???.pbm.[01].jpg ; do  convert "$f"  +repage -fuzz "99%" -trim "$f.trim.jpg"; done
# Recrear el PDF a partir de las imágenes nuevas:
convert pgs-???.ppm.?.ppm fichero.pdf

Crear un PDF a partir de imágenes convirtiendo el tamaño (como mucho de X de alto o de Y de ancho, respetando el aspecto)

convert * -resize XxY fichero.pdf

Ponerle metadata (XMP) para que el e-reader lo muestre:

# extraer metadata a fichero
pdftk f1.pdf dump_data output metadata.txt
# Editar metadata.txt a gusto del consumidor (se pueden añadir campos nuevos)
pdftk f1.pdf update_info metadata.txt output f2.pdf

Un método mejor que no requiere archivo intermedio y edición manual:

exiftool -Title="This is my title" -Author="Cobarde Anonimo" my.pdf