Esegui un particolare script Python come servizio

1

Ho uno script in Python 3 che sovrapporrà un particolare file PDF trasparente su un altro allo scopo di watermarking.

Copiare e incollare la posizione del file di ogni PDF nello script ogni volta che voglio filigrane qualcosa è un po 'un mal di testa però. Il tutto non è molto flessibile nonostante la sua grande potenza.

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)

Preferirei essere in grado di fare clic con il pulsante destro su un determinato file PDF in Finder e applicare lo script di filigrana come servizio.

Ho già fatto un po 'di bricolage ma il massimo che ho potuto capire da solo è che ho bisogno di eseguire lo script così com'è (al momento) posso creare un'app di Automator con il "Goccia AppleScript" come primo passaggio.

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

    return input
end run

Sarebbe meraviglioso ridimensionarlo per funzionare su qualsiasi dato PDF. L'immagine PDF della "filigrana" effettiva si troverà in una posizione fissa sul disco rigido e i file su cui viene applicato il servizio non verranno rinominati o spostati / copiati altrove (idealmente).

    
posta William Lombard 11.09.2017 - 17:47
fonte

1 risposta

1

In Automator, usa l'azione "Esegui script shell". Normalmente, si imposta il valore dell'elenco a discesa della shell su "/ usr / bin / python", per usare il python integrato 2.7. Tuttavia, se selezioni una shell Unix, ma assicurati che il tuo script contenga "#! / Usr / bin / env python" o un percorso esplicito per l'installazione di python3, allora dovrebbe funzionare.

Se selezioni l'altro elenco a discesa "Passa input" su "come argomenti", puoi ottenere il nome file degli elementi selezionati da sys.argv ().

Si noti che Automator è già dotato di un'azione filigrana che consente di posizionare un PDF su un altro. (È anche uno script python, se si scava abbastanza in profondità in / System / Library / Automator /)

    
risposta data 04.01.2019 - 13:37
fonte

Leggi altre domande sui tag