Question

I want to make thumbnails of pdf or ppt being uploaded by the user I tried

$file = 'Digital Signage.pptx';    
$cache = $_SERVER['DOCUMENT_ROOT'].'/cache/';    
$ext = "jpg";//just the extension    
$dest = $cache.$file.'.'.$ext;    
if (file_exists($dest)){
    $img = new imagick();
    $img->readImage($dest);
    header( "Content-Type: image/jpg" );
    echo $img;
    exit;    
 } else {    
    $img = new imagick($_SERVER['DOCUMENT_ROOT'].'/'.$file.'[0]');
    $img->setImageFormat($ext);    
    $width = $img->getImageheight();
    //$img->cropImage($width, $width, 0, 0);
    $img->scaleImage(105, 149, true);    
    $img->writeImage($dest);    
    header( "Content-Type: image/jpg" );
    echo $img;
    exit;
}

Bu this needs imagic to be intalled on server and my host does not allow me as I am on shared hosting is there any other method to do this

I can use exec command also because it is not secure and I am bound not to use this

Was it helpful?

Solution 2

I know I am too late to answer this question but, this may help some one else.

There is no way to do the above mentioned task except to use imagick or ghost script(a command line tool), so finally I found a way too enable the imagick extension on another dedicated server and generated images over there and then downloaded them on the server where my site was being hosted file_get_content()

OTHER TIPS

There are alternatives to using imagemagick. Perhaps use PHPGD instead to create your thumbnails. The function is called imagecopyresized

Example code of how the resizing works:

<?php 
 // The file you are resizing 
 $file = 'your.jpg'; 

 //This will set our output to 45% of the original size 
 $size = 0.45; 

 // This sets it to a .jpg, but you can change this to png or gif 
 header('Content-type: image/jpeg'); 

 // Setting the resize parameters
 list($width, $height) = getimagesize($file); 
 $modwidth = $width * $size; 
 $modheight = $height * $size; 

 // Creating the Canvas 
 $tn= imagecreatetruecolor($modwidth, $modheight); 
 $source = imagecreatefromjpeg($file); 

 // Resizing our image to fit the canvas 
 imagecopyresized($tn, $source, 0, 0, 0, 0, $modwidth, $modheight, $width, $height); 

 // Outputs a jpg image, you could change this to gif or png if needed 
 imagejpeg($tn); 
 ?> 

UPDATE: also, for creating the image from a PDF then maybe give imagecreatefromstring function a try, and then do the resize based on the image result from that.

Again late to this question, but you might consider using one of the online conversion services. They have API's where you can upload a PPTX and download png's of each slide. Mostly not free, but it might be easier than rolling your own to do the conversions.

In my research on this question, I came across http://www.zamzar.com/ and https://cloudconvert.com/. I haven't used either, so I can't report on the quality of the conversion.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top