Как считать страницы в нескольких файлах PDF?


12

Я только что получил учебник в формате PDF, состоящий из примерно 20 отдельных файлов (по главам) с квазирегулярными именами. Есть ли способ подсчета страниц в книге без открытия каждого файла (или просмотра свойств)?

[решение может быть для Windows или Ubuntu]


У вас есть Adobe Acrobat?
wizlog

Вы хотите, чтобы количество страниц для каждого файла PDF, и / или всей книги?
Франк Дернонкур

@FranckDernoncourt - спасибо. Вопрос был задан около 7 лет назад. Если у вас есть решение по любому из упомянутых вами способов, почему вы просто не добавите здесь ответ, чтобы будущие пользователи, изучающие эту проблему, могли обратиться к нему?
ysap

Ответы:


19

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

for i in *.pdf; do echo $i && pdfinfo "$i" | grep "^Pages:"; done

Чтобы распечатать сумму всех страниц во всех файлах:

for i in *.pdf; do pdfinfo "$i" | grep "^Pages:"; done | awk '{s+=$2} END {print s}'

На Ubuntu, pdfinfoсодержится в пакете poppler-utils. Чтобы установить его, используйте:

sudo apt-get install poppler-utils

В Windows вы можете использовать Cygwin. pdfinfoсодержится в упаковке poppler.


+1 pdfinfo это именно то, что я искал. Мне это нужно для подсчета страниц в моем пакете эмуляции двусторонней печати.
Джо

Мне пришлось добавить флаг --text в команду grep, потому что по какой-то причине pdfinfo вернул что-то, что grep интерпретировало как двоичный файл. Так что grep --text "^ Pages:", на тот случай, если у кого-то еще такая же проблема.
KIAaze

4

Я знаю, что уже слишком поздно, но я нашел способ лучше и проще для этого.

Загрузите и установите из sourceforge "pdf split and merge"

Перетащите все свои файлы на него, и на экране он создаст отчет в виде электронной таблицы о количестве страниц и информации о каждом из них.

Выберите это, скопируйте, вставьте в Excel или OpenCalc, вы получили это.


4

Я сделал приложение только для этого, он написан на Java, поэтому работает на всех ОС. Проверьте это здесь:

https://github.com/hamiltino/multiple-pdf-counter/releases

Лучше всего запустить приложение из терминала ( java -jar), чтобы убедиться, что оно будет работать правильно.

Поместите файл jar в каталог, в котором вы хотите получить количество страниц всех PDF-файлов. Он также будет циклически перемещаться по подпапкам, нет необходимости размещать все PDF-файлы там, где находится файл JAR, так как он будет циклически перемещаться по подпапкам, в которые вы помещаете фляга Дважды щелкните по банке, это может занять некоторое время, если есть много файлов PDF, в конечном итоге он выведет файл TXT в тот же каталог файла JAR, и он будет иметь количество страниц в нем.


Хорошая идея. Хорошие улучшения: 1) открыть, то есть только для командной строки (без пользовательского интерфейса), и 2) вывести размер страницы каждого файла вместе с
итоговым значением

1

В Adobe Acrobat Pro перейдите к файлу > создать PDF > объединить файлы в один PDF . Затем добавьте файлы и выберите нужные файлы. Нажмите объединить, и посмотрите, сколько страниц в окончательном PDF.


Спасибо @wizlog - это действительно требует полнофункционального (и дорогого) программного обеспечения, не так ли?
ysap

Просто заметил ваш комментарий к вопросу. Нет, у меня его нет
ysap

1

Привет не знаю, как вы можете сделать это на Windows, но на Linux Bash это должно работать с этим

PDFS = `ls * .pdf`
Счетчик = 0
для меня в $ PDFS
делать
   ((counter + = `pdfinfo internship_report.pdf | sed -n 's | Страницы: [^ 0-9] * \ ([0-9] * \). * | \ 1 | p'`))
сделано
счетчик эхо $

С наилучшими пожеланиями Кенни


Спасибо, Кенни. Это может работать, если имя файла будет сканировать файлы. В любом случае проголосовал.
ysap

0

другой подход с parallelи expr(должен быть немного быстрее на многопроцессорных машинах):

expr $( echo -n 0; parallel "pdfinfo {} |sed -n 's/Pages: */ + /p'" ::: *pdf|tr '\n' ' ')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.