2015-11-11 2 views
0

J'essaie d'obtenir des images d'un fichier pdf. mais le problème est que mon code produit une erreur pour certains fichiers pdf. déposer probablement le problème de la tailleconvertir pdf en images en utilisant php

ceci est mon code

$saved_file_location = "images.pdf"; 
$destination_dir = "t"; 
$Name = "123"; 

exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+40 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg'); 
sleep(5); 
//echo filesize($destination_dir."/".$Name.'-000.jpg'). "<br>"; 
if(filesize($destination_dir."/".$Name.'-000.jpg') < 10000) 
{ 
    exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+580 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg'); 
    sleep(5); 
    //echo filesize($destination_dir."/".$Name.'-001.jpg')."<br>"; 
    if(filesize($destination_dir."/".$Name.'-001.jpg') < 10000) 
    { 
     exec('convert -verbose -density 150 '.$saved_file_location.' -crop 1020x490+128+1125 -quality 90 '.$destination_dir."/".$Name.'-%03d.jpg'); 
    } 
} 

et cette erreur je reçois

PHP Warning: filesize(): stat failed for t/123-000.jpg in /home3/domain/pdf_to_images.php on line 10 

quelque temps le travail de code fin et produire plusieurs images de fichier pdf, mais un peu de temps je reçois ce erreur

+0

Personne ne va être en mesure de vous aider. Pour une raison quelconque, la taille du fichier échoue sur votre système, mais vous seul pouvez en déterminer la cause. – Danack

+0

toute suggestion comment je peux suivre ce problème –

+0

Do 'filesize (" ThisFileDoesntExist.txt ");' - il donne le même message d'erreur. Soit le fichier que vous essayez de lire la taille de n'existe pas ou vous n'avez pas accès à celui-ci. – Danack

Répondre

1

Tout d'abord ImageMagick convert commande utilise en interne la commande gs de ghostscript et gs est plus rapide Il est donc toujours bon d'utiliser ghostscript si vous n'utilisez pas les fonctionnalités spécifiques d'ImageMagick. et l'autre chose est plutôt que de construire la commande par vous-même, je recommanderais d'utiliser une bibliothèque déjà écrite et testée pour éviter de perdre du temps à essayer de comprendre toutes les combinaisons d'une commande.

vous trouverez de bonnes bibliothèques packagist.org

ici une bibliothèque que j'ai écrit ce qui sera utile PdfLib qui lit votre question à l'avenir

$pdflib = new ImalH\PDFLib\PDFLib(); 
$pdflib->setPdfPath($pdf_file_path); 
$pdflib->setOutputPath($folder_path_for_images); 
$pdflib->setImageFormat(\ImalH\PDFLib\PDFLib::$IMAGE_FORMAT_PNG); 
$pdflib->setDPI(300); 
$pdflib->setPageRange(1,$pdflib->getNumberOfPages()); 
$pdflib->convert();