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
-densitypara hacer la conversión a un dpi más alto:(Puede anteponer
-units PixelsPerIncho-units PixelsPerCentimetersi 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 ).pdfimagesno hace lo mismo queconvertcuando se le da un PDF como entrada.converttoma el PDF, lo renderiza con cierta resolución y usa el mapa de bits resultante como imagen de origen.pdfimagesbusca 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,
pdfimageshará 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-jopciónpdfimages, porque un PDF puede contener datos JPEG sin procesar. Por defecto,pdfimagesconvierte 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
converta.jpgpaso (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
convertTampoco 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,
pdfimageses una buena opción. Desde mi experiencia tantogsyconvertde 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
pdfimagesno funciona y extrae las capas como una imagen separada, en ese caso lo mejor es usarinskcapepara 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,gsy ImageMagick'sconvert, encuentro queinkscapela 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 pageresultaría enpage-001.ppm, page-002.ppmetc.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.
convertesencialmente "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
pdfimagespara extraer imágenes sin pérdida de calidad.fuente