Manipulación de PDFs e imagenes en linea de comandos

De Recursos Educativos
Revisión del 15:50 10 dic 2020 de Lantolin (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

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.

Si lo que queremos es realmente "renderizar" el PDF a PNG, podemos usar este comando:

pdftoppm -r 300 -png pdf.pdf prefijo-paginas

Crear un PDF con un libro escaneado

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

Eliminar las restricciones de un PDF

Para eliminar las restricciones de seguridad de un PDF sin password simplemente basta con hacer

qpdf --decrypt in.pdf out.pdf