Die*_*nto 8 php pdf imagemagick ghostscript imagick
我正在使用imagick 3.0.1和phmagick(http://www.francodacosta.com/phMagick/download).无论如何,当我尝试将PDF转换为JPEG时,两者都给我同样的错误.
例如: Postscript委托失败`/ tmp/magick-bfxIrUJ5':没有这样的文件或目录@ error/pdf.c/ReadPDFImage/669
我正在使用Ghostcript-9.05(在/ usr/local/bin/gs上运行).还有ImageMagick-6.7.6-8(在/ usr/local/bin/convert上运行).
我已经检查了文件夹的权限(755).ImageMagick在Terminal工作得很好.
例如,我的PHP使用Imagick:
//use imagick
$im = new imagick( '/pdf/553571072.pdf' );
// convert to jpg
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setImageFormat('jpeg');
//write image on server
$im->writeImage('/jpg/553571072.jpg');
Run Code Online (Sandbox Code Playgroud)
顺便说一下,Imagick它出现在我的phpinfo()中.我正在使用linux/apache/amd64.
任何建议将受到高度赞赏!
Die*_*nto 17
好的,这要归功于Nuno Franco da Costa(http://www.francodacosta.com/)的帮助.
问题是我的GhostScript路径对于Shell来说是好的,但它对系统和PHP来说是错误的.要更正您应该将/usr/local/bin/gs
文件链接到/usr/bin/gs
.
从Shell执行以下操作:
[root@din ~]# convert -list configure | grep -i delegates
DELEGATES bzlib fontconfig freetype jpeg jng png tiff x11 xml zlib
Run Code Online (Sandbox Code Playgroud)
检查gs
文件是否已存在/usr/bin
.如果是,我们将创建它的备份.
如果没有,/usr/bin/gs
您可以跳过此步骤
[root@din ~]# ls -l /usr/bin/gs
-rwxr-xr-x 1 root root 6024 Sep 30 2010 /usr/bin/gs
[root@din ~]# mv /usr/bin/gs /usr/bin/gs.orig
Run Code Online (Sandbox Code Playgroud)
现在创建链接/usr/local/bin/gs
到/usr/bin/gs
[root@din ~]# sudo ln -s /usr/local/bin/gs /usr/bin
Run Code Online (Sandbox Code Playgroud)
那应该可以解决问题.非常感谢你们.
小智 5
我对@HelloWorld提出的"纯PHP解决方案" (谢谢!)的贡献在接受的答案的评论中做了一点修正:必须在扩展默认PATH之前添加变量名,这样
putenv( getenv('PATH') . ':/usr/local/bin' );
就行不通了,但是
putenv( 'PATH=' . getenv('PATH') . ':/usr/local/bin' );
会
*我的声誉不到50分,无法在正确的地方添加我的评论,所以我不得不创建一个新答案:-)
归档时间: |
|
查看次数: |
17239 次 |
最近记录: |