Как настроить службу OSX для удаления первой страницы PDF-файла?

Как настроить службу OSX для удаления первой страницы PDF-файла?

Я часто получаю файлы PDF, где первая страница либо пустая, либо просто титульный лист, который мне не нужен. Можете ли вы предложить быстрый и эффективный способ (Applescript, Service или ???) удалить только эту первую страницу и сохранить файл?

Если бы это можно было автоматизировать с помощью Preview или Adobe Acrobat Professional, это было бы идеально.

Есть идеи?

решение1

Вы можете сделать это с помощьюАвтоматизаторРабочий процесс. Он немного сложнее большинства других, поэтому будьте осторожны при его реализации.

Этот пост содержитдваверсии: одна короче и сохраняет вывод как Processed PDF File.pdfна рабочем столе, другая длиннее и сохраняет файл как(Edited)InputFileName.pdfв том же каталоге. Шаги, необходимые только для более длинной версии, отмечены(необязательный).

ОткрытьАвтоматизатори выберите, чтобы создать новыйУслугакоторый получаетPDF-файлыкак вход вЛюбое приложение.

  1. (необязательный)ДобавитьУстановить значение переменнойдействие и назовите переменную FilePath.
  2. (необязательный)ДобавитьЗапустить AppleScriptдействие и используйте следующий код скрипта, чтобы получить имя папки, в которой находится файл:

    on run {input, parameters}
        tell application "Finder" to return (container of first item of input) as alias
    end run
    
  3. (необязательный)ДобавитьУстановить значение переменнойдействие и назовите переменную Folder.

  4. (необязательный)ДобавитьПолучить значение переменнойдействие и вернуть переменную FilePath. Игнорировать входные данные этого действия в егоПараметры.
  5. (необязательный)ДобавитьЗапустить скрипт оболочкидействие и пропуск вводакак аргументы. Используйте следующий скрипт для извлечения базового имени файла:

    echo "$( basename "$1" )"
    
  6. (необязательный)ДобавитьУстановить значение переменнойдействие и назовите переменную FileName.

  7. (необязательный)ДобавитьПолучить значение переменнойдействие и назовите переменную FilePath. Игнорируйте входные данные этого действия в егоПараметры.

  8. ДобавитьPDF в изображениядействие, сохранение вывода на Рабочий стол или любую папку, которая может содержать временные файлы. Назовите их как хотите.

  9. ДобавитьУстановить значение переменнойдействие, чтобы мы знали позже, какие временные файлы удалить. Назовите переменную TempFiles.
  10. ДобавитьЗапустить AppleScriptдействие и используем следующий код скрипта для фильтрации списка временных файлов (здесь мы удаляем первую страницу):

    on run {input, parameters}
        return rest of input
    end run
    
  11. ДобавитьОбъединить страницы PDFдействие, чтобы собрать части вместе снова,добавление страниц.

  12. ИспользоватьПереместить элементы Finderдействие для перемещения полученного файла (рекомбинированного PDF) на Рабочий стол или в любую папку, куда вы хотите. Если вы решили вычислить родительскую папку входного файла, это то место, куда вы перетаскиваете ссылку на переменную Folder.
  13. TheПереименовать элементы Finderдействие может дать этим файлам лучшее имя файла, чем eg zOpY3O.pdf, которое автоматически назначается для объединенного файла PDF. Используйте egИмя Отдельный элементи дайте ему базовое имя Processed PDF File. Если вы решили использовать более длинный вариант, перетащите FileNameиз списка переменных в текстовое поле и добавьте (Edited)прямо перед ним. Теперь мы в основном закончили, осталось только подчистить.
  14. ДобавитьПолучить значение переменнойдействие и получить значение TempFiles. Игнорировать входные данные этого действия в егоПараметры.
  15. ДобавитьПереместить элементы Finder в корзинудействие по удалению временных одностраничных файлов.

Вот скриншот готовой более длинной версии рабочего процесса:

введите описание изображения здесь

решение2

Используя вышеупомянутоеинструменты командной строки PDF, мне удалось составить рабочий процесс, который выполняет следующие действия:

  1. Возьмите входной PDF-файл (или PDF-файлы) и создайте новый файл без первой страницы.
  2. Переместите исходный PDF-файл в корзину.
  3. Переименуйте новый файл в соответствии с исходным файлом.

Сначала я установил PDF tools, как было указано. Ключевым инструментом в данном случае является pdfsplit.

В Automator я создал новый сервис для получения выбранных PDF-файлов в Finder.

Я добавил действие «Run Shell Script» с оболочкой «/bin/bash» и «pass input» установленным на «as arguments». Затем я написал следующий простой скрипт:

for f in "$@"
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Я добавил действие «Переместить элементы Finder в корзину» для исходного файла и действие «Заменить текст», чтобы удалить расширение .tmp из нового файла.

Чтобы запустить процесс с входными данными из папки, скрипт будет выглядеть примерно так:

cd "$@"
for f in *pdf
do
        /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
done

Полагаю, я мог бы сделать все в скрипте оболочки, включая удаление и переименование. Но команда rm может быть опасной, и я предпочитаю вместо этого переместить исходный файл в корзину.

Скрипт можно модифицировать, чтобы он делал больше, чем просто удалял x страниц. Я разработал похожую программу для пакетной обрезки и объединения PDF-файлов, например. Ознакомьтесь с руководством по pdfsplit и сопутствующим инструментам для получения дополнительной информации.

решение3

Кто-то на другом форуме разработалнекоторыйинструменты командной строки PDF, включая тот, который удаляет страницы. Выглядит не совсем просто. Единственная возможная загвоздка может быть в том, как это работает с вашим рабочим процессом. Из вашего описания, похоже, что у вас есть что-то, что работает, пока PDF открыт, и эти инструменты, похоже, работают (лучше) с закрытым файлом.

решение4

Чтобы дополнить ответ Джозефа Янниелли, тем, кто решит запустить скрипт оболочки, может быть проще включить команды для удаления и переименования файла в скрипт, а не добавлять отдельные действия через Automator:

for f in "$@"
do
    /usr/local/bin/pdfsplit "$f" 2- > "$f".tmp
    rm "$f"
    mv "$f".tmp "$f"
done

Что касается установки инструментов командной строки PDF, то это можно удобно сделать с помощьюДомашнее пиво:

brew install pdf-tools

Связанный контент