opción de compresión pdftk
Utilizo pdftk para comprimir un pdf usando la siguiente línea de comandos
pdftk file1.pdf output file2.pdf compress
Funciona a medida que el peso de mi archivo disminuye.
Hay [opciones] para cambiar la compresión???
O tal vez otras soluciones para comprimir mi archivo? Es pesado porque algunos gráficos tienen muchos puntos. ¿Hay alguna manera de convertir estos gráficos a jpg por ejemplo y adaptar la compresión?
10 answers
Tuve el mismo problema y encontré dos soluciones diferentes (ver este hilo para más detalles). Ambos redujeron drásticamente el tamaño de mi PDF sin comprimir.
-
Pixelado (con pérdida):
convert input.pdf -compress Zip output.pdf
-
Sin píxeles (sin pérdidas, pero puede mostrarse ligeramente diferente):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
Edit : Acabo de descubrir otra opción (para la compresión sin pérdida), que evita el comando gs desagradable. qpdf es una herramienta ordenada que convierte archivos PDF (compresión / descompresión, cifrado / descifrado), y es mucho más rápido que el comando gs:
qpdf --linearize input.pdf output.pdf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-10 19:48:09
Este procedimiento funciona bastante bien
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
Dale una oportunidad.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-25 21:38:46
Tratando de comprimir un PDF que hice con 400ppi tiffs, en su mayoría de 8 bits, algunos de 24 bits, con compresión PackBits, usando tiff2pdf
comprimido con Zip/Deflate. Un problema que tuve con cada uno de estos métodos: ninguno de los métodos anteriores conservó el ÍNDICE de marcadores que creé manualmente en Acrobat Pro X. Ni siquiera la configuración recomendada ebook
para gs
. Claro, podría abrir una copia del original con el ÍNDICE intacto y hacer un Replace pages
pero desafortunadamente, ninguno de estos métodos hizo un un trabajo satisfactorio para empezar. O redujeron el tamaño tanto que la calidad fue inaceptablemente pixelada, o no redujeron el tamaño en absoluto y en un caso realmente lo aumentaron a pesar de la pérdida de calidad.
pdftk compress
:
no change in size
bookmarks TOC are gone
gs screen
:
takes a ridiculously long time and 100% CPU
errors:
sfopen: gs_parse_file_name failed. ?
| ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->10.2MB hideously pixellated
bookmarks TOC are gone
gs printer
:
takes a ridiculously long time and 100% CPU
no errors
74.8MB-->66.1MB
light blue background on pages 1-4
bookmarks TOC are gone
gs ebook
:
errors:
sfopen: gs_parse_file_name failed.
./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic
| ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile
74.8MB-->32.2MB
badly pixellated
bookmarks TOC are gone
qpdf --linearize
:
very fast, a few seconds
no size change
bookmarks TOC are gone
pdf2ps
:
took very long time
output_pdf2ps.ps 74.8MB-->331.6MB
ps2pdf
:
pretty fast
74.8MB-->79MB
very slightly degraded with sl. bluish background
bookmarks TOC are gone
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-07 22:22:21
Si el tamaño del archivo sigue siendo demasiado grande, podría ayudar a usar ps2pdf para reducir la resolución del archivo pdf producido:
pdf2ps input.pdf tmp.ps
ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf
Ajuste el valor de la opción -dColorImageResolution para lograr un resultado que se ajuste a sus necesidades (el valor describe la resolución de la imagen en DPIs). Si su archivo de entrada está en escala de grises, reemplazar Color a Gray o usar ambas opciones en el comando anterior también podría ayudar. Más ajuste es posible cambiando el -dPDFSETTINGS opción a /default o /impresora. Para explicaciones de todas las opciones posibles consulte el manual ps2pdf .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-17 13:28:09
Después de probar gpdf como nullglob sugirió, encontré que obtuve los mismos resultados de compresión (un archivo de ~900mb hasta ~30mb) con solo usar la impresora cups-pdf. Esto podría ser más fácil/preferido si ya está viendo un documento y solo necesita comprimir uno o dos documentos.
En Ubuntu 12.04, puede instalar esto por
sudo apt-get install cups-pdf
Después de la instalación, asegúrese de comprobar en Herramientas del sistema > Administración > Impresión > haga clic con el botón derecho en 'PDF' y configure para'habilitar'
De forma predeterminada, la salida se guarda en una carpeta llamada PDF en su directorio personal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:20
No vi mucha reducción en el tamaño del archivo usando qpdf. La mejor manera que encontré es después de pdftk se hace uso ghostscript para convertir pdf a postscript y luego volver a pdf. En PHP usarías exec:
$ps = $save_path.'/psfile.ps';
exec('ps2ps2 ' . $pdf . ' ' . $ps);
unlink($pdf);
exec('ps2pdf ' .$ps . ' ' . $pdf);
unlink($ps);
Usé esto hace unos minutos para tomar la salida pdftk de 490k a 71k.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-28 02:26:34
pdf2ps large.pdf small.pdf
es suficiente, en lugar de en dos pasos
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-08 15:26:59
La opción pdf2ps de una línea (por Lee) en realidad aumentó el tamaño del pdf. Sin embargo, los dos pasos uno lo hizo mejor. Y se puede combinar en uno solo usando la redirección de & a entrada/salida estándar y tuberías:
Pdf2ps grande.pdf | ps2pdf - pequeño.pdf
Redujo un PDF generado por xsane de 18 Mo a 630 ko!
Los enlaces se pierden, pero para el presente ejemplo, no es una preocupación... y fue la forma más fácil de lograr el resultado deseado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 21:01:12
En caso de que desee comprimir un PDF que contiene una gran cantidad de texto seleccionable, en Windows puede utilizar NicePDF Compressor - elija la opción "Flate". Después de probar todo (cpdf, pdftk, gs) finalmente me ayudó a comprimir mi PDF de 1360 páginas de 500 MB a 10 MB.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-03 11:09:26
Tuve el mismo problema y utilicé esta función para comprimir páginas individuales, lo que resulta en que el tamaño del archivo se comprima hasta 1/3 del tamaño original.
for (int i = 1; i <= theDoc.PageCount; i++)
{
theDoc.PageNumber = i;
theDoc.Flatten();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-11 15:33:03