Получите около 500 PDF-файлов, чтобы пройти и извлечь первую страницу. Затем им нужно пройти через процесс конверсии, требующий много времени, поэтому мы надеялись сэкономить время, выполнив пакетный процесс, чтобы извлечь только первую страницу из 500 PDF-файлов и поместить ее в новый PDF-файл. Имейте в виду Acrobat, но не можете найти реальный способ сделать это для нескольких файлов. Кто-нибудь знает какие-либо другие программы или методы, чтобы этого можно было достичь? Бесплатный и открытый исходный код явно более выгоден :)
РЕДАКТИРОВАТЬ: На самом деле были некоторые успехи с использованием GhostScript, чтобы извлечь только одну страницу. Сейчас я смотрю, как пакетировать это и взять список файлов и использовать их.
pdf
open-source
Тим Александр
источник
источник
Ответы:
Используя 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 есть возможность сделать и то, и другое за один шаг, но мне лень это выяснять прямо сейчас.
Если порядок их объединения важен, нам потребуется больше информации.
источник
Просто нужно было сделать это сегодня в Linux. Это должно работать на Mac тоже. Выполните следующую команду с вашего терминала.
lpr отправляет задания на принтер.
Обратите внимание на использование символов * в команде. Это запустит команду для всех ваших файлов PDF в каталоге.
источник
Я думаю, что вы могли бы использовать виртуальный принтер PDF, например, PDF-Forge.
Вы просто «печатаете» первую страницу, я сейчас на Mac и не могу попробовать, но я уверен, что вы можете сделать это больше, чем по одной за раз.
Удачи!!
Trufa
источник
как для команды пакетного файла 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? )
источник
В линуксе
Я написал эту командную строку
Но он выполняет свою работу, я тестировал его, он также работает с тем количеством уровней папок, которые у вас есть. Просто убедитесь, что вы запускаете его в корне структуры папок. Каждая папка будет иметь для каждого файла PDF дополнительный PDF, заканчивающийся на
.firstpage.pdf
Вам нужно
pdftk
иtree
для этого, и для Ubuntu Linux вы можете установить его с помощью apt:источник
Или используйте cpdf https://www.coherentpdf.com/ocaml-libraries.html :
источник