Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ImageMagick + GhostScript
Forum PHP.pl > Forum > PHP
ShaggyAG
Witam,

Potrzebuję przekonwertować plik pdf do na img.
Wyczytałem ze najlepiej użyć do tego ImageMagick.
Zainstalowałem wszystko i działa ok do momentu gdy chcę otworzyć przy pomocy imagick plik pdf
  1. $fp_pdf = fopen('test.pdf', 'rb');
  2.  
  3. $img = new imagick(); // [0] can be used to set page number
  4. $img->readImageFile($fp_pdf);


Przy takiej próbie crashuje się apache.
Próbowałem reinstalować itp ale bez skutecznie.
Wyczytałem że trzeba jeszcze GhostScript.
Zainstalowałem GhostScript i przeinstalowałem ImageMagick - nie pomogło.

tutaj:
http://stackoverflow.com/questions/8624886...rsion-using-php
wyczytalem:
Cytat
ImageMagick uses GhostScript to process JPEGs, so you'd do better to exec GhostScript directly, which would be much more efficient and give you more control. It would also be only 1 exec statement, instead of playing around with the IMagick functions.

i

Cytat
Finally i have implemented everything via ghostscript console command (gs), result is excellent! speed is fast! very fast!


czyli jakoś się da smile.gif
Pytanie jak?
Próby wywołania exec('gs' ) nic nie dają(zero reakcji)
Czy coś źle zainstalowałem? Jak się do tego zabrać?
Pracuje na windows+ xampp.
Z góry dziękuje za pomoc.

LowiczakPL
to kod

  1. <?php
  2. $strona = 1;
  3. $im = new imagick("file.pdf[$strona]");
  4. $im->setImageFormat('jpg');
  5. header('Content-Type: image/jpeg');
  6. echo $im;
  7. ?>


a to jakaś biblioteka https://github.com/spatie/pdf-to-image
ShaggyAG
Każda próba odczytania pliku pdf za pomocą klasy imagick kończy sie crashem apache.
Kod który podałeś tez.
Bibliotekę sprawdzę.
udało mi się poprawnie zainstalować Ghostrscript i odpalić za pomoca exec()
Niestety kod który wygooglałem czyli
  1. ini_set('display_errors', 1);
  2. $pdf='test.pdf[0]';
  3. $quality=90;
  4. $res='300x300';
  5. $exportName="pdf_export_" . time();
  6. $exportPath=realpath(dirname(__FILE__))."/$exportName/fullres/%03d.jpg";
  7.  
  8. mkdir(realpath(dirname(__FILE__))."/$exportName");
  9. mkdir(realpath(dirname(__FILE__))."/$exportName/fullres");
  10.  
  11. exec("'gswin32c' '-dNOPAUSE' '-sDEVICE=jpeg' '-dUseCIEColor' '-dTextAlphaBits=4' '-dGraphicsAlphaBits=4' '-o$exportPath' '-r$res' '-dJPEGQ=$quality' '$pdf'",$output);
  12.  
  13. for($i=0;$i<count($output);$i++)
  14. echo($output[$i] .'<br/>');

tworzy folder pod plik ale niestety pusty.
Jeszcze go nie debugowałem ale jeżeli ktoś ma jakieś sugestię będę wdzięczny za pomoc smile.gif

LowiczakPL
Nie doczytałem że na windowsie to robisz, postaw sobie Virtualboxa i Linuxa i zobaczysz różnicę.

Ewentualnie powalcz z ustawieniami PHP, zwiększ limity, albo ściągnij inną wersję imagic może starszą.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.