Linux: Convert a PDF File To an Image

Posted on in Categories , , , , , , , last updated January 16, 2009

Q. A friend showed me how to extract images from a pdf file using pdfimages utility. But I’d like to convert my PDF file to image file. How do I convert a PDF to an image file using a command line option?

A. You need to use convert command from imagemagick – image manipulation set of programs.

The convert program is a member of the ImageMagick suite of tools. Use it to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. This is also useful if you do not have PDF reader installed (Gnome and KDE does have in built PDF reader) or required for your webbased project.

Type the following command to convert foo.pdf to foo.png (foo1.png, foo2.png.. etc if you have multiple pages in a pdf file):
$ convert foo.pdf foo.png
You can specify a different file type by changing the file extension of the second file, type:
$ convert foo.pdf foo.jpg

29 comment

  1. Use “-density ” option for setting precision in points per inch, example:
    $ convert -density 300 file.pdf image.png
    By default the dpi is 72, which could be too low. Make sure the option is _before_ the filenames though.

  2. Thanks Laurent, that density option was the command I was looking for. Now I can have image output at appropriate quality.

  3. i dont know why but this isnt working for me .
    i have 2 Gb of free space and what this command does is reduce it to 4 KB .
    No output file or anything is generated ..

  4. Love ImageMagick for it’s neat feature to handle PDF (more or less as-is). Also, big thanks to Laurent for explaining the “-density” switch; which (until now) was the missing point in my latest workflow. Cheers!

  5. Hi,
    I’m trying to convert a 350 page pdf file (95MB). If I set the density to 72×72 it works perfectly but I can’t read the text. If I set the density to 150×150 it crashes out after page 3. I’m guessing that I’m running out of memory. Is there any way to specifiy the page number to start the conversion from?
    Any help is appreciated
    Craig

    1. Add -f 1 -l 10 for starting on the first page and ending on the tenth. You might need another tool to split it into smaller chunks first, though.

  6. im using convert command to a pdf with thai characters in it but when i do, the resulting file does not contain thai characters(it is replaced by empty characters) . Please advise.

  7. this “density” option really helps with the convert command :)
    i am glad to get a good quality image post conversion
    Thanks a lot

  8. Thanks for this helpful guide. I’ll find it easier to convert my files to an image. Btw, if you want the other way around, you can also use this tool http://goo.gl/gWyHJH I just discovered it and it’s easy to use. Give it a try

  9. I want to convert 1.jpg, 2.jpg, 3.jpg, … , 20.jpg in a single pdf using a command. The images should be in order. (1.jpg then 2.jpg and so on) I am doing it with convert *.jpg my.pdf .
    but pdf is not ordered as I want. How can I do that ? Please advise.

    1. Reply to C. Patel
      I suspect the files are in alphabetic order instead of number order,
      so 1 10 11 12 2 3 4 5 6 7 8 9 for 1 to 12. Try using two digit numbering
      01 02 03 04 05 06 07 08 09 10 11 12.

      Good luck.

  10. For modern Debian or Ubuntu based distros like Linux Mint, you can get the “convert” command by installing package:

    “poppler-utils” (for all PDF related tasks).

    With this package, you’ll get:
    * pdfdetach — lists or extracts embedded files (attachments)
    * pdffonts — font analyzer
    * pdfimages — image extractor
    * pdfinfo — document information
    * pdfseparate — page extraction tool
    * pdftocairo — PDF to PNG/JPEG/PDF/PS/EPS/SVG converter using Cairo
    * pdftohtml — PDF to HTML converter
    * pdftoppm — PDF to PPM/PNG/JPEG image converter
    * pdftops — PDF to PostScript (PS) converter
    * pdftotext — text extraction
    * pdfunite — document merging tool

    Enjoy ;-)

Leave a Comment