118

using ImageMagick, what command should i use to convert a PDF to PNG? I need highest quality, smallest file size. this is what I have so far (very slow by the way):

convert -density 300 -depth 8 -quality 85 a.pdf a.png

Looking at what Gmail does when a user "view" a PDF, the quality is awesome and the file size very minimal. The DPI is just 96 (I have to set a density of 300 to get anything decent). Anyone know how GMail does it? Thanks.

StackOverflowNewbie
  • 39,403
  • 111
  • 277
  • 441
  • 2
    Using `density` is also the solution of the converted image too **blur**. – ch271828n May 15 '16 at 03:22
  • 32
    `I need highest quality, smallest file size.` At the same time? Impossible. Welcome to the real world! – bers Dec 07 '16 at 15:31
  • 1
    I guess he meant *maximum quality with minimum file size possible* or as sharp as original quality without adding unnecessary artifacts that increase file size without making image better. In that case, try `convert -density 192 input.pdf -quality 100 -alpha remove output.png` somehow `-quality 100` may lower the file size. 192 double 96dpi is good enough, and `-alpha remove` to remove transparent png background. – A. Go Jul 03 '21 at 00:08

4 Answers4

91

Reducing the image size before output results in something that looks sharper, in my case:

convert -density 300 a.pdf -resize 25% a.png
Alastair
  • 6,837
  • 4
  • 35
  • 29
43

when you set the density to 96, doesn't it look good?

when i tried it i saw that saving as jpg resulted with better quality, but larger file size

qubodup
  • 8,687
  • 5
  • 37
  • 45
Avi Pinto
  • 4,266
  • 2
  • 24
  • 24
  • 6
    just tried convert -density 96 -quality 85 a.pdf a.png and the results are very good – Avi Pinto May 26 '10 at 06:02
  • 1
    What is the full command line for this? When I try to run this on a Windows machine it's running the Windows "convert" command. – Andreas Mar 20 '19 at 14:08
  • on Windows preface the "convert" command with "magick" to get it to work. magick convert -density 300 -depth 8 -quality 85 a.pdf a.png – Matt Manuel Jul 21 '20 at 18:21
  • Disagree, density 96 is not good enough for pdf text doucment. And jpg may result worse result for pdf text document; jpg make larger file size with artifacts and worse quality for text. **png** however, result better in smaller file size and text quality; Use `-alpha remove` to remove png transparent background. – A. Go Jul 03 '21 at 00:16
3

To get high quality, one should do "supersampling" in Imagemagick. Convert at a high density, but then resize down as needed (nominal enough to compensate for the high density).

convert -density 288 input.pdf -resize 25% output.png

288=72*4 (72 dpi is default density, so 4x)
25%=1/4

So the 1/4 compensates for the 4x.

fmw42
  • 46,825
  • 10
  • 62
  • 80
  • 72 dpi is default for PDF not necessarily screen. See https://stackoverflow.com/questions/36905337/default-imagemagick-density-when-converting-from-pdf. Feel free to use any density and fraction you want. – fmw42 Jul 30 '21 at 00:16
  • This works great, nevertheless I am not using the `-resize 25%` as it makes the text blurry and some images suffer some kind of compression, pixelated. – Geppettvs D'Constanzo Nov 21 '21 at 14:36
  • I can confirm, my text becomes a lot fuzzier than it will be with -density 192 without -resize. – reinierpost Mar 28 '23 at 16:22
  • Then do not resize and just find the density that makes the image sharp enough for you and has an acceptable size. – fmw42 Mar 28 '23 at 17:36
1
convert -density 192 input.pdf -quality 100 -alpha remove output.png

for pdf text document is good enough. -density 192 double 96dpi, higher just make bigger image and file size -quality 100 somehow this give slightly smaller file size -alpha remove to remove png transparent background

A. Go
  • 63
  • 1
  • 9