2011-03-16 7 views
8

En un sistema en el que estoy trabajando estamos generando miniaturas como parte del flujo de trabajo. A veces los archivos pdf son bastante grandes (tamaño de impresión 3m2) y pueden contener imágenes de mapa de bits de gran tamaño.¿Generación de miniaturas eficiente de un gran archivo pdf?

¿Hay programas compatibles con la generación de miniaturas que sean optimizados para la huella de memoria que manejan archivos pdf tan grandes?

La miniatura resultante puede ser png o jpg.

Respuesta

9

ImageMagick es lo que utilizo para todos mis CLI gráficos, así que tal vez se puede trabajar para usted:

convert foo.pdf foo-%png 

Esto produce tres archivos PNG separadas:

foo-0.png 
foo-1.png 
foo-2.png 

para crear una sola imagen en miniatura, tratar el PDF como si fuera una matriz ([0] es la primera página, [1] es la segunda, etc.):

convert foo.pdf[0] foo-thumb.png 

Puesto que usted está preocuparse por la memoria, con la opción -cache, puede restringir el uso de la memoria:

-cache umbral megabytes de memoria disponible para la caché de píxeles.

píxeles de la imagen se almacenan en la memoria hasta que umbral megabytes de memoria han sido consumidos . Las operaciones de píxeles posteriores se almacenan en caché en el disco. Las operaciones a la memoria son significativamente más rápidas, pero si su computadora no tiene una cantidad de memoria libre que quiera ajustar este valor de umbral .

Así que para las imágenes miniatura de un archivo PDF y cambiar su tamaño ,, podría ejecutar este comando, que tendrá un uso de memoria máximo de alrededor de 20 MB:

convert -cache 20 foo.pdf[0] -resize 10%x10% foo-thumb.png 

O usted podría utilizar -density para especificar la densidad de salida (900 reduce la imagen bastante):

convert -cache 20 foo.pdf[0] -density 900 foo-thumb.png 
+0

Por supuesto, también puede especificar un parámetro '-densidad' si tiene archivos PDF de 3m². De lo contrario ... por defecto, 72 puntos por pulgada terminas ... déjame hacer algunos cálculos ... imagen de 24 megapíxeles ... – Benoit

+0

Eso estaría bien. Agregaré '-resize' también. – Blender

+0

@Blender: Sí. Pero '-densidad' es lo que se aplica cuando se invoca al delegado (ya sea Ghostscript) que es un comando externo. ¿Tal vez el delegado no puede estar limitado por la memoria? – Benoit

0

qué te importa? Los servidores económicos actuales tienen 512 GB de ram. Eso permite almacenar un mapa de bits sin comprimir a todo color de más de 9000 pulgadas (250 m) cuadrados a 1200 ppp. El rendimiento que obtiene al utilizar el disco es grande.

Cuestiones relacionadas