Cuando convierto un archivo pdf en un montón de archivos jpg usando
convert -quality 100 file.pdf page_%04d.jpg
Tengo una pérdida de calidad apreciable.
Sin embargo, si hago lo siguiente, no hay pérdida de calidad (notable):
Inicie gscan2pdf, elija file-> import (y elija file.pdf). Luego vaya al directorio temporal de gscan2pdf. Hay muchos archivos pnm (uno para cada página del archivo pdf). Ahora lo hago
for file in *.pnm; do
convert $file $file.jpg done
Los archivos jpg resultantes son (aproximadamente) de la misma calidad que el pdf original (que es lo que quiero).
Ahora mi pregunta es, si hay una forma simple de línea de comandos para convertir el archivo pdf a un montón de archivos jpg sin pérdida de calidad notable. (La solución anterior es demasiado complicada y lleva mucho tiempo).
command-line
image-manipulation
conversion
pdf
imagemagick
estudiante
fuente
fuente
Respuestas:
No está claro qué quiere decir con "pérdida de calidad". Eso podría significar muchas cosas diferentes. ¿Podría publicar algunas muestras para ilustrar? Quizás elimine la misma sección de las versiones de mala calidad y buena calidad (como PNG para evitar una mayor pérdida de calidad).
Tal vez necesite usar
-density
para hacer la conversión a un dpi más alto:(Puede anteponer
-units PixelsPerInch
o-units PixelsPerCentimeter
si es necesario. Mi copia está predeterminada en ppi).Actualización: como señaló,
gscan2pdf
(la forma en que lo está usando) es solo un contenedor parapdfimages
(de poppler ).pdfimages
no hace lo mismo queconvert
cuando se le da un PDF como entrada.convert
toma el PDF, lo renderiza con cierta resolución y usa el mapa de bits resultante como imagen de origen.pdfimages
busca en el PDF imágenes de mapa de bits incrustadas y exporta cada una a un archivo. Simplemente ignora cualquier comando de texto o dibujo vectorial en el PDF.Como resultado, si lo que tiene es un PDF que es solo un contenedor alrededor de una serie de mapas de bits,
pdfimages
hará un trabajo mucho mejor al extraerlos, ya que le proporciona los datos sin procesar en su tamaño original. Probablemente también desee utilizar la-j
opciónpdfimages
, porque un PDF puede contener datos JPEG sin procesar. Por defecto,pdfimages
convierte todo a formato PNM, y convertir JPEG> PPM> JPEG es un proceso con pérdida.Entonces, intenta
Usted puede o no necesitar seguir que con un
convert
a.jpg
paso (dependiendo de qué mapa de bits formato pdf estaba usando).Probé este comando en un PDF que hice a partir de una secuencia de imágenes JPEG. Los archivos JPEG extraídos eran byte por byte idénticos a las imágenes de origen. No se puede obtener una calidad superior a esa.
fuente
convert
Tampoco es práctico para archivos PDF grandes. Por ejemplo, se necesitaron 45 GB de memoria para procesar un libro de 700 páginas de 6 megapíxeles. También tomó alrededor de mil veces más quepdfimages
.Como dijo la respuesta del estudiante,
pdfimages
es una buena opción. Desde mi experiencia tantogs
yconvert
de exportación a la mala calidad sin tener en cuenta si se especifica el derecho dpi.Pero si el pdf tiene varias capas por página
pdfimages
no funciona y extrae las capas como una imagen separada, en ese caso lo mejor es usarinskcape
para exportar la página como se ve.Estos son los comandos que uso:
El primer comando divide todas las páginas, el segundo comando convierte página por página a png. Puede mantenerlos png o simplemente convertirlos a JPEG
En comparación con
pdfimages
,gs
y ImageMagick'sconvert
, encuentro queinkscape
la exportación es la mejor en calidad.fuente
la respuesta de @cjm es correcta, pero si te gusta la GUI y no quieres renderizar todas las páginas pdf, solo para obtener alguna imagen, usa gimp.
Abra un pdf con gimp y obtendrá una ventana de importación con todas las páginas renderizadas. Elija las páginas que desee y establezca la resolución en 600 píxeles / pulgada (encontré 300 demasiado afiladas en muchos casos). Guarde en el formato que desee con "Archivo / exportar"
De todos modos, debe haber una bandera para seleccionar las páginas deseadas desde la línea de comandos.
fuente
Al mirar el código fuente de gscan2pdf, noté que usa imágenes pdf. Entonces
pdfimages file.pdf page
resultaría enpage-001.ppm, page-002.ppm
etc.fuente
Lo que no está claro en su pregunta es si habla de texto y gráficos vectoriales en su pdf, o si su pdf contiene imágenes incrustadas.
Después de leer de qué se trata gscan2pdf, supongo que sus archivos pdf contienen (solo) gráficos incrustados.
convert
esencialmente "imprime" su pdf sin tener en cuenta cuál es el contenido. Como sugiere @cjm, es posible que desee cambiar la densidad de impresión. Esta es la única forma de aumentar la calidad de los gráficos vectoriales.Si, en cambio, lo que desea hacer es extraer imágenes incrustadas (al igual que parece hacer gscan2pdf), adivinar la densidad generalmente conducirá a una pérdida de calidad o una calidad superior a la requerida (y pérdida de espacio en disco). La respuesta es extraer la imagen en lugar de imprimir el pdf. Vea este artículo que básicamente aboga por el uso
pdfimages
para extraer imágenes sin pérdida de calidad.fuente