Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Output filenames when extracting a range of pages from pdf into jpeg using Imagemagick

I am trying to extract a range of pages from a multipage pdf file into individual jpegs using convert (Imagemagick). The extraction works fine. What I am stuck on is that if I want to extract page range 10-20, I still get out jpeg files with names page-0.jpeg to page-9.jpeg while I want them to be named page-10.jpeg to page-20.jpeg. Is there a way of specifying that on the command line?

I require this since I want to extract pages in chucks of 10 to avoid eating up too much memory for huge pdf files and don't want to keep renaming the files.

I remember having this working in an earlier project but can't figure out what I am missing now.

like image 500
abhaga Avatar asked Dec 13 '22 00:12

abhaga


1 Answers

Finally managed to do this. Leaving a answer in case somebody else is looking for the same. The solution works with Imagemagick 6.5.1.

So we want to extract page numbered i to j from a.pdf into individual jpegs with files named from a-10.jpeg to a-20.jpeg.

convert a.pdf[i-j] -set filename:page "%[fx:t+i]" a-%[filename:page].jpeg

This uses fx operators. fx:t gives the screen number of current image in sequence and we can add our offset to it.

like image 118
abhaga Avatar answered Apr 24 '23 03:04

abhaga