miércoles, 18 de marzo de 2015

Comprimiendo PDFs

Hace bastante tiempo escribí una entrada que se llamaba 'Bailando con PDFs' donde me introducía un poco en el tema de edición de PDFs. Ahora voy a analizar un poco (bueno, a mi estilo 'newbie') el tema de comprimir (optimizar tamaño) un PDF, porque he observado que a veces obtengo algunos que son... 'pesaditos', y me pide el cuerpo reducir, en lo posible, su tamaño.
Ya se que 'el primo Zumosol' de los PDFs, que es el Adobe Acrobat, tiene varias opciones para esto pero, como es un programa... primero, pesadísimo y segundo, orientado a Windows, yo quiero darle un repaso al 'Estado del Arte', en Linux (en particular, en Debian, claro).
Así que vamos allá.
Lo primero que hay que decir es que un PDF lo puedes obtener...
a) Porque lo creas con LibreOffice (con Archivo... Exportar a PDF)
b) Porque lo creas escaneando (como texto) un documento, e incluso porque lo conviertes, desde una imagen, con el clásico comando (de ImageMagick) que tantas veces he mencionado:
convert imagen.png archivo.pdf
c) O porque te lo mandan por correo o te descargas, directamente, de una web

Así que...
A- Optimizar un PDF creado con LibreOffice
Tenemos que darnos cuenta de que, cuando conviertes un documento a PDF, con LibreOffice, en Archivo... Exportar a PDF te aparece una ventana emergente donde es bueno que compruebes qué está marcado, si 'compresión sin pérdidas', o 'compresión JPEG'. Porque... ¿cuando elegir una u otra?
Bueno, pues he hecho una pequeña prueba y he obtenido esto al crear un PDF de documentos hechos con LibreOffice-Writer: 
- documento 'solo texto'... compresión sin pérdidas... 329,4 kB 
- documento 'solo texto'... compresión JPEG... 329,4 kB 
- documento 'texto con imágenes': compresión sin perdidas... 1,9 MB 
- documento 'texto con imágenes': compresión JPEG... 818 kB 
Así que la cosa es clara: debemos dejarlo siempre en la opción 'Compresión JPEG'. Incluso, de esta manera, siempre podemos ajustar un poco más las cosas, jugando con la 'calidad' y con la 'Resolución de las imágenes' 

B- Comprimir un PDF ya creado, o descargado
Aquí entramos en el meollo de la cuestión. Y vamos a empezar viendo las distintas alternativas que podemos tener.
A mi se me ocurren estas:
1- Comprimiéndolo 'online' 
Hay páginas web que te hacen este servicio gratuitamente. Si buscas, con Google, por 'comprimir online un PDF' la primera que te encuentras es esta:
http://smallpdf.com/es/comprimir-pdf
que es muy fácil de usar: subes tu PDF y, en unos instantes, te lo ofrece, ya comprimido, para que te lo descargues. Como recurso, es sencillísimo.
Hombre, la única pega que tiene es que no sabes qué pueden hacer con tu archivo, así que si eres algo 'conspiranoico', o el documento es importante... a lo mejor no te gusta el método. 

2- Comprimiéndolo por consola
Anda por ahí un mandato por consola, algo complicado pero que, si lo tienes guardado a mano, es muy fácil de usar, con copiar y pegar, que te hace todo el trabajo.
Nota: para que funcione, tienes que tener instalados los paquetes ghostscript y gsfonts. Yo los tengo (quizás, de cuando instalé 'Cups') pero si no es fácil, están en los repositorios.
Y el comando es este (en consola de usuario):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=PDFREDUCIDO.pdf PDFORIGINAL.pdf 
... así que con abrir la consola en la ruta donde esté el PDF y copiarlo y pegarlo, te basta cambiar lo último: 'PDFORIGINAL.pdf' por el nombre de tu archivo, y te lo comprime con el nombre de 'PDFREDUCIDO.pdf' (o el que quieras poner). 
NOTA:  el mandato -dPDFSETTINGS=/screen es el que define la calidad y, por tanto, el nivel de compresión. La calidad '=/screen' lo ajusta a 72 dpi (puntos por pulgada). Se puede poner '=/ebook' (calidad media, 150 dpi), '=/printer' (alta calidad, 300 dpi), '=/prepress (también 300 dpi, pero mejorando el color) o '=/default', que parece ser que es un poquito mejor que /screen
NOTA: si no se pone lo de -dPDFSETTINGS=... adopta la opción 'default'
(Incluso me apetecía hacer un pequeño script, y usarlo desde un lanzador puesto en el Escritorio, para facilitar la tarea... si yo tuviese algo más que 'culturilla general', en el tema de los scripts, y tuviese ganas para ello. Pero hay otras soluciones, quizás aún más sencillas).

3- Comprimiéndolo por script desde el navegador de archivos 
Yo uso Nemo, un 'fork' del Nautilus, y estoy encantado con este navegador de archivos. Nemo ya tiene integrados, en su diseño, una serie de acciones (o 'scripts') muy útiles, que aparecen en el Menú contextual ('crear un enlace', 'abrir una consola aquí', 'abrir con permisos administrativos', 'crear un nuevo lanzador aquí', etc, etc...). Y se le pueden añadir más, pero hay que saber un poquito del tema. Por ejemplo, ver aquí... 
(En Nautilus (que hace mucho que no lo uso) se debe empezar instalando el paquete 'nautilus-actions' y luego irlas instalando, etc. Pero, como digo, las más importantes, ya vienen instaladas, por defecto, en Nemo). 
El caso es que, en Nemo, se pueden usar (más o menos...) los scripts escritos para Nautilus, y entre ellos, buceando por Google, encontré un script que se llama, precisamente, así: 'Comprimir PDF'.
Así que me lo descargué, lo puse (en mi caso) en la ruta /home/doc/.gnome2/nemo-scripts, que es donde deben ir (al menos, a nivel usuario, yo soy 'usuario único' de mi PC, pero si se quisiese aplicar a varios usuarios quizás habría que ponerlos en la ruta /usr/share/nemo...). Por cierto, los de Nautilus van, en cambio, van el /home/doc/.local/share/nautilus/scripts. 
Y, MUY IMPORTANTE, para que funcionase el script, tuve que editarlo y cambiar, en una línea 'operativa' (o sea, 'no comentada') , la referencia a 'Nautilus' por la referencia a 'Nemo'. 
El caso es que la cosa, arreglado este asuntillo, y ya funcionando desde Nemo, clicando con el botón derecho ratón sobre un archivo, queda así (puestos a ello, añadí algún script más)

 Y este script 'Comprimir un PDF', que como se ve, es comodísimo de usar, te ofrece varias opciones:
Bien pero, y al final... ¿Qué resultados prácticos se obtienen? 
Pues para averiguarlo empecé a hacer alguna prueba y debo decir que estoy algo confuso... porque los resultados no son lo coherentes que pensaba deberían ser
He aquí una muestra: 
De un PDF original (texto + imágenes) de 1,5 MB 
- comprimido online... 1,2 MB 
- comprimido con el comando, calidad /screen, por consola... 860 kB 
- comprimido con script Nemo, opción 'normal': 887 kB 
- idem, opción 'solo visualizar'... 860 kB 
- idem opción 'baja calidad'... 902 kB (¿¿...??)
Y de un PDF original (también texto + imágenes) de 827 kB 
- comprimido online... 403 kB 
- comprimido con comando, por consola... 396 kB 
- comprimido con script Nemo... opción 'normal'... 384 kB 
- idem, opción 'solo visualizar'... 396 kB 
- idem opción 'baja calidad'... 396 kB 
Asi que quedo un poco despistado, porque llego a la conclusión de que hombre, algo comprimen (casi el 50% ¿no?) pero los datos me parecen 'poco coherentes'. Así que lo mejor, si tienes tiempo y humor, es probar las distintas alternativas, si quieres quedarte con la mejor.

Y aquí acaba, al menos por el momento, mi nuevo 'baile con los PDFs', con la conclusión de que, efectivamente, en Linux también se pueden hacer cosas para optimizar el tamaño de los PDFs... y de que estaría encantado si alguien, en los 'Comentarios', pudiese aportar alguna idea más.

No hay comentarios:

Publicar un comentario