4

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

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

Есть идеи?

4 ответа4

4

Вы можете сделать это, используя рабочий процесс Automator . Это немного сложнее, чем большинство, поэтому будьте осторожны при его реализации.

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

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

  1. (необязательно) Добавьте действие Set Value of Variable и назовите переменную FilePath .
  2. (необязательно) Добавьте действие « Выполнить AppleScript» и используйте следующий код сценария, чтобы получить имя папки, в которой находится файл:

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

  4. (необязательно) Добавьте действие Get Value of Variable и верните переменную FilePath . Игнорировать ввод этого действия в его настройках .
  5. (необязательно) Добавьте действие « Выполнить сценарий оболочки» и передайте входные данные в качестве аргументов . Используйте следующий скрипт для извлечения базового имени файла:

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

  7. (необязательно) Добавьте действие Get Value of Variable и назовите переменную FilePath . Игнорировать ввод этого действия в его настройках .

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

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

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

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

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

2

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

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

Сначала я установил инструменты PDF в соответствии с инструкциями. Ключевым инструментом в этом случае является pdfsplit.

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

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

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 может быть опасной, и я предпочитаю вместо этого перенести исходный файл в корзину.

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

0

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

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

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

brew install pdf-tools
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .