Tengo 1000 grupos de 5 archivos pdf que necesito combinar/fusionar. Conozco el comando "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" y he creado las 1000 versiones diferentes del comando que necesito. Actualmente estoy copiando y pegando cada línea por separado en Terminal para ejecutarlo. ¿Hay alguna forma de poner las 1000 líneas en un script y ejecutar el script? Gracias
Respuestas
¿Demasiados anuncios?La funcionalidad para combinar PDF está incorporada en Preview.app, y puede ser un enfoque útil para tratar con un pequeño número de documentos.
Las versiones recientes de macOS también tienen un script de Python que automatiza este proceso para varios archivos PDF. Este script se encuentra en:
/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py
Puedes ejecutar el script directamente en Terminal, pero puede ser útil agregar un alias en tu ~/.bash_profile
:
alias combinepdfs='/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py'
¡En lugar de escribir la larga ubicación del script cada vez, ahora puedes ejecutar este script utilizando un solo comando! (¡No olvides recargar después de hacer cambios: source ~/.bash_profile
.)
Supongamos que tengo un directorio de apuntes de clase ~/Documents/Lectures
que contiene los siguientes archivos:
lec2.pdf lec3.pdf lec4.pdf lec5.pdf lec6.pdf lec7.pdf lec8.pdf lec9.pdf lec10.pdf lec11.pdf lec12.pdf lec13.pdf lec14.pdf lec15.pdf lec16.pdf lec17.pdf
Puedo combinar estos archivos PDF utilizando el siguiente comando:
$ combinepdfs -o lec-combined.pdf lec{2..17}.pdf
El patrón de uso general se muestra en el comando de ayuda:
$ combinepdfs --help
Usage: join [--output ] [--shuffle] [--verbose]
También hay una característica adicional para mezclar páginas:
--shuffle
# Toma una página de cada archivo PDF de entrada de forma alternada antes de tomar otra de cada archivo.
# Si esta opción no está especificada, entonces todas las páginas de un archivo PDF se anexan
# al archivo PDF de salida antes de que se procese el siguiente archivo PDF de entrada.
Para macOS Sonoma, utiliza …/Contents/MacOS/join
ya que …/Contents/Resources/join.py
ya no se proporciona.
alias combine-pdf-pages='/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/MacOS/join'
combine-pdf-pages -o output.pdf in001.pdf in002.pdf
También, en la WWDC 2021, Apple anunció una migración de automator
a shortcuts
en macOS.
“Este es solo el comienzo de una transición de varios años. Automator seguirá siendo compatible, y puedes importar flujos de trabajo de Automator para comenzar uno con Shortcuts,” dijo Federighi.
Usar flujos de trabajo de automator con la app Shortcuts en Mac
Puedes importar flujos de trabajo de Automator en la aplicación Shortcuts en tu Mac. Shortcuts puede convertir la mayoría de los flujos de trabajo de Automator en accesos directos que realizan las mismas funciones, eventos y automatizaciones: simplemente arrastra un archivo de flujo de trabajo a Shortcuts y la conversión se realiza automáticamente.
Ejecutar accesos directos desde la línea de comandos
man shortcuts
# NAME
# shortcuts – Utilidad de línea de comandos para ejecutar accesos directos.
#
# SYNOPSIS
# shortcuts run shortcut-name-or-identifier [--input-path input-path ...]
# [--output-path output-path ...] [--output-type output-type]
# … más …
#
# DESCRIPTION
# El comando shortcuts se utiliza para ejecutar, listar, ver
# o firmar accesos directos. Para crear o editar un acceso directo,
# utiliza la aplicación Shortcuts.
#
# OPTIONS
# shortcuts run
# shortcut-name-or-identifier
# … más …
0 votos
¿Puedes agregar algunos ejemplos de tu código a la pregunta?
0 votos
También, ¿cómo se pueden identificar los cinco archivos que se van a fusionar? ¿Tienen nombres específicos, están en un directorio específico o algo más?
0 votos
@patrix Todos los archivos están en un solo directorio, tienen nombres específicos y un nombre de archivo de combinación único, de hecho, hay más de 5 archivos como verás en las líneas a continuación.
0 votos
@patrix "/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o 71290-Leung-HeiTung-Bernice_5-2-2017.pdf Leung-HeiTung-Bernice_5B-aaY5B-EDITED.pdf Leung-HeiTung-Bernice_5B-ART5BFINAL.pdf Leung-HeiTung-Bernice_5B-CE5Bfinal.pdf Leung-HeiTung-Bernice_5B-DRY5B-FINAL.pdf Leung-HeiTung-Bernice_5B-FRYR5BFINAL.pdf Leung-HeiTung-Bernice_5B-LIB5B.pdf Leung-HeiTung-Bernice_5B-MUY5BEdited2017.pdf Leung-HeiTung-Bernice_5B-PE5BFinal.pdf No hay suficientes caracteres para agregar otra línea, pero todas tienen el mismo formato.
0 votos
Por favor, edite su pregunta para incluir esta información, es demasiado difícil de leer como un comentario. Además, ¿cómo difieren los nombres de los que pertenecen juntos de los nombres que no lo hacen? Cualquier solución programática deberá seguir algunas reglas para combinar los archivos correctos.
0 votos
@patrix Tenemos un malentendido. Los archivos son informes escolares, utilizando una hoja de cálculo y algunos buscadores, concatenar y un poco de vba ya he ordenado y producido cada línea de código. Copiar y pegar la larga línea anterior en Terminal produce el archivo correcto. Lo que quiero hacer es no tener que copiar y pegar cada línea por separado, sino poner todas las líneas en un solo archivo y ejecutarlo. Entonces si simplifico la larga línea anterior a "Join.pf" -o mergefile1 archivo1 archivo2 archivo3 etc. Quiero añadirlo y las siguientes 999 líneas como esta a un script para ejecutar en Terminal. No sé cómo.
0 votos
No se menciona una hoja de cálculo o algo similar en tu pregunta, ¿quizás podrías añadir más detalles al respecto?
0 votos
Y básicamente, probablemente solo puedas copiar/pegar todas las líneas a la vez para que Terminal las ejecute.
0 votos
Gracias @patrix, he estado copiando y pegando y funciona bien.