http://www.perlmonks.org?node_id=912757

bimleshsharma has asked for the wisdom of the Perl Monks concerning the following question:

How to count pages of PDF file?.

Replies are listed 'Best First'.
Re: Count pages of PDF file
by davido (Cardinal) on Jul 05, 2011 at 08:38 UTC

    That's about the only easy thing you can do with a PDF (aside from unlink()). Here's how to get a page count.

    use PDF::API2; my $pdf = PDF::API2->open( 'yourfile.pdf' ); my $count = $pdf->pages(); print "O frabjous day! The PDF has $count pages. Callooh! Callay!\n";

    PDF::API2

    Update: Well, in my excitement, having just done some painful work with PDF's a few days ago, I jumped on an answer, not realizing that you (the OP) followed up to your own node with a mostly similar solution. ...except that yours keeps a running total of total pages across multiple PDF files. I didn't see that need in the original question. But now I'm wondering what just happened here: If you already know the answer why did you post the question to Seekers of Perl Wisdom. Is there something more you would like us to add to your solution? :)


    Dave

Re: Count pages of PDF file
by ambrus (Abbot) on Jul 05, 2011 at 06:47 UTC

    Install xpdf. Run the pdfinfo utility on the pdf you want. Read its output. It has a line like Pages: 150 which should give you the number of pages.

Re: Count pages of PDF file
by bimleshsharma (Beadle) on Jul 05, 2011 at 06:23 UTC

    We can do like this..

    use PDF::API2;
    foreach $doc (@ARGV)
    {
    $pdf = PDF::API2->open($doc);
    $pages = $pdf->pages;
    $totalpages += $pages;
    print "$doc contains $pages pages\n";
    }
    print "Total pages of pdf pages = $totalpages\n";
Re: Count pages of PDF file
by Anonymous Monk on Jul 05, 2011 at 10:35 UTC
Re: Count pages of PDF file
by chrestomanci (Priest) on Jul 05, 2011 at 20:00 UTC

    You could install pdftk for your platform and then use:

    pdftk <filename> dump_data

    It will emit 11 lines of metadata about the file. The last item is the page count.