17

Получите около 500 PDF-файлов, чтобы пройти и извлечь первую страницу. Затем им нужно пройти через процесс, требующий много времени, поэтому мы надеялись сэкономить время, выполнив пакетный процесс, чтобы извлечь только первую страницу из 500 PDF-файлов и поместить ее в новый PDF-файл. Имейте в виду Acrobat, но не можете найти реальный способ сделать это для нескольких файлов. Кто-нибудь знает какие-либо другие программы или методы, чтобы этого можно было достичь? Бесплатный и открытый исходный код явно более выгоден :)

РЕДАКТИРОВАТЬ: На самом деле были некоторые успехи с использованием GhostScript, чтобы извлечь только одну страницу. Сейчас я смотрю, как пакетировать это и взять список файлов и использовать их.

5 ответов5

26

Используя pdftk...

На Mac и Linux из командной строки.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

В Windows вы можете создать командный файл. Откройте Блокнот, вставьте это внутрь:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Возможно, вам придется заменить «pdftk.exe» на полный путь к pdftk, например, "C:\Program Files\pdftk\pdftk.exe или что-то еще. (Я не использую Windows, поэтому я не знаю.)

Сохраните его с расширением, оканчивающимся на .bat, поместите его в папку с PDF-файлами и дважды щелкните.

Вы можете сделать то же самое с Ghostscript, да.

Посмотрим. Для Mac и Linux (все в одной строке):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Я не совсем уверен, что соответствующая команда будет для командного файла Windows. Мое лучшее предположение (- у меня нет окон, поэтому я не могу проверить--):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Дважды проверьте правильность пути к исполняемому файлу-скрипту, и я не проверял это, так как не пользуюсь Windows.


РЕДАКТИРОВАТЬ: ОК, я только что понял, что вы, вероятно, не хотите 500 одностраничных PDF-файлов, а один PDF-файл, который объединяет их все. Просто запустите вышеуказанное, и у вас останется 500 одностраничных PDF-файлов. Чтобы объединить их, используя pdftk ... на Mac и Linux:

pdftk *-page1.pdf cat output combined.pdf

Я думаю, что это, вероятно, то же самое в Windows, за исключением, возможно, необходимости полного пути к pdftk, как указано выше. Вы можете просто добавить эту строку после строки выше в вашем командном файле.

С Ghostscript ... на Mac и Linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

И, вероятно, то же самое в Windows, за исключением замены "gs" в начале на полный путь к gswin32c.exe, как указано выше.

Может быть, у ghostscript есть возможность сделать и то и другое за один шаг, но мне сейчас лень разбираться в этом.

Если важен порядок их объединения, нам потребуется больше информации.

2

Просто нужно было сделать это сегодня в Linux. Это должно работать и для Mac. Выполните следующую команду с вашего терминала.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr отправляет задания на принтер.

Обратите внимание на использование символов * в команде. Это запустит команду для всех ваших файлов PDF в каталоге.

1

Я думаю, что вы могли бы использовать виртуальный принтер PDF, например, PDF-Forge.

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

Удачи!!

Trufa

0

В линуксе

Я написал эту командную строку

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

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

Для этого вам нужны pdftk и tree а в Ubuntu Linux вы можете установить его с помощью apt:

sudo apt install pdftk tree
0

как для команды пакетного файла Windows (.bat) (%% для переменных в файле bat)

извлечение первой страницы в формате pdf в формате jpg с уменьшенным разрешением / размером

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(в посте выше sOutputFile был написан неправильно .. и с текущим путем стандартной установки GS x86)

(также посмотрите на Использование Ghostscript для преобразования многостраничного PDF в один JPG? )

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