Saltar al contenido

convertir imágenes a pdf: cómo hacer páginas PDF del mismo tamaño

Solución:

La última vez que usé convert para tal tarea, especifiqué explícitamente el tamaño del destino mediante el cambio de tamaño:

$ i=150; convert a.png b.png -compress jpeg -quality 70 
      -density ${i}x${i} -units PixelsPerInch 
      -resize $((i*827/100))x$((i*1169/100)) 
      -repage $((i*827/100))x$((i*1169/100)) multipage.pdf

los convert El comando no siempre usa DPI como unidad predeterminada de densidad / formato de página, por lo que especificamos explícitamente DPI con el -units opción (de lo contrario, puede obtener resultados diferentes con diferentes versiones / combinaciones de formato de entrada). El nuevo tamaño (especificado a través de -resize) es la dimensión de una página DIN A4 en píxeles. El argumento de cambio de tamaño especifica el tamaño máximo de página. Qué resolución y calidad elegir depende exactamente del caso de uso: seleccioné 150 DPI y calidad promedio para ahorrar algo de espacio mientras no se ve tan mal cuando se imprime en papel.

Tenga en cuenta que convert de forma predeterminada, no cambia la relación de aspecto con la operación de cambio de tamaño:

Redimensionar ajustará la imagen al tamaño solicitado. NO llena el tamaño de caja solicitado.

(Manual de ImageMagick)

Dependiendo de la versión de ImageMagick y los formatos de entrada involucrados, podría estar bien omitir el -repage opción. Pero a veces es necesario y sin esa opción, el encabezado del PDF puede contener dimensiones demasiado pequeñas. En cualquier caso, el -repage no debería doler.

Los cálculos usan aritmética de enteros ya que bash solo admite eso. Con zsh las expresiones se pueden simplificar, es decir, reemplazar con $((i*8.27))x$((i*11.69)).

Imágenes de Lineart

Si los archivos PNG son imágenes de dos niveles (blanco y negro, también conocido como lineart), img2pdf La herramienta produce resultados superiores a ImageMagick. convert. Eso significa img2pdf es más rápido y produce archivos PDF más pequeños.

Ejemplo:

$ img2pdf -o multipage.pdf a.png b.png

o:

$ img2pdf --pagesize A4 -o multipage.pdf a.png b.png

Lo que realmente quieres usar es:

$ convert a.png b.png -compress jpeg -resize 1240x1753 
                      -extent 1240x1753 -gravity center 
                      -units PixelsPerInch -density 150x150 multipage.pdf

-extent extiende la imagen a 1240×1753, mientras que -resize mantiene la proporción de la imagen, ajustándola a 1240x... o ...x1753.

los -gravity El parámetro es opcional pero se puede usar para centrar la imagen cuando se extiende.

Además de la respuesta de Caugner:

habiendo instalado IM v6.6.9-7 descubrí el -gravity el parámetro debe colocarse entre -resize y -extent para tener un efecto.

Además (aunque no es parte de la pregunta de la operación) encontré atractivo establecer un color de fondo diferente que daría como resultado el dominio total de

convert in.jpg -resize 1240x1750 -background black -compose Copy
               -gravity center -extent 1240x1750
               -units PixelsPerInch -density 150 out.pdf

Otra variación útil que utilizo a menudo cuando no quiero volver a escalar una imagen que ya tiene la relación de aspecto correcta pero que mantiene su resolución individual es

convert in.jpg -units PixelsPerInch -set density '%[fx:w/8.27]'
               -repage a4 out.pdf

donde la densidad objetivo se determina dinámicamente calculando el ancho dividido por 8.27 (que es el ancho en pulgadas de una página A4). los -repage a4 el parámetro se puede omitir la mayor parte del tiempo, pero he tenido algunos casos en los que el .pdf resultante tendría un formato diferente ligeramente fuera de las dimensiones A4 de 210×297 mm (8.27×11.6 “)

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *