Mac OS X: cómo fusionar archivos pdf en un directorio de acuerdo con sus nombres de archivo

30

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 Vista previa / Automatizador (si está disponible) porque en comparación con software de terceros como Adobe Acrobat o PDFpen, la fusión de archivos PDF a menudo (dependiendo de los documentos de origen) da como resultado un aumento significativo en el tamaño del archivo (ver, por ejemplo, ¿Qué causa que el tamaño del archivo PDF aumente al guardar en la Vista previa? )

Tiene alguna recomendación? ¡Gracias!

lejonet
fuente
La combinación de archivos PDF siempre aumentará el tamaño del archivo, ¿cuál es exactamente su problema con eso?
nohillside
1
@patrix Estoy hablando de cientos de archivos para fusionar. Como se vincula anteriormente, puede haber un aumento significativo en el tamaño del archivo con diferentes herramientas incluidas en Mac OS X. ¿Por qué debería querer un archivo de texto combinado con un aumento en el tamaño de a veces varios cientos por ciento ?
lejonet
2
@patrix, lejone8 ​​quiere tener una fusión automática de archivos PDF pero con una relación 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 los productos de terceros. No sé por qué eliminas mis comentarios, pero que así sea.
Ruskes
1
No entiendo la solicitud de automatización. Es muy simple y rápido organizar (ordenar) los archivos por nombre, luego seleccionar todos en la categoría deseada y combinarlos una vez que haga clic en cualquiera de los programas disponibles, como los que se responden aquí, u otros. El tamaño del archivo resultante dependerá del tipo y el contenido de los archivos PDF, por lo que 1 + 1 = 2 no es posible. El lejonet8 parece estar colgado del argumento de por qué los programas de Apple crean archivos pdf más grandes que otros. Buena suerte en responder eso.
Ruskes
2
¿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 para proponer soluciones a su problema)? ¿Qué debería 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 hay más detrás de su pregunta de lo que sabemos en este momento.
nohillside

Respuestas:

25

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 de la página web oficial de pdftk .

Sintaxis de muestra:

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

y así. Puede usar scripts de shell para hacer esto completamente automático si lo desea (pero tendrá que dedicar un poco de tiempo a aprender a escribir scripts 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
DW
fuente
Gracias por su comentario, pero no veo dónde hay un flujo de trabajo para mis necesidades (cientos de archivos con nombres similares, combinados de acuerdo con estos nombres).
lejonet
1
@ lejonet8, ¡ahí es exactamente donde brillan las herramientas de línea de comandos! Edité 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 relaciona más con cómo escribir scripts de shell.
DW
Gracias por su respuesta. Desafortunadamente al ejecutarlo en mis archivos, resultó en este mensaje de error: Error: Texto inesperado al final del rango de página, aquí: 1000.pdf
lejonet
1
@ lejonet8 Quizás podría explicar un poco más sobre sus requisitos de automatización en la pregunta . ¿Estás buscando cosas como "Acciones de carpeta" o algo así? ¿Qué desencadenaría el proceso de concatenación en primer lugar?
nohillside
3
@ lejonet8, es posible que tengas que experimentar un poco para ver cómo hacer que pdftk funcione para ti. Un mensaje de error, sin contexto, desafortunadamente no es suficiente para diagnosticar el problema. Intenta concatenar algunos pares de archivos. Experimentar. Vea si puede diagnosticar cuándo pdftk funciona / no funciona y la causa. Lee el tutorial. Luego, publique una pregunta sobre cómo hacer que pdftk funcione en un sitio adecuado de Stack Exchange 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.
DW
52

Hay un script de Python oculto en Automator.app que se une a 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
akuhn
fuente
2
Gracias por su respuesta. No puedo comentar sobre los antecedentes técnicos (puede haber una diferencia en la fusión en Automator y Vista previa). Dependiendo de los archivos de origen, puede haber un aumento significativo en el tamaño del archivo también. 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.
lejonet
Lo siento, no puedo ayudar con eso.
akuhn
44
Agregué este comando como un alias en mi ~/.bash_profilearchivo de esta alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"manera : así que puedo cdingresar a un directorio que contiene archivos PDF y ejecutarlo catpdf.
Stewart Macdonald
2
¡Votación por el uso ingenioso del script Python oculto en una aplicación! Sin embargo, decidí usar pdftk para una solución más robusta.
Blairg23
1
@lejonet La experiencia 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).
hans_meine
8

Puede usar pdfunitedistribuido con poppler. Puede 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.

Flimm
fuente
0

¡pdftk ya no funciona en El Capitan! (OS X 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 Automator anterior, ya que utiliza una biblioteca PDF personalizada.

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

antoine
fuente