Tengo un PDF que ya tiene imágenes comprimidas y algo artefactos, y estoy usando Ghostscript para anteponer una página de título a ese PDF.
Sin embargo, no puedo encontrar ninguna manera de decirle a GS que solo use las imágenes existentes tal como están sin reprocesarlas, y ahora siento que tiene algo que ver con el funcionamiento de GS, es decir, no puede volver a compilar / vincular un PDF sin reprocesar sus imágenes ... ¿Es eso cierto?
Puedo aumentar la configuración de DPI en GS, pero pasará de 5 MB a 60 MB sin dejar de verse peor.
¿Hay alguna alternativa mejor a GS que haga lo que necesito (preferiblemente que compilará en OS X)?
pdf
ghostscript
pdftk
Mahmoud Al-Qudsi
fuente
fuente
Respuestas:
Si solo desea concatenar dos archivos PDF sin ningún reprocesamiento de su contenido,
pdftk
es para usted. (En Mac OS X, esto debería estar disponible a través de MacPorts o Fink, para Linux, hay paquetes nativos para todas las distribuciones principales; para Windows, mire aquí ) . Pruebe esto:Esto antepondrá el título.pdf al contenido.pdf y escribirá el resultado en book.pdf .
pdftk
es una forma "tonta" pero muy rápida de concatenar dos (o más) archivos PDF. "Dumb" hasta ahora, yapdftk
que de ninguna manera interpreta el flujo de datos PDF, solo se asegura de que los números de objeto internos se vuelvan a barajar según sea necesario y aparezcan en laxref
estructura PDF (que básicamente es una especie de PDF ToC para objetos).Ghostscript:
Si desea utilizar Ghostscript, el comando básico para concatenar los mismos dos archivos sería:
Sin embargo, como has experimentado, esta línea de comando simple puede estropear la calidad de tu imagen. La razón es que Ghostscript no se 'voltea' cuando procesa archivos PDF: los interpreta completamente al leerlos y crea un archivo completamente nuevo al escribir el resultado. Para crear el resultado, utilizará automáticamente la configuración predeterminada para muchos detalles en el procesamiento general. Estos valores predeterminados se aplicarán a todos los casos en los que sus invocaciones no hayan indicado a Ghostscript lo contrario.
Entonces, el método de Ghostscript para crear el nuevo book.pdf es mucho más "inteligente" (pero también mucho más lento) que
pdftk
el método de ". (Esta es también la razón por la cual Ghostscript en muchos casos puede, dentro de ciertos límites, "reparar" archivos PDF borrados, o para incrustar fuentes en los PDF de salida que no están incrustados en los PDF de entrada, o para eliminar imágenes duplicadas, reemplazando por meras referencias, etc., y en general crearon archivos más pequeños y mejor optimizados a partir de archivos PDF de entrada hinchada ...)La solución es no permitir que Ghostscript use sus valores predeterminados: agregando más parámetros personalizados a la línea de comandos.
¿Qué significa "Ghostscript 'interpreta' su entrada en PDF" ?
Todo el archivo y su contenido (objetos, secuencias, fuentes, imágenes, ...) se leen, verifican y mantienen en su propia representación interna, antes de escupir el PDF resultante con sus objetos PDF nuevamente. Sin embargo, al 'escupir', Ghostscript aplicará todas sus configuraciones internas predeterminadas para los cientos de parámetros [*] que están disponibles.
Desafortunadamente, esto provoca el "reprocesamiento" de las imágenes de acuerdo con esta configuración predeterminada, que solo puede evitarse o anularse agregando sus propios parámetros de línea de comandos (deseados).
Sus problemas de imagen podrían ser causados por la necesidad de Ghostscript (debido a problemas de licencia) de volver a codificar las imágenes JPEG2000 a codificación JPEG. Si desea evitar esto, agregue lo siguiente a su línea de comandos:
Otras opciones de línea de comandos relacionadas con la imagen a tener en cuenta para incluir son:
Entonces, la línea de comandos completa de Ghostscript que podría hacerte feliz debería leer:
También puede decirle a Ghostscript que NO comprima imágenes en absoluto en el PDF de salida, utilizando esta línea de comando:
.
[*]:
Si estás interesado en conocer una lista completa de configuraciones predeterminadas que está utilizando el dispositivo pdfwrite de Ghostscript , ejecuta el siguiente comando. Te devuelve la lista completa :
Para obtener explicaciones sobre qué significan exactamente todos estos parámetros, deberá leer la documentación de Adobe sobre "Parámetros de Distiller" . Ghostscript se esfuerza mucho por imitar todo esto ...
fuente
dEncodeColorImages
,dEncodeGrayImages
,dEncodeMonoImages
causa el archivo de salida a ser mucho más masiva. Al eliminarlos, el tamaño del archivo cambió de 22 MB a 3,1 MB y la calidad de la imagen se ve exactamente como con el uso de estos indicadores. Todas las únicas banderas con que utilizo son:dColorConversionStrategy=/LeaveColorUnchanged
,dDownsampleMonoImages=false
,dDownsampleGrayImages=false
,dDownsampleColorImages=false
,dAutoFilterColorImages=false
,dAutoFilterGrayImages=false
,dColorImageFilter=/FlateEncode
,dGrayImageFilter=/FlateEncode
-dColorImageFilter
? Solo puedo encontrarFlateEncode
yDCTEncode
. DCT parece hacer JPEG (¿por qué cifraron eso?). ¿Creo que FLATE es una opción desactualizada para las imágenes ya que la patente de Bell Labs en LZW ya no es un problema? Sin embargo, después de pasar bastante tiempo buscando, no puedo encontrar cómo usar PNG (o cualquier otra cosa) ... Mis imágenes originales son PNG y quiero que permanezcan sin cambios. Probé la opción -c, pero me da-c can only be used in a built with POSTSCRIPT included.
...