2009-02-26 16 views
12

Sto tentando di convertire i file PDF in PNG. Funziona alla grande dalla riga di comando (ho installato GhostScript 8.64). Ma da PHP sto avendo un problema:ImageMagick/Imagick convertire PDF in JPG utilizzando l'API PHP nativa

codice:

$im = new Imagick($pdf_file); // this is where it throws the exception below 

uscita:

Fatal error: Uncaught exception ‘ImagickException’ with message ‘Postscript delegate failed `23_1235606503.pdf’: No such file or directory @ pdf.c/ReadPDFImage/612′ in get_thumbnail.php:93 
Stack trace: 
\#0 get_thumbnail.php(93): Imagick->__construct(’…’) 

ecc ecc

Non sono sicuro di quello che sto facendo sbagliato qui, ma ho il sospetto che abbia qualcosa a che fare con la mia configurazione del server da qualche parte. Io corro: Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

risposta

18

finalmente capito questo fuori. L'eseguibile GhostScript (gs) non si trovava nel percorso di ambiente di Apache. Era in /usr/local/bin. Anche se ho provato diversi modi per aggiungere /usr/local/bin al percorso, non ci sono riuscito. Ho finito per mettere un symlink per gs nel /usr/bin directory. Ora tutto funziona perfettamente.

+2

Come sapere qual è il percorso dell'ambiente Apache? –

+2

Eccellente! solo per aggiungere, creare il link simbolico come questo: sudo ln -s/usr/local/bin/gs/usr/bin/gs – Ondrej

+0

Continuando a ottenere 'Impossibile leggere l'errore del file' e questo l'ha risolto. Grazie fratello. –

-4

Lo sto facendo con successo. Ecco il codice che sto usando per fare la conversione. Stiamo usando questa soluzione commercialmente. So che questa domanda è stata là fuori per un po ', ma potrebbe ancora aiutarti.

//Convert PDF contract to image using ImageMagik and Ghostscript 
// NOTE: This will need to be change if running on Linux 
$source = $appDir."\\".$clientID."\\".$clientID.".pdf"; 
$dest = $appDir."\\".$clientID."\\".$clientID.".jpg"; 
//print("c:\\IM\\convert.exe $source $dest "); 
exec("c:\\IM\\convert.exe $source $dest "); 
+3

cmon bro chiede phpapi e tu raccomandare qualche exe ??? dammi una pausa –

+0

@CarlosBarbosa, 'convert.exe' è un binario incluso con la versione di Windows di ImageMagick (solo' convert' su * nix OS). Mentre sono d'accordo, questa non è la migliore risposta, è un modo per aggirare il problema che l'OP stava avendo. –

+0

Carlos ha ragione. – Dylan

5

non ho la "reputazione" sul StackOverflow per aggiungere un commento in linea sopra, ma c'è un passo in più ho dovuto eseguire per ottenere questo lavoro sul mio Mac con l'ultimo aggiornamento Sierra.

Quando si immette il comando:

sudo ln -s /usr/local/bin/gs /usr/bin/gs 

Sul Mac, è possibile ottenere l'errore "Operazione non consentita".

Apparentemente Apple ha apportato una modifica che la directory "bin" non è modificabile, a meno che non si disabiliti SIP (System Integrity Protection).

Così qui sono i passi da fare che:

  1. riavviare il Mac in modalità Recorvery riavviando il computer e tenendo premuto "Command + R" fino a quando appare il logo Apple sul vostro schermo.
  2. Scegliere Utilità> Terminal
  3. Nella finestra del terminale, digitare crutil disable e premere "Invio"
  4. riavvio del Mac.

Ho appena seguito questi passaggi e ora il mio Ghostscript funziona alla grande e ho convertito correttamente un PDF in JPG.

+1

Il comando del terminale dovrebbe essere '' 'csrutil disable''' – JoshOiknine

+0

Successivamente ho abilitato nuovamente System Integrity Protection e Ghostscript funziona ancora. – Jack70