reducir peso mitad menos guardar con comprimir como archivos linux pdf debian ghostscript

linux - peso - comprimir pdf a la mitad



Optimizar archivos PDF(con Ghostscript u otro) (7)

Esto funcionó para mí

Convierta su PDF a PS (esto crea un archivo grande

pdf2ps large.pdf very_large.ps

Convierte la nueva PS a un PDF

ps2pdf very_large.ps small.pdf

Fuente: https://pandemoniumillusion.wordpress.com/2008/05/07/compress-a-pdf-with-pdftk/

¿Es Ghostscript la mejor opción si desea optimizar un archivo PDF y reducir el tamaño del archivo?

Necesito almacenar muchos archivos PDF y, por lo tanto, necesito optimizar y reducir el tamaño del archivo tanto como sea posible

¿Alguien tiene alguna experiencia con Ghostscript y / u otra?

línea de comando

exec(''gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -sOutputFile=''.$file_new.'' ''.$file);


Ghostscript viene con dos utilidades útiles: pdfopt y ps2pdf14 . Ambos pueden utilizarse para optimizar archivos PDF, pero en algunas ocasiones el tamaño del archivo "optimizado" puede ser mayor que el original.


Perderá en calidad, pero si no es un problema, la convert de ImageMagick puede ser útil:

convert original.pdf reduced.pdf

(Acabo de convertir un archivo de 126 MB en uno de 14 MB ...)

Consulte también esta publicación para conocer las opciones relacionadas.


Puede encontrar que pdftocairo (de Poppler ) puede hacer archivos PDF más pequeños, pero tenga en cuenta que pdftocairo algunas características (como hipervínculos).


Puede obtener buenos resultados convirtiendo de PDF a Postscript, luego de vuelta a PDF usando

pdf2ps file.pdf file.ps ps2pdf -dPDFSETTINGS=/ebook file.ps file-optimized.pdf

El valor de argument -dPDFSETTINGS define la calidad de las imágenes en el PDF resultante. Las opciones son, de baja a alta calidad: /screen , /default , /ebook , /printer , /prepress , consulte http://milan.kupcevic.net/ghostscript-ps-pdf/ para obtener una referencia.

El archivo Postscript puede llegar a ser bastante grande, pero los resultados valen la pena. Pasé de un PDF de 60 MB a un archivo Postscript de 140 MB, pero terminé con un PDF optimizado de 1.1 MB.


Si busca un software gratuito (como en ''libre''), Ghostscript es seguramente su mejor opción. Sin embargo, no siempre es fácil de usar: algunas de sus opciones de procesamiento (muy potentes) no son fáciles de encontrar documentadas.

Eche un vistazo a esta respuesta, que explica cómo ejecutar un control más detallado sobre la disminución de la resolución de la imagen que lo que hace la -dPDFSETTINGS=/screen genérica -dPDFSETTINGS=/screen (que define algunos valores predeterminados generales, que es posible que desee anular):

  • Cómo reducir la resolución de las imágenes en un archivo pdf?

Básicamente, le dice cómo hacer que Ghostscript muestree todas las imágenes a una resolución de -dPDFSETTINGS=/screen (este valor es lo que -dPDFSETTINGS=/screen usa - es posible que desee bajar aún más):

-dDownsampleColorImages=true / -dDownsampleGrayImages=true / -dDownsampleMonoImages=true / -dColorImageResolution=72 / -dGrayImageResolution=72 / -dMonoImageResolution=72 /

Si quieres probar si Ghostscript también puede ''desentrañar'' las fuentes utilizadas (a veces funciona, a veces no, dependiendo de la complejidad de la fuente incrustada, y también del tipo de fuente utilizado ), puedes intentar agregue lo siguiente a su comando gs:

gs / -o output.pdf / [...other options...] / -dEmbedAllFonts=false / -dSubsetFonts=true / -dConvertCMYKImagesToRGB=true / -dCompressFonts=true / -c ".setpdfwrite <</AlwaysEmbed [ ]>> setdistillerparams" / -c ".setpdfwrite <</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats /Arial]>> setdistillerparams" / -f input.pdf

Nota: Tenga en cuenta que la resolución de imagen de disminución de la resolución seguramente reducirá la calidad (irreversiblemente), y las fuentes que desacoplan harán que sea difícil o imposible visualizar e imprimir los PDF a menos que las mismas fuentes estén instaladas en la máquina ....

Actualizar

Una opción que había pasado por alto en mi respuesta original es agregar

-dDetectDuplicateImages=true

a la línea de comando. Este parámetro lleva a Ghostscript a intentar detectar cualquier imagen que esté incorporada en el PDF varias veces. Esto puede suceder si utiliza una imagen como logotipo o fondo de página, y si el software generador de PDF no está optimizado para esta situación. Este solía ser el caso con las versiones anteriores de OpenOffice / LibreOffice (he probado la última versión de LibreOffice, v4.3.5.2, y ya no hace cosas tan estúpidas).

También ocurre si concatenas archivos PDF con la ayuda de pdftk . Para mostrarle el efecto y cómo puede descubrirlo, veamos un archivo PDF de muestra:

pdfinfo p1.pdf Producer: libtiff / tiff2pdf - 20120922 CreationDate: Tue Jan 6 19:36:34 2015 ModDate: Tue Jan 6 19:36:34 2015 Tagged: no UserProperties: no Suspects: no Form: none JavaScript: no Pages: 1 Encrypted: no Page size: 595 x 842 pts (A4) Page rot: 0 File size: 20983 bytes Optimized: no PDF version: 1.1

Las versiones recientes de la utilidad pdfimages de Poppler han agregado soporte para un parámetro -list , que puede -list todas las imágenes incluidas en un archivo PDF:

pdfimages -list p1.pdf page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------- 1 0 image 423 600 rgb 3 8 jpeg no 7 0 52 52 19.2K 2.6%

Este PDF de muestra es un documento de 1 página, que contiene una imagen, que se comprime con compresión JPEG, tiene un ancho de 423 píxeles y una altura de 600 píxeles y se procesa con una resolución de 52 PPI en la página.

Si concatenamos 3 copias de este archivo con la ayuda de pdftk así:

pdftk p1.pdf p1.pdf p1.pdf cat output p3.pdf

a continuación, el resultado muestra estas propiedades de imagen a través de pdfimages -list :

pdfimages -list p3.pdf page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------- 1 0 image 423 600 rgb 3 8 jpeg no 4 0 52 52 19.2K 2.6% 2 1 image 423 600 rgb 3 8 jpeg no 8 0 52 52 19.2K 2.6% 3 2 image 423 600 rgb 3 8 jpeg no 12 0 52 52 19.2K 2.6%

Esto muestra que hay 3 objetos PDF idénticos (con los ID 4, 8 y 12) que están integrados en p3.pdf ahora. p3.pdf consta de 3 páginas:

pdfinfo p3.pdf | grep Pages: Pages: 3

Optimice el PDF reemplazando las imágenes duplicadas con referencias

Ahora podemos aplicar la optimización mencionada anteriormente con la ayuda de Ghostscript

gs -o p3-optim.pdf -sDEVICE=pdfwrite -dDetectDuplicateImages=true p3.pdf

Comprobación:

pdfimages -list p3-optim.pdf page num type width height color comp bpc enc interp objectID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------- 1 0 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6% 2 1 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6% 3 2 image 423 600 rgb 3 8 jpeg no 10 0 52 52 19.2K 2.6%

Todavía hay una imagen en la lista por página, pero el ID del objeto PDF es siempre el mismo ahora: 10.

ls -ltrh p1.pdf p3.pdf p3-optim.pdf -rw-r--r--@ 1 kp staff 20K Jan 6 19:36 p1.pdf -rw-r--r-- 1 kp staff 60K Jan 6 19:37 p3.pdf -rw-r--r-- 1 kp staff 16K Jan 6 19:40 p3-optim.pdf

Como puede ver, la concatenación "tonta" hecha con pdftk aumentó el tamaño del archivo original a tres veces el original. La optimización de Ghostscript lo redujo en una cantidad considerable.

Las versiones más recientes de Ghostscript pueden incluso aplicar -dDetectDuplicateImages por defecto. (AFAIR, v9.02, que lo introdujo por primera vez, no lo usó por defecto).


Yo uso Ghostscript con las siguientes opciones tomadas desde here .

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen / -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf