Mac OS X: cómo fusionar archivos pdf en un directorio según sus nombres de archivo

Quiero fusionar varios cientos de archivos pdf en un directorio automáticamente de acuerdo con sus nombres de archivo.

P.ej

Los archivos 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf deben fusionarse en 1000.pdf

y

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf en 2000.pdf .

No quiero usar soluciones basadas en Preview/Automator (si está disponible) porque, en comparación con software de terceros como Adobe Acrobat o PDFpen, la combinación de archivos PDF a menudo (dependiendo de los documentos de origen) da como resultado un aumento significativo en el tamaño del archivo (consulte, por ejemplo, ¿Qué causa que el tamaño del archivo PDF aumente cuando se guarda en Vista previa? )

Tiene alguna recomendación? ¡Gracias!

La combinación de archivos PDF siempre aumentará el tamaño del archivo, ¿cuál es exactamente su problema con eso?
@patrix Estoy hablando de cientos de archivos para fusionar. Como se vinculó anteriormente, puede haber un aumento significativo en el tamaño del archivo con diferentes herramientas incluidas en Mac OS X. ¿Por qué debo querer un archivo de texto fusionado con un aumento en el tamaño a veces de varios cientos por ciento ?
Si fusiona 10 archivos con 1 MB cada uno, no me sorprende demasiado si el archivo resultante es de 10 MB. ¿Qué más debería pasar aquí?
@patrix, lejone8 ​​quiere tener una combinación automática de archivos PDF pero en una proporción de 1+1=2, ¿no con 1+1=5? o más en tamaño de archivo. Además, lejonet8 señala claramente que el uso de productos Apple no es aceptable debido a su bajo rendimiento en comparación con productos de terceros. No sé por qué borras mis comentarios, pero que así sea.
@Buscar웃 Eso es lo que estoy tratando de averiguar. El artículo vinculado está relacionado con 10.5, podría ayudar si el autor de la pregunta pudiera citar ejemplos de tamaño específicos para su escenario.
No entiendo la solicitud de Automatización. Es muy simple y rápido organizar (clasificar) archivos por nombre, luego seleccionar todos en la categoría deseada y hacer la combinación una vez que haga clic en cualquiera de los programas disponibles como responde aquí u otros. El tamaño del archivo resultante dependerá del tipo y contenido de los archivos PDF, por lo que 1+1=2 no es posible. El lejonet8 parece estar obsesionado con el argumento de por qué los programas de Apple crean archivos pdf más grandes que otros. Buena suerte en responder a eso.
@patrix Gracias por tu comentario. Cuando combino 10 archivos con 1 MB cada uno, no obtengo un documento de 10 MB, sino a veces un documento de 30 o 40 MB, según los archivos de origen (lo dije varias veces antes). Puede probar esto fácilmente, fusionar algunos archivos con Preview o Automator y, a menudo, obtendrá resultados inflados mientras que la fusión en software de terceros no tiene efectos secundarios comparables. Todo lo que quiero hacer es automatizar la fusión de acuerdo con los nombres de los archivos utilizando un software de terceros adecuado.
@Buscar웃 No hay mucha automatización en su solución ("muy simple"). No quiero seleccionar archivos manualmente, ya lo hice antes con PDFpen Pro y Adobe Acrobat (con un tamaño de archivo resultante razonable), pero lleva mucho tiempo.
¿Puede editar la pregunta para describir con más detalles qué significa "automatizado" para usted (parece significar cosas diferentes para las personas que se tomaron el tiempo de proponer soluciones para su problema)? ¿Qué debe desencadenar la fusión de los documentos? ¿Qué patrones deben usarse para encontrar archivos coincidentes? Especialmente, la respuesta de DW parece estar altamente automatizada a primera vista, pero tal vez haya más detrás de su pregunta de lo que sabemos en este momento.

Respuestas (4)

Prueba pdftk . Es un software de línea de comandos que puede unir archivos PDF (y hacer muchas otras cosas también, pero eso no es relevante aquí). Puede descargarlo desde la página web oficial de pdftk .

Ejemplo de sintaxis:

pdftk old1.pdf old2.pdf old3.pdf cat output new.pdf

creará el archivo new.pdfque contiene la concatenación de los archivos old1.pdf, old2.pdf, old3.pdf.

Para resolver su problema, con sus nombres de archivo de ejemplo:

pdftk 1000.*.pdf cat 1000.pdf
pdftk 2000.*.pdf cat 2000.pdf

etcétera. Puede usar secuencias de comandos de shell para que esto sea completamente automático si lo desea (pero tendrá que pasar un poco de tiempo aprendiendo cómo escribir secuencias de comandos de shell).


Suponiendo que todos los archivos se llamen 1000.x, 2000.x, etc., un script de shell podría verse así

#!/bin/bash

for n in {1..9}; do
    if [[ -r ${n}000.1.pdf ]]; then
        rm -f ${n}000.pdf
        pdftk ${n}000.*.pdf cat ${n}000.pdf && mv ${n}000.*.pdf ~/.Trash/
    fi
done
Gracias por tu comentario, pero no veo dónde hay un flujo de trabajo para mis necesidades (cientos de archivos con nombres similares, fusionados según estos nombres).
@ lejonet8, ¡ahí es exactamente donde brillan las herramientas de línea de comandos! He editado mi respuesta para darle un ejemplo de cómo hacerlo. La elaboración de más detalles probablemente esté más allá del alcance de esta pregunta y se relacione más con cómo escribir scripts de shell.
Gracias por su respuesta. Desafortunadamente, ejecutarlo en mis archivos resultó en este mensaje de error: Error: texto inesperado al final del rango de página, aquí: 1000.pdf
@ lejonet8 Tal vez podría elaborar un poco más sobre sus requisitos de automatización en la pregunta . ¿Está buscando cosas como "Acciones de carpeta" o algo así? ¿Qué desencadenaría el proceso de concatenación en primer lugar?
@patrix Gracias por tu comentario. No importa si selecciono todos los archivos y una secuencia de comandos los fusiona de acuerdo con los nombres de los archivos, si ejecuto una secuencia de comandos en un directorio o alguna aplicación GUI lo hace después de agregar todos los archivos o elegir el directorio.
@ lejonet8, es posible que tenga que experimentar un poco para ver cómo hacer que pdftk funcione para usted. Lamentablemente, un mensaje de error, sin contexto, no es suficiente para diagnosticar el problema. Intente concatenar algunos pares de archivos. Experimento. Vea si puede diagnosticar cuándo pdftk funciona o no funciona y la causa. Lee el tutorial. Luego, publique una pregunta sobre cómo hacer que pdftk funcione en un sitio de Stack Exchange adecuado u otro sitio de preguntas y respuestas. FWIW, pdftk ha sido muy confiable para mí, trabajando con una amplia variedad de archivos pdf generados por muchos programas diferentes. Por supuesto, su experiencia puede variar.
Desafortunadamente, pdftkya no se basa en 10.10 "El Capitán". Consulte trac.macports.org/ticket/48528

Hay un script de Python oculto en Automator.app que une archivos .PDF

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --help
Usage: join [--output <file>] [--shuffle] [--verbose]

Ejemplo de uso:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf
Gracias por su respuesta. No puedo comentar sobre los antecedentes técnicos (puede haber una diferencia en la fusión en Automator y Preview). Dependiendo de los archivos de origen, también puede haber un aumento significativo en el tamaño del archivo. Acabo de probarlo nuevamente y cuatro archivos con un tamaño de 12 mb en total se unieron a un documento de 32 mb. Esto es inaceptable.
Lo siento, no puedo ayudar con eso.
Agregué este comando como un alias en mi ~/.bash_profilearchivo de esta manera: alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"así que puedo cdingresar a un directorio que contiene archivos PDF y ejecutar catpdf.
¡Votación positiva por el uso ingenioso del script de Python oculto en una aplicación! Sin embargo, decidí usar pdftk para una solución más robusta.
@lejonet La base técnica es que ambos usan los mismos marcos (Quartz.CoreGraphics en 10.11), como habrás adivinado. Esto se puede ver desde las primeras líneas del script `join.py' (declaraciones de importación).
zsh: no existe tal archivo o directorio: /System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py Chip: Apple M1, Nombre del modelo: MacBook Pro, OS: macos ventura (13)

Puede usar pdfunitedistribuido con poppler. Puedes instalar popplercon Homebrew:

brew install poppler

Y ahora úsalo:

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

popplertambién viene con estos otros comandos: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, además de pdfunite.

¡pdftk ya no funciona en El Capitán! (OSX 10.10)

Una alternativa es pagemaster de PDFTron. La sintaxis sería:

pagemaster -m *.pdf -o output.pdf

No tiene el problema de aumento de tamaño de archivo de la solución de Automator anterior, ya que utiliza una biblioteca de PDF personalizada.

Nota: esta no es una herramienta gratuita. La versión de demostración agrega una fina marca de agua en cada página.