1 votes

Exécuter un script Python particulier en tant que Service

J'ai un script Python 3 qui va superposer un fichier PDF transparent particulier sur un autre dans le but de créer un filigrane.

Copier et coller l'emplacement du fichier de chaque PDF dans le script chaque fois que je veux filigraner quelque chose est un peu un casse-tête cependant. L'ensemble n'est pas très flexible malgré sa grande puissance.

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)

J'aimerais idéalement pouvoir faire un clic droit sur un fichier PDF donné dans le Finder et lui appliquer le filigrane script en tant que service.

J'ai déjà fait un peu de bricolage mais le plus que j'ai pu comprendre par moi-même est que j'ai besoin d'exécuter le script tel qu'il est (actuellement) je peux faire une application Automator avec le droplet "Run AppleScript" comme première étape.

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

    return input
end run

Ce serait merveilleux de pouvoir le mettre à l'échelle pour travailler sur n'importe quel PDF. L'image PDF "filigrane" réelle se trouverait à un emplacement fixe sur le disque dur et les fichiers sur lesquels le service est appliqué ne seraient pas renommés ou déplacés/copiés ailleurs (idéalement).

0 votes

Avez-vous essayé de lire Ce poste sur SO ? Alors intégrez votre script, et demandez une entrée au début du script d'Automator, ainsi que le fichier de sortie.

0 votes

J'ai essayé d'utiliser (par exemple) "inFile = sys.argv[1]" etc dans mon script mais j'obtiens toujours une erreur "IndexError : list index out of range".

0 votes

Le gestionnaire Applescript que vous avez collé ici est incomplet.

1voto

benwiggy Points 21125

Dans Automator, utilisez l'action "Exécuter le shell script". Normalement, vous devriez définir la valeur de la liste déroulante du shell sur "/usr/bin/Python", pour utiliser le Python 2.7 intégré. Cependant, si vous sélectionnez un shell unix, mais que vous vous assurez que votre script contient "# ! /usr/bin/ env Python", ou un chemin explicite vers votre installation python3, alors cela devrait fonctionner.

Si vous sélectionnez l'autre liste déroulante "Passer l'entrée" à "en tant qu'arguments", alors vous pouvez obtenir les noms de fichiers de vos éléments sélectionnés à partir de sys.argv().

Notez que Automator est déjà doté d'une action filigrane qui vous permet de superposer un PDF à un autre. (C'est également un script Python, si vous creusez assez profondément dans /System/Library/Automator/).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X