No necesariamente tiene que ser CMD pero lo prefiero. Aunque tiene que ser gratis.
He probado muchos, pero todos parecen optimizar algunos datos de bit dentro de los PDF y ni siquiera tocan la compresión de imagen, que es lo que busco, ya que este es el principal culpable del tamaño de mis PDF generados desde Google Docs.
No estoy seguro de lo que quiere decir exactamente con "optimizador de compresión":
Es posible que desee dejar cada objeto PDF que pueda ser relevante para las páginas procesadas "tal cual" e imponer la compresión sin pérdidas más alta posible a los flujos de objetos que aún no están comprimidos, o que están comprimidos/codificados con un no- método de compresión tan eficiente.
Es posible que esté dispuesto a aceptar, además de las opciones enumeradas en "1", algunos otros cambios en el archivo PDF:
Una línea de comandos de Ghostscript lo suficientemente sofisticada y larga puede ayudar con eso. Hará una conversión de PDF a PDF:
gs \
-o smaller-downsampled+gray.pdf \
-sDEVICE=pdfwrite \
-dCompressPages=true \
-dCompressFonts=true \
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
-dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.0 \
-dMonoImageDownsampleThreshold=1.0 \
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-dColorConversionStrategyForImages=/Gray \
-dCompatibilityLevel=1.4 \
-dEmbedAllFonts=false \
-c ".setpdfwrite <</AlwaysEmbed [ ] /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] /ColorImageFilter /DCTEncode /GrayImageFilter /DCTEncode /MonoImageFilter /CCITTFaxEncode /OutputICCProfile (None)>> setdistillerparams" \
-f big.pdf
(Para Windows, cambie gs
a gswin32c.exe
o gswin64c.exe
y cambie todos los marcadores de continuación de línea \
a ^
...) El comando anterior cambiará lo siguiente:
/DCTEncode
) si es posible.Mi comando de ejemplo original tenía un error tipográfico. Había contenido estas líneas, que son incorrectas :
-sProcessColorModel=/DeviceGray \ -sColorConversionStrategy=/Gray \ -sColorConversionStrategyForImages=/Gray \
Hay dos maneras diferentes de expresar estas opciones correctamente :
Uso -d
para estos parámetros. En ese caso, debe haber barras diagonales/
para los valores de los parámetros:
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-dColorConversionStrategyForImages=/Gray \
Uso -s
para estos parámetros. /
En ese caso , se deben omitirlas barras diagonales
-sProcessColorModel=DeviceGray \
-sColorConversionStrategy=Gray \
-sColorConversionStrategyForImages=Gray \
(Sin embargo, no existe una regla general que se pueda derivar para todas las opciones de Ghostscript a partir de este ejemplo, solo se aplica a un cierto subconjunto de parámetros donde -s...
o -d...
se puede usar alternativamente de esta manera).
Así que lo entendí exactamente al revés. ¡Perdón por la confusión que esto causó!
En cualquier caso, el comando modificado funciona para los OP vinculados big.pdf
ahora. derriba
Datos de la imagen original en el interior big.pdf
:
$ pdfimages -list big.pdf
page num type width height color comp bpc enc interp objID x-ppi y-ppi size ratio
-----------------------------------------------------------------------------------
1 0 image 1600 1071 rgb 3 8 image no 7 0 142 142 2502K 50%
Datos para la nueva imagen dentro smaller-downsampled+gray.pdf
:
$ pdfimages -list smaller-downsampled+gray.pdf
page num type width height color comp bpc enc interp objID x-ppi y-ppi size ratio
-----------------------------------------------------------------------------------
1 0 image 800 535 gray 1 8 jpeg no 12 0 71 71 48.5K 12%
^
. Y posiblemente elimine los espacios del comienzo de las líneas. (Pensé que alguien que pedía explícitamente una herramienta de línea de comandos lo sabía)./
, ¡hablé de reemplazar \ como marcadores de continuación de línea! Tampoco hice publicidad para eliminar los espacios al final de las líneas antes de los (nuevos) ^
letreros (¡debe quedar al menos 1 espacio!).gswin64.exe
para Windows, pero recomendégswin64c.exe
(observe elc
antes del.exe
?!?)
franck dernoncourt
Manny Calavera