#python #macos #pdf
#python #macos #PDF
Вопрос:
Уже много лет я использую скрипт на Python, чтобы добавить «виртуальный принтер» в свой диалог печати macOS и печатать на канцелярских принадлежностях PDF из любого приложения.
Скрипт помещается внутрь ~/Library/PDF Services
, берется sys.argv[3]
в качестве входного файла, объединяет входной файл с заданным файлом PDF и сохраняет его в ~/ Downloads .
Я был счастлив, пока не обновился до macOS Catalina и всегда получал это сообщение с консоли:
Sandbox: Python(30225) System Policy: deny(1) file-read-data /Users/me/Documents/stationery.pdf
Похоже, что из-за новых разрешений в macOS Catalina скрипт больше не может получить доступ к файлу stationery. Однако Python имеет полный доступ к жесткому диску.
Если я запускаю тот же скрипт с терминала, все работает нормально.
Как я могу предоставить скрипту доступ к требуемому документу ( /Users/me/Documents/stationery.pdf
) при выполнении из диалога печати?
Ответ №1:
Редактировать:
Похоже, эта проблема была исправлена в Monterey: скрипты python теперь будут корректно запускаться как службы PDF.
(Конечно, они удаляют python, поэтому вам придется установить свой собственный. Колебания и карусели.)