2009-02-26 73 views
12

Tôi đang cố gắng chuyển đổi tệp PDF thành PNG. Nó hoạt động tốt từ dòng lệnh (Tôi đã cài đặt GhostScript 8.64). Nhưng từ PHP Tôi đang gặp một vấn đề:ImageMagick/Imagick chuyển đổi PDF sang JPG bằng cách sử dụng API PHP gốc

mã:

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

đầu ra:

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(’…’) 

vv vv

Tôi không chắc chắn những gì tôi đang làm sai ở đây, nhưng tôi nghi ngờ nó có cái gì đó để làm với cấu hình máy chủ của tôi ở đâu đó. Tôi đang chạy: Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

Trả lời

18

Cuối cùng figured this out. GhostScript thực thi (gs) không nằm trong đường dẫn môi trường của Apache. Đó là trong /usr/local/bin. Mặc dù tôi đã thử một số cách để thêm /usr/local/bin vào đường dẫn, tôi đã không thành công. Tôi đã kết thúc một liên kết tượng trưng cho gs trong số /usr/bin directory. Bây giờ mọi thứ hoạt động hoàn hảo.

+2

Cách biết đường dẫn môi trường apache là gì? –

+2

Tuyệt vời! chỉ cần thêm, tạo liên kết tượng trưng như thế này: sudo ln -s/usr/local/bin/gs/usr/bin/gs – Ondrej

+0

Tiếp tục nhận 'Không thể đọc lỗi tập tin' và điều này đã sửa nó. Cảm ơn bạn. –

-4

Tôi đang thực hiện thành công việc này. Đây là mã mà tôi đang sử dụng để thực hiện chuyển đổi. Chúng tôi đang sử dụng giải pháp này thương mại. Tôi biết câu hỏi này đã được ra khỏi đó một thời gian, nhưng nó vẫn có thể giúp bạn.

//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 anh ấy yêu cầu phpapi và u đề nghị một số exe ??? gimme a break –

+0

@CarlosBarbosa, 'convert.exe' là một nhị phân đi kèm với phiên bản windows của ImageMagick (chỉ là' chuyển đổi' trên các hệ điều hành * nix). Trong khi tôi đồng ý đây không phải là câu trả lời hay nhất, thì đó là cách giải quyết vấn đề mà OP đang gặp phải. –

+0

Carlos có một điểm. – Dylan

5

Tôi không có "danh tiếng" trên Stackoverflow để thêm một bình luận inline ở trên, nhưng có thêm một bước tôi phải thực hiện để làm việc này trên máy Mac của tôi với bản cập nhật mới nhất Sierra.

Khi bạn nhập lệnh:

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

Trên máy Mac, bạn có thể nhận được lỗi, "Hoạt động không được phép".

Rõ ràng Apple đã thay đổi thư mục "bin" không thể chỉnh sửa, trừ khi bạn tắt SIP (Bảo vệ toàn vẹn hệ thống).

Vì vậy, đây là các bước để thực hiện điều đó:

  1. Khởi động lại máy Mac của bạn vào recorvery Mode bằng cách khởi động lại máy tính của bạn và giữ phím "Ctrl + R" cho đến khi logo Apple xuất hiện trên màn hình của bạn.
  2. Bấm Utilities> Terminal
  3. Trong cửa sổ Terminal, gõ crutil disable và nhấn "Enter"
  4. Khởi động lại máy Mac của bạn.

Tôi vừa thực hiện các bước này và giờ Ghostscript của tôi hoạt động rất tốt và tôi đã chuyển thành công PDF thành JPG.

+1

Lệnh terminal phải là '' 'csrutil disable''' – JoshOiknine

+0

Sau đó, tôi bật lại tính năng Bảo vệ toàn vẹn hệ thống và Ghostscript vẫn hoạt động. – Jack70

Các vấn đề liên quan