PDF to JPG conversion using PHP

user1016265 picture user1016265 · Dec 24, 2011 · Viewed 69.4k times · Source

I'm trying to convert PDF to IMG (JPG) with help PHP.

I'm using imagick extension.

this is my code

    $fp_pdf = fopen($pdf, 'rb');

    $img = new imagick(); // [0] can be used to set page number
    $img->readImageFile($fp_pdf);
    $img->setImageFormat( "jpg" );
    $img->setImageCompression(imagick::COMPRESSION_JPEG); 
    $img->setImageCompressionQuality(90); 

    $img->setResolution(300,300);

    $img->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);

    $data = $img->getImageBlob(); 

my source pdf file has right dimension (210x297 mm, like A4 has). And everything looks good. But my jpg has page dimension as 842x595 px, and DPI is 72.

and img file much more smaller on paper then pdf, when i had print it.

what is a proper way to make image file from pdf and make it so big as pdf (on paper)

Answer

Jonathan Williamson picture Jonathan Williamson · Jan 21, 2012

You could use imagemagick through exec() or similar, the shell arguments are much less verbose than the PHP extension.

$pdf_file = escapeshellarg( "mysafepdf.pdf" );
$jpg_file = escapeshellarg( "output.jpg" );

$result = 0;
exec( "convert -density 300 {$pdf_file} {$jpg_file}", null, $result );

// at this point $result should == 0 if the conversion was successful

It's the "-density" (which sets the DPI to read the source file as) option that specifically fixes your problem.

Also imagemagick by default uses a -quality setting of 92 for JPEG writing in most cases - so you probably don't need to explicitly declare it.