Cómo unir archivos PDF en la línea de comandos de Linux (pdfunite)
Une archivos PDF en la línea de comandos de Linux con pdfunite de poppler-utils. Cubre la instalación, el uso, las alternativas (qpdf, Ghostscript) y la solución de problemas.
Actualizado Publicado 25 min de lectura

Puedes unir archivos PDF en la línea de comandos de Linux en segundos usando pdfunite del paquete poppler-utils. Es la forma más rápida de combinar PDF cuando trabajas en un terminal, ejecutas scripts por lotes en un servidor sin entorno gráfico o automatizas pipelines de documentos. Esta guía cubre pdfunite en profundidad y luego muestra cuándo recurrir a alternativas como qpdf (conserva marcadores e hipervínculos) y Ghostscript (comprime la salida). Si trabajas con PDF desde el terminal con frecuencia, estos son comandos esenciales de Linux que conviene tener en tu caja de herramientas.
¿Qué es poppler-utils?
Poppler-utils es un conjunto de utilidades de línea de comandos construidas sobre la biblioteca PDF poppler (un fork de xpdf). Viene con la mayoría de las distros de Linux e incluye seis herramientas:
- pdfinfo: muestra los metadatos del PDF (título, autor, número de páginas, estado de cifrado)
- pdftotext: convierte un archivo PDF a texto plano
- pdftohtml: convierte PDF a HTML
- pdfimages: extrae las imágenes incrustadas de un PDF
- pdfseparate: divide un PDF en archivos de una sola página
- pdfunite: une varios archivos PDF en uno solo
Este artículo se centra en pdfunite para unir PDF, y cubre las demás herramientas donde ayudan en un flujo de trabajo de unión (como pdfinfo para la verificación).
Cómo instalar poppler-utils en Linux
Poppler-utils está en los repositorios oficiales de todas las distros principales. Instálalo con tu gestor de paquetes.
Debian / Ubuntu
sudo apt install poppler-utilsRHEL / Fedora
sudo dnf install poppler-utilsArch Linux
sudo pacman -S poppleropenSUSE
sudo zypper install poppler-toolsAlpine
sudo apk add poppler-utilsmacOS (Homebrew)
brew install popplerVerificar la instalación
Ejecuta pdfunite --version para confirmar que está instalado. En Ubuntu 24.04 LTS verás algo como:
pdfunite version 24.02.0
Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLCLos números de versión varían según la distro. Ubuntu 24.04 trae 24.02.0, Debian sid tiene 26.01.0, y la última versión upstream es 26.07.0 (julio de 2026). Cualquiera de ellas funciona bien para unir PDF.
Cómo unir archivos PDF con pdfunite
Sintaxis básica
La sintaxis es simple: primero se listan los PDF de entrada y al final va el nombre del archivo de salida.
pdfunite file1.pdf file2.pdf file3.pdf output.pdfEsto concatena file1.pdf, file2.pdf y file3.pdf en ese orden dentro de output.pdf.
El archivo de salida se sobrescribe sin aviso
pdfunite sobrescribe silenciosamente el archivo de salida si ya existe. No hay ningún aviso de confirmación. Revisa bien el nombre del archivo de salida antes de ejecutar el comando.
Unir con comodines
Puedes usar la expansión de comodines del shell para unir todos los PDF de un directorio:
pdfunite *.pdf output.pdfLa trampa del orden de los comodines
El shell expande * alfabéticamente, no numéricamente. Si tus archivos se llaman page_1.pdf, page_2.pdf, …, page_10.pdf, el orden será page_1.pdf, page_10.pdf, page_2.pdf. Eso está mal.
Solución: usa nombres de archivo con ceros a la izquierda (page_01.pdf, page_02.pdf, …, page_10.pdf) o lista los archivos explícitamente.
Unir desde una lista de archivos
Si tienes un archivo de texto con la lista de los PDF que quieres unir (un nombre de archivo por línea), ten en cuenta que pdfunite no admite leer desde stdin mediante un flag -. Usa sustitución de comandos en su lugar.
Enfoque simple (funciona si los nombres de archivo no tienen espacios):
pdfunite $(cat files.txt) output.pdfEnfoque más seguro (maneja nombres de archivo con espacios):
mapfile -t files < files.txt
pdfunite "${files[@]}" output.pdfEl archivo files.txt debe contener una ruta de PDF por línea:
report-intro.pdf
report-chapter1.pdf
report-chapter2.pdf
report-appendix.pdfVerificar la unión
Después de unir, comprueba el número de páginas para confirmar que están todas:
pdfinfo output.pdf | grep "^Pages:"Compáralo con la suma de los recuentos de páginas individuales:
pdfinfo file1.pdf | grep "^Pages:"
pdfinfo file2.pdf | grep "^Pages:"
pdfinfo output.pdf | grep "^Pages:" # debería ser igual a la sumaComprueba también que el archivo no está vacío:
ls -lh output.pdfLimitaciones de pdfunite (lo que debes saber)
pdfunite es rápido y simple, pero concatena los PDF a nivel de contenido de página. Esto significa:
- Se pierden los hipervínculos. Los enlaces internos del índice y las referencias cruzadas se rompen después de la unión.
- Se eliminan los marcadores/esquemas. Los esquemas del PDF (la navegación lateral en visores como Evince o Acrobat) desaparecen.
- Sin soporte de cifrado. No puedes unir PDF protegidos con contraseña directamente.
- Sin manipulación de páginas. No puedes rotar, reordenar ni extraer páginas concretas.
- Sin compresión. El archivo de salida puede ser más grande de lo esperado.
pdfunite elimina hipervínculos y marcadores
Si tus PDF tienen una tabla de contenidos con enlaces clicables o esquemas/marcadores de PDF, no uses pdfunite. Usa qpdf en su lugar. Los conserva ambos.
Para uniones simples (combinar facturas, páginas escaneadas o informes sin enlaces internos), pdfunite es la herramienta adecuada. Si necesitas que los marcadores o hipervínculos sobrevivan, cambia a qpdf.
Herramientas alternativas para unir PDF en Linux
Cuando pdfunite no es suficiente, estas tres herramientas cubren los huecos.
qpdf
qpdf: conservar hipervínculos y marcadores
qpdf es la mejor alternativa cuando necesitas conservar la estructura del PDF. Maneja el cifrado, los rangos de páginas y mantiene intactos los marcadores e hipervínculos.
Instalación:
# Debian / Ubuntu
sudo apt install qpdf
# RHEL / Fedora
sudo dnf install qpdf
# Arch Linux
sudo pacman -S qpdfUnir PDF:
qpdf --empty --pages file1.pdf file2.pdf file3.pdf -- output.pdfUnir rangos de páginas concretos:
# Páginas 1-5 de file1, todas las páginas de file2
qpdf --empty --pages file1.pdf 1-5 file2.pdf 1-z -- output.pdfDescifrar y luego unir:
qpdf --decrypt --password=SECRET encrypted.pdf decrypted.pdf
pdfunite decrypted.pdf other.pdf merged.pdfGhostscript
Ghostscript: unir y comprimir
Ghostscript es más pesado (~30 MB de instalación) pero hace algo que ninguna otra herramienta ligera hace: comprimir PDF durante o después de la unión. Útil para reducir el tamaño del archivo antes de subirlo o enviarlo por correo.
Instalación:
# Debian / Ubuntu
sudo apt install ghostscript
# RHEL / Fedora
sudo dnf install ghostscript
# Arch Linux
sudo pacman -S ghostscriptUnir y comprimir en un solo paso:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
-dPDFSETTINGS=/ebook \
-sOutputFile=merged.pdf file1.pdf file2.pdfComprimir un PDF existente:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH \
-sOutputFile=compressed.pdf merged.pdfNiveles de calidad de PDFSETTINGS:
| Ajuste | DPI | Caso de uso |
|---|---|---|
/screen |
72 | Archivo más pequeño, solo lectura en pantalla |
/ebook |
150 | Buen equilibrio entre tamaño y calidad |
/printer |
300 | Alta calidad para imprimir |
/prepress |
300 | Conserva el color, archivo más grande |
stapler
stapler: sustituto ligero de pdftk
pdftk se eliminó de los repositorios de Fedora en 2019 y es difícil de instalar en Ubuntu moderno por su dependencia de gcj. stapler es un sustituto basado en Python que hace operaciones a nivel de página.
Instalación:
# Con pip (cualquier distro)
pip install stapler
# Fedora
sudo dnf install pdf-staplerUnir PDF:
stapler sel file1.pdf file2.pdf output.pdfstapler también admite selección de páginas, división y otras operaciones al estilo de pdftk. Si necesitas una interfaz compatible con pdftk sin los quebraderos de cabeza de la instalación, stapler es la herramienta a usar.
Tabla comparativa de herramientas
| Característica | pdfunite | qpdf | Ghostscript | stapler |
|---|---|---|---|---|
| Unión simple | ✅ La mejor | ✅ Buena | ✅ Funciona | ✅ Buena |
| Conserva hipervínculos | ❌ | ✅ | ❌ | ✅ |
| Conserva marcadores | ❌ | ✅ | ❌ | ✅ |
| Maneja PDF cifrados | ❌ | ✅ La mejor | Limitada | Limitada |
| Comprime la salida | ❌ | Limitada | ✅ La mejor | ❌ |
| Operaciones por página | ❌ | ✅ | Limitada | ✅ La mejor |
| Velocidad | Muy rápida | Rápida | Más lenta | Rápida |
| Tamaño del paquete | menos de 1 MB | ~3 MB | ~30 MB | ~14 MB |
| En repos de distros modernas | ✅ | ✅ | ✅ | ❌ (pdftk eliminado) |
¿Qué herramienta debo usar?
Empieza con pdfunite para uniones simples. Es la más rápida y ligera. Cambia a qpdf cuando importen los marcadores, los hipervínculos o los PDF cifrados. Usa Ghostscript cuando necesites comprimir la salida. Usa stapler cuando necesites manipulación de páginas al estilo pdftk.
Flujos de trabajo reales y automatización
Script de unión por lotes con validación
Este script valida que todos los archivos de entrada existan, los une e informa del número de páginas:
#!/bin/bash
set -euo pipefail
OUTPUT="${1:-merged.pdf}"
shift
# Valida que todas las entradas existan
for f in "$@"; do
[[ -f "$f" ]] || { echo "ERROR: File not found: $f" >&2; exit 1; }
done
pdfunite "$@" "$OUTPUT"
echo "Created: $OUTPUT ($(pdfinfo "$OUTPUT" | grep "^Pages:" | awk '{print $2}') pages)"Uso:
chmod +x merge-pdfs.sh
./merge-pdfs.sh combined-report.pdf chapter1.pdf chapter2.pdf chapter3.pdfPara flujos de trabajo de automatización más avanzados, puedes integrar el procesamiento de PDF en herramientas como n8n para pipelines de procesamiento de documentos.
Manejar PDF cifrados
pdfunite no puede procesar PDF protegidos con contraseña. Descífralos primero con qpdf:
# Descifrar
qpdf --decrypt --password=THEPASS protected.pdf unprotected.pdf
# Luego une como siempre
pdfunite unprotected.pdf other.pdf merged.pdf
# Elimina el archivo descifrado
rm unprotected.pdfVerificar la unión
Verifica siempre después de unir, sobre todo en scripts:
# Comprueba que el total de páginas coincida con la suma de las entradas
EXPECTED=$(pdfinfo file1.pdf | grep "^Pages:" | awk '{sum += $2} END {print sum}')
EXPECTED=$((EXPECTED + $(pdfinfo file2.pdf | grep "^Pages:" | awk '{print $2}')))
ACTUAL=$(pdfinfo output.pdf | grep "^Pages:" | awk '{print $2}')
if [[ "$EXPECTED" -eq "$ACTUAL" ]]; then
echo "OK: $ACTUAL pages"
else
echo "MISMATCH: expected $EXPECTED, got $ACTUAL" >&2
exit 1
fiMantener poppler-utils actualizado (seguridad)
Mantén poppler-utils actualizado
Poppler procesa archivos PDF arbitrarios y ha tenido múltiples CVE (CVE-2026-10118, CVE-2025-52885, CVE-2025-43718 y otros). Si unes PDF de fuentes no confiables, mantén el paquete actualizado y considera ejecutar herramientas CLI en entornos aislados.
# Debian / Ubuntu
sudo apt update && sudo apt upgrade poppler-utils
# RHEL / Fedora
sudo dnf upgrade poppler-utilsSolución de errores comunes
Permiso denegado
No tienes permiso de lectura o escritura sobre los archivos PDF.
# Comprueba los permisos
ls -l file.pdf
# Solución: da al propietario lectura+escritura
chmod u+rw file.pdfSi los archivos pertenecen a otro usuario, puede que necesites sudo o cambiar el propietario con chown.
Archivo no encontrado
El archivo no existe o el nombre está mal escrito.
# Comprueba tu directorio de trabajo
pwd
# Lista los PDF del directorio actual
ls *.pdf
# Usa el autocompletado con tabulador para evitar erratas
pdfunite file1<TAB>Si ejecutas el comando dentro de un script, usa rutas absolutas o verifica primero el directorio de trabajo.
Archivo PDF no válido o dañado
El PDF está corrupto. A diferencia de lo que afirman algunas guías, pdfinfo no tiene un flag -repair. Usa una de estas herramientas para intentar la reparación:
Con qpdf (reconstruye la estructura del PDF):
qpdf --check damaged.pdf
qpdf --qdf damaged.pdf repaired.pdfCon Ghostscript (reescribe el PDF completo):
gs -o repaired.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress damaged.pdfCon pdftk (si está instalado):
pdftk damaged.pdf output repaired.pdfSi ninguna funciona, el archivo probablemente no tenga reparación. Compara los tamaños de archivo con la guía de comparación de carpetas en la línea de comandos si tienes una copia de seguridad con la que cotejarlo.
Comando no encontrado: pdfunite
poppler-utils no está instalado. Verifícalo:
which pdfunite
# Sin salida = no instaladoVuelve a la sección de instalación e instálalo para tu distro.
Problemas de memoria con PDF grandes
pdfunite carga los PDF completos en memoria. Si unes archivos de cientos de MB cada uno, puedes sufrir presión de memoria. Comprueba los recursos de tu sistema:
# Comprueba la memoria disponible
free -h
# Monitoriza el uso de swap
swapon --showPara archivos muy grandes, considera Ghostscript, que usa un enfoque de streaming:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-sOutputFile=merged.pdf large1.pdf large2.pdfSi necesitas monitorizar los recursos del sistema Linux durante operaciones por lotes, configura alertas para detectar a tiempo las condiciones de OOM.
Conclusión
Para unir archivos PDF en la línea de comandos de Linux, la herramienta que elijas depende de lo que necesites:
- pdfunite: opción por defecto para uniones simples. Rápida, diminuta, ya instalada en la mayoría de los sistemas.
- qpdf: úsala cuando haya marcadores, hipervínculos o PDF cifrados de por medio.
- Ghostscript: úsala cuando necesites comprimir la salida o unir archivos muy grandes.
- stapler: úsala cuando necesites manipulación de páginas al estilo pdftk.
Las herramientas hermanas de poppler son útiles en un flujo de trabajo de unión: pdfinfo para comprobar el número de páginas y el estado del cifrado antes de unir, pdfseparate para dividir un PDF (la operación inversa) y pdftotext para extraer texto para la verificación.
Si administras un VPS o un servidor sin entorno gráfico y procesas PDF con regularidad, mantén poppler-utils actualizado y considera securizar tu servidor Linux si maneja archivos de fuentes externas.
Explora más comandos de LinuxPreguntas frecuentes
¿Puede pdfunite unir PDF protegidos con contraseña?
No. pdfunite no puede procesar PDF cifrados. Descífralos primero con qpdf:
qpdf --decrypt --password=THEPASS protected.pdf unprotected.pdf
pdfunite unprotected.pdf other.pdf merged.pdf¿Conserva pdfunite los marcadores e hipervínculos?
No. pdfunite concatena el contenido de las páginas a bajo nivel, lo que elimina los marcadores (esquemas) y rompe los hipervínculos internos. Si necesitas conservarlos, usa qpdf en su lugar:
qpdf --empty --pages file1.pdf file2.pdf -- output.pdf¿Cuál es la diferencia entre pdfunite y qpdf?
pdfunite es más simple y ligero (menos de 1 MB, el más rápido). Es genial para uniones básicas en las que no te importan los marcadores ni los hipervínculos. qpdf es más pesado (~3 MB) pero conserva la estructura del PDF, maneja archivos cifrados, admite rangos de páginas y puede descifrar PDF. Para la mayoría, lo mejor es empezar con pdfunite y cambiar a qpdf cuando te topes con una limitación.
¿Cómo uno PDF en un orden específico?
Lista los archivos explícitamente en el orden que quieras:
pdfunite intro.pdf chapter1.pdf chapter2.pdf appendix.pdf output.pdfSi usas comodines, la expansión del shell es alfabética: page_1.pdf va antes que page_10.pdf, no que page_2.pdf. Usa nombres con ceros a la izquierda (page_01.pdf, page_02.pdf, …, page_10.pdf) para obtener el orden numérico correcto.


