Diferencia entre revisiones de «Manipulación de PDFs e imagenes en linea de comandos»

De Recursos Educativos
Ir a la navegación Ir a la búsqueda
(Página creada con «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 prime...»)
 
Sin resumen de edición
 
(No se muestran 9 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
Crear un jpg con la primera pagina:
=== Crear un jpg con la primera pagina ===


  gs -q -sDEVICE=jpeg -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -r300 -sOutputFile=test.jpg test.pdf
  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):
=== Extraer una imagen, de la primera pagina, (por ejemplo la portada) ===


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


Comandos utiles cuando la idea es procesar un PDF que contiene un libro escaneado, es decir un PDF que en realidad es una colección de imágenes.
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.


Extraer todas las imágenes que contenga el PDF:
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
  pdfimages -j fichero.pdf pgs


Cortar las imágenes por la mitad (por si están escaneadas dos paginas en la misma imagen), supongamos que la imagen es de 1200x500:
# 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


  for f in pgs-???.ppm ; do convert $f -crop 600x500! $f.%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


Quitar los bordes blancos:
# 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.


convert a.jpg  +repage -fuzz "XX%" -trim a-trim.jpg
  for f in ???.jpg ; do convert "$f" -crop 1200x1490+0+282\! "${f%.jpg}.c.jpg" ; done
  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:
# 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
  convert pgs-???.ppm.?.ppm fichero.pdf


Crear un PDF a partir de imágenes (en el orden en el que las mostraria un {{ls}})
=== 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 * 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
  convert * -resize XxY fichero.pdf


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


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


Línea 45: Línea 53:


  exiftool -Title="This is my title" -Author="Cobarde Anonimo" my.pdf
  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


[[Category:Tips]]
[[Category:Tips]]
[[Category:Linux]]
[[Category:Linux]]

Revisión actual - 16:50 10 dic 2020

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