How to count pages in multiple PDF files?

12

7

I just received a pdf textbook comprised of some 20 separate pdfs (by chapter) with quasi-regular names. Is there a way for counting the pages in th book w/o openning each file (or going through the properties)?

[solution can be for Windows or Ubuntu]

ysap

Posted 2012-03-22T16:21:58.290

Reputation: 2 116

Do you want the page count for each PDF file, and/or the entire book? – Franck Dernoncourt – 2019-05-19T01:59:20.367

@FranckDernoncourt - thanks. The question was asked some 7 years ago. If you have a solution to either ways you mentioned, why won't you just add an answer here, so future users researching this issue can refer to? – ysap – 2019-05-28T11:59:05.923

Do you have Adobe Acrobat? – wizlog – 2012-03-22T16:34:40.780

Answers

19

Using pdfinfo this is the best I could come up with: To print the number of pages per file:

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

To print the sum of all pages in all files:

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

On Ubuntu, pdfinfo is contained in the package poppler-utils. To install it, use:

sudo apt-get install poppler-utils

On Windows, you can use cygwin. pdfinfo is contained in the package poppler.

Der Hochstapler

Posted 2012-03-22T16:21:58.290

Reputation: 77 228

I had to add the --text flag to the grep command, because for some reason pdfinfo returned something that grep interpreted as a binary file. So grep --text "^Pages:", just in case someone else has the same issue. – KIAaze – 2020-02-13T14:27:27.807

+1 pdfinfo is exactly what I was looking for. I need it for page counts in my duplex printing emulation package. – Joe – 2013-03-12T06:18:11.790

4

I made an application just for this, Its written in Java so works on all os's. Check it out here:

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

Its best to run the application from terminal (java -jar) to ensure it will work properly.

Put the jar file in the directory you want to get the page count of all the pdfs in. It will cycle through subfolders aswell, no need to place all the pdfs where the jar file is as it will cycle through the subfolders where you place the jar file. Double click on the jar, it may take some time if there is alot of pdfs, it will eventually output a txt file in the same directory of the jar file, and it will have the page count within it.

HashTables

Posted 2012-03-22T16:21:58.290

Reputation: 141

Nice idea. Good enhancements would be: 1) open that is command-line only (no UI), and 2) output the page size of each file, along with total – raider33 – 2018-09-14T17:26:15.317

4

I know its too late but I just found a way better and simpler solution for this.

Download and install from sourceforge "pdf split and merge"

Drop all your files on it, and in the screen it generates a spreadsheet-like report on the number of pages and info of each.

Select that, copy, paste into excel or opencalc, you got it.

user339697

Posted 2012-03-22T16:21:58.290

Reputation: 41

1

In Adobe Acrobat Pro, go to file > create PDF > merge files into a single PDF. Then add files and select the files you want. Click combine, and see how many pages are in the final PDF.

wizlog

Posted 2012-03-22T16:21:58.290

Reputation: 12 320

Thanks @wizlog - this really requires the full featured (and expensive) software, doesn't it? – ysap – 2012-03-22T17:26:25.230

Just noticed your comment on the question. No, I don't have it. – ysap – 2012-03-22T17:28:15.213

1

Hi dont know how you can do it on windows but on linux bash it should work with this

PDFS=`ls *.pdf`
counter=0
for i in $PDFS
do
   (( counter += `pdfinfo internship_report.pdf | sed -n 's|Pages:[^0-9]*\([0-9]*\).*|\1|p'`))
done
echo $counter

best reguards kenny

phschoen

Posted 2012-03-22T16:21:58.290

Reputation: 251

Thanks, Kenny. This may work if the filename would scan through the files. Upvoted anyway. – ysap – 2012-03-22T17:25:22.487

0

another approach with parallel and expr (should be a bit faster on multiprocessor machines):

expr $( echo -n 0; parallel "pdfinfo {} |sed -n 's/Pages: */ + /p'" ::: *pdf|tr '\n' ' ')

Matteo Gamboz

Posted 2012-03-22T16:21:58.290

Reputation: 1