CLI AI

Unir y dividir PDFs desde la línea de comandos

2026-08-13

pdfunite a.pdf b.pdf out.pdf junta documentos y pdfseparate in.pdf page-%d.pdf desarma uno. Ambos vienen de poppler-utils y trabajan rápido y sin pérdida. Lo que no saben hacer —extraer un rango de páginas como un único documento, o comprimir— es tarea de ghostscript, y ese reparto de trabajo es todo el artículo.

1. Cuántas páginas tiene

clai
$ clai cuántas páginas tiene merged.pdf→ pdfinfo merged.pdf | grep '^Pages'Pages:           4

pdfinfo imprime un par de docenas de líneas de metadatos y normalmente quieres una. Sirve además como comprobación rápida después de cada operación de abajo.

2. Juntar varios archivos

clai
$ clai une invoice.pdf y contract.pdf en un solo documento→ pdfunite invoice.pdf contract.pdf merged.pdf

El último argumento es siempre el resultado; todo lo anterior son fuentes, en el orden en que aparecerán. El comando no imprime nada: comprueba con pdfinfo.

3. Partirlo en páginas sueltas

clai
$ clai divide merged.pdf en un archivo por página→ pdfseparate merged.pdf page-%d.pdfpage-1.pdfpage-2.pdfpage-3.pdfpage-4.pdf

El %d es obligatorio: ahí va el número de página. El listado de arriba viene de ls -1; pdfseparate en sí no dice nada.

4. Extraer un rango de páginas

clai
$ clai saca las páginas de la 2 a la 3→ pdfseparate -f 2 -l 3 merged.pdf slice-%d.pdfslice-2.pdfslice-3.pdf

-f es la primera página y -l la última. Fíjate en lo que obtuviste: dos archivos, no un documento de dos páginas, y la numeración conserva los números originales.

5. Un rango como un solo documento

clai
$ clai extrae las páginas 2 a 3 en un único documento→ gs -q -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=3 -sOutputFile=pages-2-3.pdf merged.pdf

poppler no tiene un comando para esto, así que entra ghostscript. Verificado: pdfinfo pages-2-3.pdf informa Pages: 2. Sin gs, el camino es pdfseparate seguido de pdfunite slice-2.pdf slice-3.pdf range.pdf, que da las mismas dos páginas.

6. Reducir el tamaño del archivo

clai
$ clai comprime el pdf para que entre en un correo→ gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -sOutputFile=small.pdf merged.pdf

Verificado con el archivo de prueba: 84991 bytes antes, 31876 después, casi un tercio. /ebook es el perfil intermedio; /screen aprieta más y se nota en las imágenes, /prepress cuida la calidad. El texto no sufre en ningún caso: lo que se comprime son las imágenes rasterizadas de dentro.

Gotchas

  • pdfunite sobrescribe su último argumento. Esa posición es siempre la salida. pdfunite part1.pdf part2.pdf sin un tercer nombre destruye part2.pdf: aquí no existe el convenio de "el último archivo también es fuente".
  • pdfseparate nunca junta. Incluso con -f y -l acabas con un montón de archivos de una página. Volver a unirlos es tarea de pdfunite o de ghostscript.
  • Ninguna de las dos abre un PDF cifrado. Quita la contraseña primero (qpdf --decrypt donde esté disponible); si no, ambas se niegan a leer el archivo.

Related questions

¿Cómo giro páginas? Ghostscript puede reeditar el archivo con -dAutoRotatePages=/None, pero girar una página concreta es mucho más simple en qpdf.

¿Cómo saco el texto? pdftotext file.pdf - imprime el texto en el terminal. Para escaneos sin capa de texto necesitas OCR.

¿Cómo convierto las páginas en imágenes? pdftoppm -png -r 150 file.pdf page escribe page-1.png, page-2.png y demás a 150 ppp.

See also

CliAI sabe cuál de las dos cadenas de herramientas hace el trabajo que describiste y muestra el comando antes de ejecutarlo. Instálalo en una línea.