shellpdf

How to write shell script for finding number of pages in PDF?


I am generating a PDF dynamically. How can I check the number of pages in the PDF using a shell script?


Solution

  • Without any extra package:

    strings < file.pdf | sed -n 's|.*/Count -\{0,1\}\([0-9]\{1,\}\).*|\1|p' \
        | sort -rn | head -n 1
    

    Using pdfinfo:

    pdfinfo file.pdf | awk '/^Pages:/ {print $2}'
    

    Using pdftk:

    pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}'
    

    You can also recursively sum the total number of pages in all PDFs via pdfinfo as follows:

    find . -xdev -type f -name "*.pdf" -exec pdfinfo "{}" ";" | \
        awk '/^Pages:/ {n += $2} END {print n}'