1 votos

Ejecutar un determinado script de Python como Servicio

Tengo en marcha un script de Python 3 que superpondrá un determinado archivo PDF transparente sobre otro con el fin de ponerle una marca de agua.

Sin embargo, copiar y pegar la ubicación del archivo de cada PDF en el script cada vez que quiero ponerle una marca de agua a algo es un pequeño dolor de cabeza. El conjunto no es muy flexible a pesar de su gran potencia.

from pdfrw import PdfReader, PdfWriter, PageMerge

ipdf = PdfReader("/users/me/Desktop/meetingminutes.pdf")
wpdf = PdfReader("/users/me/Desktop/private.pdf")

wmark = PageMerge().add(wpdf.pages[0])[0]

for page in ipdf.pages:
    PageMerge(page).add(wmark).render()

PdfWriter().write('/users/me/Desktop/meetingminutes.pdf', ipdf)

Lo ideal sería poder hacer clic con el botón derecho del ratón en un archivo PDF determinado en Finder y aplicarle la marca de agua script como servicio.

Ya he trasteado un poco pero lo máximo que he podido averiguar por mi cuenta es que necesito ejecutar el script tal cual (ahora mismo) puedo hacer una App de Automator con el droplet "Ejecutar AppleScript" como primer paso.

on run {input, parameters}
    do shell script "/usr/local/bin/python3 /users/me/Desktop/script.py

    return input
end run

Sería maravilloso poder ampliarlo para que funcione en cualquier PDF. La imagen real de la "marca de agua" en PDF estaría en una ubicación fija en el disco duro y los archivos en los que se aplica el servicio no serían renombrados o movidos/copiados en otro lugar (idealmente).

0 votos

¿Ha intentado leer Este puesto en SO? A continuación, integrar su script, y pedir la entrada al principio de la Automator script, así como lo que el archivo de salida debe ser.

0 votos

He intentado usar (por ejemplo) "inFile = sys.argv[1]" etc en mi script pero siempre obtengo un error "IndexError: list index out of range".

0 votos

El manejador Applescript que has pegado aquí está incompleto.

1voto

benwiggy Puntos 8

En Automator, utilice la acción "Ejecutar Shell script". Normalmente, el valor de la lista desplegable del shell sería "/usr/bin/Python", para utilizar el Python 2.7 incorporado. ¡Sin embargo, si selecciona un shell unix, pero se asegura de que su script contenga "#! /usr/bin/ env Python", o una ruta explícita a su instalación de python3, entonces debería funcionar.

Si selecciona la otra lista desplegable "Pasar entrada" a "como argumentos", entonces puede obtener los nombres de archivo de los elementos seleccionados desde sys.argv().

Ten en cuenta que Automator ya viene con una acción de marca de agua que te permite poner un PDF encima de otro. (También es un script de Python</strkeep><strkeep>, si se profundiza lo suficiente en /System/Library/Automator/)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X