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 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 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 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 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 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 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
pdfunitesobrescribe su último argumento. Esa posición es siempre la salida.pdfunite part1.pdf part2.pdfsin un tercer nombre destruyepart2.pdf: aquí no existe el convenio de "el último archivo también es fuente".pdfseparatenunca junta. Incluso con-fy-lacabas con un montón de archivos de una página. Volver a unirlos es tarea depdfuniteo de ghostscript.- Ninguna de las dos abre un PDF cifrado. Quita la contraseña primero (
qpdf --decryptdonde 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
- Redimensionar imágenes por lotes
- Partir un archivo grande y volver a unirlo
- Convertir y comprimir vídeo con ffmpeg
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.