Logotipo de Bitdoze

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.

Dragos

Actualizado Publicado 25 min de lectura

Cómo unir archivos PDF en la línea de comandos de Linux (pdfunite)

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

bash
sudo apt install poppler-utils

RHEL / Fedora

bash
sudo dnf install poppler-utils

Arch Linux

bash
sudo pacman -S poppler

openSUSE

bash
sudo zypper install poppler-tools

Alpine

bash
sudo apk add poppler-utils

macOS (Homebrew)

bash
brew install poppler

Verificar la instalación

Ejecuta pdfunite --version para confirmar que está instalado. En Ubuntu 24.04 LTS verás algo como:

text
pdfunite version 24.02.0
Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC

Los 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.

bash
pdfunite file1.pdf file2.pdf file3.pdf output.pdf

Esto 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:

bash
pdfunite *.pdf output.pdf

La 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):

bash
pdfunite $(cat files.txt) output.pdf

Enfoque más seguro (maneja nombres de archivo con espacios):

bash
mapfile -t files < files.txt
pdfunite "${files[@]}" output.pdf

El archivo files.txt debe contener una ruta de PDF por línea:

text
report-intro.pdf
report-chapter1.pdf
report-chapter2.pdf
report-appendix.pdf

Verificar la unión

Después de unir, comprueba el número de páginas para confirmar que están todas:

bash
pdfinfo output.pdf | grep "^Pages:"

Compáralo con la suma de los recuentos de páginas individuales:

bash
pdfinfo file1.pdf | grep "^Pages:"
pdfinfo file2.pdf | grep "^Pages:"
pdfinfo output.pdf | grep "^Pages:"   # debería ser igual a la suma

Comprueba también que el archivo no está vacío:

bash
ls -lh output.pdf

Limitaciones 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:

bash
# Debian / Ubuntu
sudo apt install qpdf

# RHEL / Fedora
sudo dnf install qpdf

# Arch Linux
sudo pacman -S qpdf

Unir PDF:

bash
qpdf --empty --pages file1.pdf file2.pdf file3.pdf -- output.pdf

Unir rangos de páginas concretos:

bash
# Páginas 1-5 de file1, todas las páginas de file2
qpdf --empty --pages file1.pdf 1-5 file2.pdf 1-z -- output.pdf

Descifrar y luego unir:

bash
qpdf --decrypt --password=SECRET encrypted.pdf decrypted.pdf
pdfunite decrypted.pdf other.pdf merged.pdf

Ghostscript

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:

bash
# Debian / Ubuntu
sudo apt install ghostscript

# RHEL / Fedora
sudo dnf install ghostscript

# Arch Linux
sudo pacman -S ghostscript

Unir y comprimir en un solo paso:

bash
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
   -dPDFSETTINGS=/ebook \
   -sOutputFile=merged.pdf file1.pdf file2.pdf

Comprimir un PDF existente:

bash
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH \
   -sOutputFile=compressed.pdf merged.pdf

Niveles 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:

bash
# Con pip (cualquier distro)
pip install stapler

# Fedora
sudo dnf install pdf-stapler

Unir PDF:

bash
stapler sel file1.pdf file2.pdf output.pdf

stapler 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:

bash
#!/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:

bash
chmod +x merge-pdfs.sh
./merge-pdfs.sh combined-report.pdf chapter1.pdf chapter2.pdf chapter3.pdf

Para 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:

bash
# 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.pdf

Verificar la unión

Verifica siempre después de unir, sobre todo en scripts:

bash
# 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
fi

Mantener 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.

bash
# Debian / Ubuntu
sudo apt update && sudo apt upgrade poppler-utils

# RHEL / Fedora
sudo dnf upgrade poppler-utils
Automatiza flujos de documentos con n8n

Solución de errores comunes

Permiso denegado

No tienes permiso de lectura o escritura sobre los archivos PDF.

bash
# Comprueba los permisos
ls -l file.pdf

# Solución: da al propietario lectura+escritura
chmod u+rw file.pdf

Si 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.

bash
# 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):

bash
qpdf --check damaged.pdf
qpdf --qdf damaged.pdf repaired.pdf

Con Ghostscript (reescribe el PDF completo):

bash
gs -o repaired.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress damaged.pdf

Con pdftk (si está instalado):

bash
pdftk damaged.pdf output repaired.pdf

Si 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:

bash
which pdfunite
# Sin salida = no instalado

Vuelve 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:

bash
# Comprueba la memoria disponible
free -h

# Monitoriza el uso de swap
swapon --show

Para archivos muy grandes, considera Ghostscript, que usa un enfoque de streaming:

bash
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite \
   -dPDFSETTINGS=/prepress \
   -sOutputFile=merged.pdf large1.pdf large2.pdf

Si 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 Linux

Preguntas frecuentes

¿Puede pdfunite unir PDF protegidos con contraseña?

No. pdfunite no puede procesar PDF cifrados. Descífralos primero con qpdf:

bash
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:

bash
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:

bash
pdfunite intro.pdf chapter1.pdf chapter2.pdf appendix.pdf output.pdf

Si 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.