PerlMagick PDF pages

TL;DR

It’s easy to get individual pages from a PDF with PerlMagick.

I was playing around with PerlMagick and a PDF with two pages inside, when a question hit me: how do I figure out how many pages are there in the PDF and iterate through them?

Some searching was not useful to this regard, because either I found stuff applicable to PHP, or walls of text where searching for pages, multiple ecc. did not yield a clear result.

Then this example came in my vision cone:

$image->Crop(geometry=>'100x100+10+20');
$image->[$x]->Frame("100x200");

Wait. A. Minute.

Are we saying that an Image::Magick object is actually a blessed array reference when reading multiple images (like a PDF)? It seems… so:

Image::Magick=ARRAY(0x7efebdc8be00)

From this point, the path goes downwards with a gentle decline, through an amazing country landscape. The array contains indeed one item for each page, and each item in the array can itself be used as an Image::Magick object (this time it’s a blessed SCALAR instead, but who cares?).

So there we go, to know how many pages are in the PDF we can do like this:

use v5.24;
use Image::Magick;
my $pm = Image::Magick->new;
$pm->Read('myfile.pdf');
my $n_pages = $pm->@*;

Enjoy and stay safe!

Update: thanks to n1vux for proofreading!


Comments? Octodon, , GitHub, Reddit, or drop me a line!