Optimización eficiente de PDF con la CLI de Ghostscript
Para reducir el tamaño de un PDF con Ghostscript, crea una copia de prueba independiente y
compárala con el original antes de compartirla. El ajuste preestablecido
/ebook es un punto de partida para documentos con imágenes grandes,
pero una conversión exitosa también puede generar un archivo más grande. Este tutorial conserva
ambos archivos y te permite decidir si la copia de prueba es útil.
Decide si es adecuado reescribir el PDF
El dispositivo pdfwrite de Ghostscript crea un PDF nuevo a partir de las
operaciones de dibujo del documento de entrada. No se limita a comprimir los bytes originales.
Artifex explica por qué esto puede cambiar las características del documento y
aumentar el tamaño del archivo.
Usa este flujo de trabajo para crear una copia desechable que puedas compartir de un documento cuya apariencia puedas verificar. Conserva los originales firmados: la copia reescrita no mantiene la validez de sus firmas digitales. Si necesitas formularios rellenables, etiquetas de accesibilidad y orden de lectura, archivos adjuntos o conformidad con normas de archivado, usa un flujo de trabajo que preserve y valide explícitamente esas características. Ver las páginas renderizadas no permite determinar si se conservaron. Los enlaces, los marcadores, el texto que permite búsquedas y los metadatos también deben verificarse si dependes de ellos.
Configura Ghostscript
Necesitas Ghostscript, pdfinfo y pdftoppm de Poppler,
Bash y un visor de PDF. En Ubuntu, los paquetes se llaman ghostscript y
poppler-utils. Usa paquetes que reciban mantenimiento y registra sus versiones:
gs --version && pdfinfo -v && pdftoppm -v
Los comandos siguientes se probaron en Linux con Ghostscript 10.07.1 y Poppler 26.08.0, y con Ghostscript 10.02.1 y Poppler 24.02.0 de Ubuntu 24.04. Son ejemplos para Bash; aquí no se aborda su ejecución en Windows ni en macOS.
Crea una copia de prueba sin sobrescribir un resultado anterior
Trabaja en un directorio que contenga tu PDF con el nombre original.pdf.
Conserva ese archivo durante toda la comparación. Ejecuta este bloque completo en Bash,
incluidos los paréntesis:
(
set -eu
pdfinfo ./original.pdf
mkdir ./pdf-review
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook \
-dCompatibilityLevel=1.7 -dAutoRotatePages=/None \
-dNOPAUSE -dBATCH -dPDFSTOPONERROR \
-sOutputFile=./pdf-review/candidate.pdf -f ./original.pdf
)
La ejecución inicial de pdfinfo verifica que Poppler pueda leer el archivo
de entrada. mkdir omite deliberadamente -p:
si pdf-review ya existe, el bloque se detiene antes de ejecutar Ghostscript,
incluso sin una terminal interactiva. Tu resultado anterior y original.pdf
permanecen intactos. Los paréntesis limitan el alcance de set -eu a este
bloque.
-sDEVICE=pdfwrite selecciona la salida en PDF. /ebook puede
reducir el detalle de las imágenes; PDF 1.7 y la desactivación de la rotación automática de páginas
son elecciones explícitas para esta prueba. -dNOPAUSE -dBATCH evita las indicaciones
interactivas entre páginas y finaliza tras el procesamiento. -dPDFSTOPONERROR pide
a Ghostscript que se detenga ante errores de PDF en lugar de intentar su recuperación habitual,
como se describe en la
documentación de uso.
Ninguno de los programas es un validador completo de PDF. Lee todas las advertencias y, si la
conversión falla, considera incompleto todo lo que quede en pdf-review.
Compara los tamaños de los archivos
Cuando la conversión finalice correctamente, compara los bytes reales y el número de páginas:
wc -c ./original.pdf ./pdf-review/candidate.pdf
pdfinfo ./original.pdf && pdfinfo ./pdf-review/candidate.pdf
Las primeras dos filas de wc muestran los tamaños individuales;
la fila total los suma. En los dos informes de
pdfinfo, compara Pages y
Page size. Una menor cantidad de bytes no justifica que falte una página ni
un cambio inesperado en sus dimensiones. En documentos con páginas de distintos tamaños, revisa
también cada página en tu visor.
Renderiza ambos documentos con Poppler, de forma independiente de Ghostscript:
(
set -eu
mkdir ./pdf-review/previews
pdftoppm -r 150 -png ./original.pdf ./pdf-review/previews/original
pdftoppm -r 150 -png ./pdf-review/candidate.pdf ./pdf-review/previews/candidate
)
Esto genera un PNG por página, con los prefijos correspondientes
original- y candidate-. No permite reutilizar un
directorio previews existente. Abre las imágenes correspondientes una
junto a otra e inspecciona el texto pequeño, las líneas finas, las fotografías, el color y la
orientación de las páginas. Estas vistas previas de 150 dpi ayudan a detectar cambios visibles;
abre también los PDF con el nivel de zoom previsto o realiza pruebas de impresión al tamaño
previsto. Prueba a seleccionar y buscar texto y a seguir los enlaces importantes en la copia de
prueba.
Usa la copia de prueba solo si es más pequeña y supera las verificaciones que tu documento
necesita. De lo contrario, sigue usando el original. Los PDF de texto o vectoriales que ya son
compactos pueden aumentar de tamaño, y una digitalización muy comprimida puede ofrecer poco
margen de reducción. Para probar otro ajuste, cambia el nombre del directorio de revisión para
conservar esa prueba y vuelve a ejecutar el proceso a partir de original.pdf.
Volver a comprimir una copia de prueba con pérdida puede eliminar más detalles.
Ajustes preestablecidos de optimización de PDF
Estos son los objetivos de reducción de resolución para imágenes en color y escala de grises en las versiones probadas. Las definiciones de ajustes preestablecidos de Ghostscript también especifican ajustes separados para imágenes monocromáticas:
| Ajuste preestablecido | Objetivo en color y grises | Qué revisar |
|---|---|---|
/screen | 72 dpi | Los detalles finos de las imágenes pueden desaparecer. |
/ebook | 150 dpi | Revisa las digitalizaciones y el texto pequeño dentro de las imágenes. |
/printer | 300 dpi | Revisa el color y las fuentes para la impresora prevista. |
/prepress | 300 dpi | No garantiza que el documento esté listo para imprimir. |
La reducción de resolución también utiliza un umbral; no cambia el tamaño de todas las imágenes
para alcanzar el objetivo. Estos ajustes preestablecidos modifican más que la resolución,
incluido el tratamiento del color y las fuentes. /prepress no es una opción
que active la máxima calidad. Si tienes un requisito específico para las imágenes, usa los
controles individuales de imagen
en lugar de añadir más ajustes preestablecidos.
Elige un nivel de compatibilidad
El ejemplo solicita explícitamente PDF 1.7 después de seleccionar
/ebook. Usa un nivel anterior solo cuando un destinatario lo requiera.
No reduzcas la versión de PDF solo para intentar obtener un archivo más pequeño: esto puede
desactivar funciones de compresión, y una salida anterior a PDF 1.4 puede forzar la conversión de
páginas con transparencias en mapas de bits. Consulta las
limitaciones de pdfwrite
antes de cambiar este ajuste.
Para una colección de PDF, evalúa documentos representativos antes de automatizar la conversión. Mantén una ubicación de salida separada para cada entrada y compara los resultados individualmente; una conversión exitosa de un documento digitalizado dice poco sobre un dibujo vectorial o un formulario.
Errores comunes y soluciones
- Falta un comando: Instala el paquete correspondiente y verifica que su ejecutable esté en
PATH. Poppler proporciona los dos comandos de inspección utilizados aquí. File existsdemkdir: La protección contra sobrescritura funcionó. Revisa la prueba anterior y cambia el nombre de su directorio antes de iniciar otra. No añadas-ppara eludir la protección.- Archivo de entrada ausente, cifrado o corrupto: Verifica el nombre del archivo y abre el original en un visor. Obtén una copia de origen legible y autorizada si es necesario. No uses una conversión parcial.
- Sustitución de fuentes o apariencia inesperada: Opta por volver a exportar el documento de origen con sus fuentes incrustadas. Un archivo más pequeño con texto modificado no es un resultado aceptable.
- Permiso denegado o disco lleno: Usa un directorio de trabajo con permisos de escritura y espacio para el nuevo PDF y las vistas previas de las páginas. Conserva la prueba fallida por separado al reintentar.
Nota sobre licencias
Ghostscript está disponible bajo la AGPL y una licencia comercial. Si planeas distribuirlo con una aplicación u operar un servicio, revisa la información sobre licencias de Artifex para ese uso.
