Imagemagick将pdf转换为jpeg

时间:2015-06-19 05:49:18

标签: php pdf imagemagick jpeg

使用此代码将我的pdf转换为jpg时收到错误代码。我之前没有使用imagemagick,所以我不确定我做错了什么。

我正在使用的代码:

        $im = new Imagick();
        $im->setResolution(300,300);
        $im->readimage('artwork/$file_name'); 
        $im->setImageFormat('jpeg');    
        $im->writeImage('artwork/jpeg/$file_name'); 
        $im->clear(); 
        $im->destroy();

我得到的错误:

  

致命错误:带有消息的未捕获异常'ImagickException'   '无法打开图像`@ artwork / $ file_name':没有这样的文件或目录   @ blob.c / OpenBlob / 2480'中   /www/xx/xxxxx/xxxx/xxxx/xx/upload_artwork2.php:58堆栈跟踪:#0   /www/xx/xxxxx/xxxx/xxxx/xx/upload_artwork2.php(58):   Imagick-> readimage('@ artwork / $ file _...')#1 {main}引入   第58行/www/xx/xxxxx/xxxx/xxxx/xx/upload_artwork2.php

这是最好的方法吗,还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

我将我正在使用的代码更改为此并且工作正常。 唯一的问题是你需要在上传到数据库时添加.jpg或.pdf,否则可以正常工作。

            $file_name = basename($file_name, '.pdf');

            // Convert this document
            // Each page to single image
            $img = new imagick('artwork/'.$file_name.'.pdf');

            // Set background color and flatten
            // Prevents black background on objects with transparency
            $img->setImageBackgroundColor('white');
            $img = $img->flattenImages();

            // Set image resolution
            // Determine num of pages
            $img->setResolution(300,300);
            $num_pages = $img->getNumberImages();

            // Compress Image Quality
            $img->setImageCompressionQuality(100);

            // Convert PDF pages to images
            for($i = 0;$i < $num_pages; $i++) {         

                // Set iterator postion
                $img->setIteratorIndex($i);

                // Set image format
                $img->setImageFormat('jpeg');

                // Write Images to temp 'upload' folder     
                $img->writeImage('artwork/'.$file_name.'-'.$i.'.jpg');

答案 1 :(得分:0)

请验证您的路径是否正常 - 错误明确指出输入文件$('.btnApplIdnDtls').click(function () { var rowCount = $('#tblApplIdn tr').length; var index = rowCount + 1; var IndentifyType=$('#TypeOfIdentification option:selected').text();//get values var IdentifyNum=$("#IdentityNumber").val();//get values var IssueDate=$('#IssueDate').val();//get values $('#tblApplIdn').append("<tr><td><input type='hidden' name='identitity.Index' value='" + index + "' /><input type='text' name='identitity[" + index + "].TypeOfIdentification'></td><td><input type='text' class='textreq' name='identitity[" + index + "].IdentityNumber'></td><td><input type='text' class='textreq' name='identitity[" + index + "].IssueDate'></td><td><input type='button' name='remove' class='remove' value='Remove' id='" + index + "'/></tr>");//simply append it var lasttr=$('#tblApplIdn tr:last'); //get the last tr lasttr.find('td:first input[type="text"]').val(IndentifyType); give its input a value lasttr.find('td:nth-child(2) input').val(IdentifyNum); lasttr.find('td:nth-child(3) input').val(IssueDate); }); 不存在(至少在指定位置)。