Optimización de la estructura o reconstrucción: ¿qué herramienta conviene?
Los dos programas funcionan de formas fundamentalmente distintas. El comando de QPDF de esta página mantiene el contenido de tus páginas y solo vuelve a guardar los objetos del archivo de la forma más compacta posible. Para ello, por ejemplo, agrupa objetos en flujos de objetos y vuelve a comprimir los datos Flate. No reduce la resolución de las imágenes ni las vuelve a codificar como JPEG. La optimización opcional de imágenes de QPDF es un paso independiente con pérdida de calidad, que se explica brevemente en la siguiente sección. La documentación de QPDF describe cada una de las opciones.
Ghostscript funciona de otra manera. Con el dispositivo de salida pdfwrite, lee el PDF y genera un archivo nuevo a partir de las instrucciones de dibujo de cada página. Por lo general, el texto y los gráficos vectoriales se conservan como tales, por lo que las páginas no se convierten simplemente en imágenes. Sin embargo, según la configuración, Ghostscript puede recalcular las imágenes. Además, puede cambiar todo aquello que no forme parte del aspecto visible de la página. Así lo explica el manual de Ghostscript sobre pdfwrite.
Algunos programas ofrecen una tercera vía: generan cada página como una imagen. En ese proceso, por lo general se pierden el texto nativo, la búsqueda y los elementos interactivos. Ninguno de los dos comandos de esta página funciona así.
Ninguno de estos métodos garantiza un archivo más pequeño. Como regla general: si tu PDF contiene principalmente texto y gráficos vectoriales, empieza con QPDF. Esto también se aplica si quieres que las imágenes, los enlaces o los formularios cambien lo menos posible. Ghostscript puede ser una opción cuando las fotos grandes o los escaneos constituyen la mayor parte del tamaño y puedes sacrificar algo de calidad de imagen a cambio. La guía Comprimir PDF sin pérdida de calidad explica qué significan concretamente la compresión sin pérdida y con pérdida.
Los programas con interfaz gráfica siguen los mismos métodos. Según su propia información, PDFsam distingue entre la optimización exclusiva de la estructura en la edición Basic y una función específica de compresión de imágenes en las ediciones Visual y Enhanced. Algunas guías antiguas sobre scripts para gestores de archivos o interfaces que ejecutan Ghostscript en segundo plano se refieren a versiones anteriores de Ubuntu. Por eso, no sigas sus pasos de instalación sin comprobarlos antes. Según el fabricante, PDF24 Creator solo está disponible para Windows; no ofrece una edición para Linux.
Si no quieres instalar nada, puedes usar el compresor de PDF en el navegador. Procesa el archivo en tu dispositivo, sin subirlo. Sin embargo, no lo hemos probado específicamente en navegadores de Linux. La guía Comprimir PDF sin subir archivos explica en qué se diferencia el procesamiento local en el navegador del trabajo realmente sin conexión.
Comprobar la versión y crear un archivo de salida independiente
Resumen de comandos
Elige uno de los seis comandos de esta guía. Verás el comando sin modificar y para qué sirve cada parte.
Los comandos proceden de los manuales oficiales de QPDF y Ghostscript. No los hemos ejecutado en Ubuntu ni en otra distribución. Las versiones instaladas en tu sistema pueden diferir de las de la documentación en línea.
Esta página no ejecuta comandos ni muestra salida de terminal. Solo verás la respuesta de tu sistema cuando ejecutes un comando tú mismo.
Mostrar versión de QPDF
Muestra la versión instalada de QPDF. Compruébala antes de usar los demás comandos.
qpdf --versionTambién puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
qpdfPrograma- Invoca el programa de línea de comandos QPDF.
--versionMostrar versión- Muestra la versión de QPDF que usa tu sistema.
Si el intérprete indica que no encuentra el comando, probablemente QPDF no esté instalado. El nombre del paquete y la instalación dependen de tu distribución.
Sección de la guíaMostrar versión y dispositivos de salida de Ghostscript
Muestra la versión de Ghostscript y los dispositivos de salida disponibles.
gs -hTambién puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
gsPrograma- Invoca Ghostscript. En Unix el programa se llama gs.
-hAyuda- Muestra versión, opciones, formatos, dispositivos de salida disponibles y ruta de búsqueda.
Si el intérprete indica que no encuentra el comando, probablemente Ghostscript no esté instalado. Anota la distribución y la versión para poder reproducir y entender los resultados más adelante.
Sección de la guíaGuardar una estructura más compacta
Vuelve a guardar los objetos del archivo de la forma más compacta posible. No reduce la resolución de las imágenes ni las recodifica como JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"También puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
qpdfPrograma- Invoca el programa de línea de comandos QPDF.
"original.pdf"Archivo de entrada- El PDF que se lee. El resultado se guarda en otro archivo.
--object-streams=generateGenerar flujos de objetos- Agrupa los objetos compatibles en flujos de objetos y los comprime. La salida tendrá al menos la versión PDF 1.5.
--compress-streams=yComprimir flujos- Comprime los flujos con Flate si no están ya comprimidos de otra forma.
--decode-level=generalizedDecodificar filtros generales- Decodifica datos con filtros generales compatibles como LZW, Flate, ASCII85 y ASCIIHex. No decodifica los datos JPEG (DCT).
--recompress-flateVolver a comprimir Flate- Descomprime los flujos Flate existentes y los comprime otra vez. Esto puede prolongar la escritura.
--compression-level=9Nivel de compresión- Elige para Flate el nivel zlib más alto del intervalo documentado de 1 a 9. Los niveles superiores requieren más tiempo. Este valor no tiene relación con la calidad JPEG.
"optimiert-qpdf.pdf"Archivo de salida- Nombre del archivo nuevo. En los dos comandos de comprobación se utiliza como entrada.
Solo comparar los bytes permite saber si el archivo nuevo es más pequeño. Un nombre de salida distinto no evita sobrescribir un archivo existente con ese nombre. Elige un nombre todavía sin usar. El comando no garantiza que una firma digital siga siendo válida.
Sección de la guíaReconstruir PDF con pdfwrite
Ghostscript lee el PDF y genera un archivo nuevo a partir de las instrucciones de dibujo de cada página, aquí con el ajuste /ebook.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"También puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
gsPrograma- Invoca Ghostscript.
-dSAFERControl de acceso- Restringe el acceso a archivos y dispositivos. Es el comportamiento predeterminado desde la versión 9.50. No es una garantía general de seguridad.
-dBATCHSalir al terminar- Cierra Ghostscript cuando termina de procesar los archivos indicados, en lugar de entrar en modo interactivo.
-dNOPAUSESin pausa- Suprime la pregunta y la pausa al final de cada página.
-sDEVICE=pdfwriteDispositivo de salida- Selecciona pdfwrite, que crea un PDF nuevo. Normalmente se conservan texto y gráficos vectoriales. Todo lo que no forme parte del aspecto visible de la página puede cambiar.
-dPDFSETTINGS=/ebookAjuste predefinido- Aplica un conjunto de parámetros con resolución de imagen media. El nombre describe un uso previsto, no un nivel de calidad ni un ahorro seguro.
-sOutputFile="optimiert-gs.pdf"Archivo de salida- Establece el nombre del archivo nuevo.
"original.pdf"Archivo de entrada- El PDF que lee Ghostscript.
Los detalles de imagen y las funciones del documento pueden cambiar, aunque las páginas parezcan iguales. No se garantiza un tamaño ni una calidad concretos. Revisa la salida guardada y elige un nombre de salida todavía sin usar.
Sección de la guíaComprobar la estructura de salida
Comprueba la sintaxis de la salida guardada. Para el resultado de Ghostscript, sustituye el nombre del archivo.
qpdf "optimiert-qpdf.pdf" --checkTambién puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
qpdfPrograma- Invoca el programa de línea de comandos QPDF.
"optimiert-qpdf.pdf"Archivo que comprobar- La salida guardada anteriormente por el comando QPDF.
--checkComprobar estructura- Comprueba estructura, cifrado, linealización y codificación de flujos.
El código de salida 0 indica una comprobación sin errores, 2 indica errores y 3 advertencias. Solo se comprueba la estructura del archivo. No indica si se ve correctamente, si funcionan formularios y enlaces ni si es seguro.
Sección de la guíaMostrar número de páginas
Muestra el número de páginas de la salida guardada. Ejecuta de nuevo el comando con el nombre del original y compara ambas cifras.
qpdf "optimiert-qpdf.pdf" --show-npagesTambién puedes seleccionar y copiar el comando directamente en el bloque de código.
Partes del comando
qpdfPrograma- Invoca el programa de línea de comandos QPDF.
"optimiert-qpdf.pdf"Archivo cuyas páginas contar- La salida guardada anteriormente por el comando QPDF.
--show-npagesContar páginas- Muestra el número de páginas del archivo indicado.
El mismo número de páginas no demuestra que contenido, imágenes y funciones no hayan cambiado. Revisa las páginas tú mismo.
Sección de la guíaEl botón solo escribe el comando mostrado en el portapapeles tras tu clic. No lee el portapapeles, no guarda datos ni envía nada.
Los comandos de esta página proceden de los manuales oficiales de QPDF y Ghostscript. No los hemos ejecutado nosotros mismos en Ubuntu ni en otra distribución, por lo que esta no es una guía probada en Ubuntu. Comprueba primero qué versiones tienes instaladas en tu sistema. Los paquetes de tu distribución pueden diferir de lo que recoge la documentación actual en línea.
Mostrar las versiones instaladas
qpdf --versiongs -hSi el intérprete de comandos indica que no se ha encontrado un comando, probablemente el programa no esté instalado. El nombre del paquete y la forma de instalarlo dependen de tu distribución. Anota la distribución y las versiones para poder reproducir y entender un resultado más adelante.
Reglas básicas para cada intento
- Conserva el original intacto. Los archivos de entrada y de salida deben tener siempre nombres diferentes.
- Asigna a cada archivo de salida un nombre nuevo que aún no hayas utilizado para no sobrescribir un archivo anterior.
- Empieza cada nuevo intento con el original, no con el resultado del intento anterior.
- No uses opciones ni scripts que sustituyan directamente el archivo de entrada.
QPDF: optimizar la estructura de almacenamiento
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"El comando lee original.pdf y crea un archivo nuevo llamado optimiert-qpdf.pdf. Las opciones hacen que los objetos se agrupen en flujos de objetos, que se compriman los flujos de datos y que los datos Flate se vuelvan a comprimir al nivel máximo. No incluye ningún recálculo de imágenes. Los flujos de objetos requieren PDF 1.5. Si un destinatario exige expresamente una versión de PDF anterior, este comando no es adecuado sin más ajustes.
QPDF también puede optimizar imágenes y volver a codificar datos JPEG con una calidad seleccionable. La opción para la calidad JPEG está disponible a partir de la versión 12.1. Ambas operaciones conllevan pérdida de calidad y pueden deteriorar aún más las imágenes JPEG ya comprimidas. Úsalas solo si después revisas las imágenes de forma específica.
Ghostscript: volver a generar un PDF con un ajuste predefinido
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"-sDEVICE=pdfwrite selecciona la salida en PDF, -sOutputFile establece el nombre del archivo nuevo y el archivo de entrada se indica al final. -dBATCH y -dNOPAUSE evitan que Ghostscript se quede esperando una entrada del usuario. -dSAFER también aparece así en los ejemplos de la guía de Ghostscript sobre la línea de comandos. El ajuste predefinido /ebook es solo un punto de partida, no una recomendación para todos los archivos.
Entender correctamente los ajustes predefinidos de Ghostscript
Con -dPDFSETTINGS seleccionas todo un conjunto de parámetros individuales a la vez. El nombre de un ajuste predefinido describe un uso previsto. No representa un nivel de calidad ni un ahorro determinado.
¿Ofrece entonces /prepress la mejor calidad? No. El manual señala expresamente que /prepress no es la configuración más fiel al original. Sin -dPDFSETTINGS, el resultado puede mantenerse más cerca del original. /prepress tampoco garantiza el archivo más pequeño.
Los valores objetivo de /screen y /ebook no significan que todas las imágenes vayan a tener exactamente 72 o 150 dpi después. Las imágenes por debajo del umbral no se reducen y conservan su resolución. Eso no implica necesariamente que permanezcan totalmente intactas, ya que los demás parámetros del ajuste predefinido, como los de codificación de imágenes o de color, pueden modificarlas de todos modos. La opción -r no sustituye a la reducción de resolución. Solo controla la resolución cuando Ghostscript necesita renderizar partes como alternativa y no reduce el tamaño de las imágenes incrustadas. Según el manual, a menudo es mejor definir parámetros individuales de forma específica que depender de un ajuste predefinido.
No uses el mismo ajuste predefinido para todos los archivos. Un documento de texto, un catálogo de fotos y un escaneo reaccionan de manera diferente. En el caso de los escaneos, lo mejor es empezar por el propio proceso de escaneado. La guía Reducir el tamaño de un PDF escaneado explica cómo hacerlo.
Comprobar el texto, los enlaces, los formularios y las firmas
Que un PDF tenga el mismo aspecto después de comprimirlo no demuestra que se haya conservado todo lo que contenía. Ghostscript reconstruye el archivo. Según la explicación de Ghostscript sobre la optimización de PDF, un aspecto idéntico puede ocultar cambios en las instrucciones y los metadatos. También después de usar QPDF debes comprobar las funciones que te interesan:
- Selecciona y copia texto y prueba la búsqueda.
- Haz clic en los enlaces y los marcadores.
- Si el archivo es un formulario, rellena sus campos y guárdalo a modo de prueba.
- Revisa datos como el título o el autor si el destinatario los utiliza.
- Si se exige un estándar concreto, como PDF/A, compruébalo con una herramienta diseñada para ello. Ninguno de los comandos de esta página garantiza que se conserve ese cumplimiento.
PDF con firma digital
Ninguno de los dos comandos puede garantizar que una firma digital siga siendo válida después de volver a generar el archivo. Por eso, la compresión no es una vía para reducir el tamaño de un PDF firmado. Conserva el original firmado sin modificar. Si otra persona ha firmado el documento y necesitas una versión más pequeña, consigue el archivo de origen sin firmar o habla con el firmante. Acuerda una nueva firma con el emisor o el destinatario. Encontrarás más información en la explicación de Adobe sobre las limitaciones de los PDF firmados. Una firma manuscrita escaneada y visible no es una firma digital.
Eliminar la protección por contraseña o las restricciones de edición no forma parte de la reducción del tamaño, y aquí no encontrarás comandos para hacerlo. En su lugar, pide al remitente una versión adecuada. La guía Entender las firmas y los formularios ofrece más información sobre cómo manejar estos documentos.
Comparar el tamaño del resultado y conservar el original
Que un comando se ejecute sin mensajes de error todavía no dice nada sobre el resultado. Compara el tamaño exacto del original y del archivo de salida en bytes, no solo los valores redondeados en MB. Puedes calcular el porcentaje de ahorro con la calculadora de tasa de compresión.
Comprobar la sintaxis y el número de páginas
qpdf "optimiert-qpdf.pdf" --checkQPDF indica una comprobación sin errores con el código de salida 0, errores con 2 y advertencias con 3. La comprobación solo abarca la estructura del archivo. No indica si los formularios, los enlaces y las imágenes siguen funcionando y viéndose como antes.
qpdf "optimiert-qpdf.pdf" --show-npagesRevisar en un visor de PDF
- Vuelve a abrir el archivo de salida guardado desde su carpeta.
- Recorre todas las páginas y compara su formato y orientación con el original.
- Examina las imágenes, el texto pequeño y las líneas finas con un nivel de ampliación alto.
- Prueba la búsqueda, los enlaces y los formularios como se describe en la sección anterior.
- Si es posible, abre el archivo también en un segundo visor.
¿Más grande, sin cambios o vacío?
Ghostscript también puede aumentar el tamaño de un PDF. El archivo se reconstruye y se codifica de otra manera, y las instrucciones nuevas a veces ocupan más espacio que las antiguas. Con QPDF tampoco hay mucho margen de reducción si el archivo ya está guardado de forma compacta.
Un resultado más grande o apenas más pequeño puede seguir siendo válido. Para saber si lo es, hay que realizar las mismas comprobaciones del archivo guardado que con cualquier otro archivo de salida, ya que el tamaño por sí solo no dice nada sobre errores o funciones perdidas. Al final, conserva el archivo que mejor se adapte a tus necesidades; a menudo será simplemente el original. El caso de un archivo de salida vacío, ilegible o dañado es distinto. Eso es un intento fallido, no una compresión especialmente intensa. No envíes ese archivo, lee los mensajes del terminal y vuelve a empezar con el original y un nombre nuevo para el archivo de salida.
Si el PDF sigue superando el límite del destinatario, encontrarás los siguientes pasos en la guía El PDF no reduce su tamaño. En cualquier caso, conserva el original hasta que la nueva versión se haya recibido y aceptado.