Как настроить печать первой страницы PDF через Quick Action на macOS

Печать отдельных страниц из PDF — частая задача, особенно когда нужно быстро подготовить документы для подписи или собрать выжимку из нескольких файлов. На macOS для автоматизации таких процессов удобно использовать Quick Actions (быстрые действия) в Finder. Но иногда настройка скриптов приводит к неочевидным ошибкам, например, дублированию страниц. Расскажу, как создать надёжный инструмент для печати первой страницы каждого PDF без лишних копий.

Кстати, проблема с повторной печатью возникает не из-за скрипта, а из-за некорректной структуры workflow в Automator. Если вы видите, что количество страниц растёт квадратично (1 файл → 1 страница, 2 файла → 4 страницы), проверьте цепочку действий — скорее всего, там есть лишние элементы.

Горячие клавиши для Quick Actions

Исправляем структуру workflow в Automator

Главная ошибка, которая приводит к дублированию файлов, — добавление действия «Get Selected Finder Items» (Получить выбранные объекты Finder) после триггера «Workflow receives current files or folders in Finder» (Рабочий процесс получает текущие файлы или папки в Finder). Это создаёт двойные ссылки на одни и те же PDF-файлы.

Вот как должна выглядеть правильная цепочка:

  1. «Workflow receives current files or folders in Finder» — триггер для захвата выбранных файлов.
  2. «Run AppleScript» — скрипт, обрабатывающий входные данные.
Пример корректного workflow в Automator

Если вы добавите между ними другие действия (например, фильтрацию или преобразование файлов), проверьте вывод на каждом этапе через временный блок «Ask for Confirmation» с отображением путей. Это поможет отловить дубликаты.

Настраиваем AppleScript для печати

Сам скрипт достаточно прост, но есть нюансы, которые стоит учесть. Приведу пример кода с комментариями:

on run {input, parameters}
    repeat with theFile in input -- цикл по каждому файлу из input
        try
            -- Конвертируем путь в POSIX-формат и экранируем спецсимволы
            set filePath to quoted form of POSIX path of theFile
            -- Печатаем первую страницу через lp (без дублирования)
            do shell script "lp -n 1 -o page-ranges=1 " & filePath
        on error errMsg
            -- Показываем ошибку, если принтер недоступен или файл повреждён
            display dialog "Ошибка: " & errMsg buttons {"OK"} default button 1
        end try
    end repeat
    return input
end run

Что важно:

  • -n 1 — печатать одну копию файла.
  • -o page-ranges=1 — указание диапазона страниц (только первая).
  • quoted form of POSIX path — экранирование пробелов и спецсимволов в путях.

Если скрипт завершается с ошибкой «The operation couldn’t be completed», проверьте:

  1. Разрешения Automator на доступ к Finder (Настройки → Защита и конфиденциальность → Автоматизация).
  2. Наличие установленного приложения Preview (используется для фоновой обработки PDF).

Альтернативные методы и расширение функционала

Если AppleScript по каким-то причинам не работает, попробуйте вызвать утилиту lp через Terminal напрямую. Например:

for file in /path/to/*.pdf; do lp -n 1 -o page-ranges=1 "$file"; done

Этот цикл можно адаптировать для других задач, например, извлечения первой страницы в отдельный файл через pdfseparate (требует установки poppler):

pdfseparate -f 1 -l 1 input.pdf output.pdf

Для более продвинутой обработки PDF (объединение, поворот страниц) рекомендую использовать Automator + JavaScript (JXA) или сторонние приложения вроде PDFpen или Adobe Acrobat.

И напоследок: если вам нужно печатать первые страницы регулярно, добавьте Quick Action в панель Finder. Для этого сохраните workflow в папку ~/Library/Services/ и назначьте горячую клавишу через Настройки → Клавиатура → Сокращения → Службы.

Готово! Теперь вы можете обрабатывать десятки PDF за пару кликов, а в случае ошибок — проверить логи принтера через Консоль (ищите записи с тегом «printing»). Если столкнётесь с неочевидными багами, напишите в комментариях — помогу с диагностикой.

Добавить комментарий

Все поля обязательны к заполнению. Ваш адрес email не будет виден никому.

Новое
Интересное