有没有一种方法可以将GhostScript捆绑在ImageMagick中,并仅重定向ImageMagick的路径到该软件包,以便我可以在用户的计算机上使用它,而不必正式“安装”它?
我找到了这个页面,但我不知道如何更改ImageMagick中的delegates.xml文件以使其正确运行。我猜我必须更改此行的某个部分:
<delegate decode="pdf" encode="eps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -sDEVICE=epswrite "-sOutputFile=%o" -- "%i"" />
但我不确定该怎么做——应该放在哪里,或者基于ImageMagick的位置,或其他什么?非常感谢任何帮助。
更新v1.2:我尝试将上面的委托更改为以下内容,并在命令行中使用可执行文件:
<delegate decode="pdf" encode="eps" mode="bi" command=""F:\ImageMagickTest\ImageMagick\gs\bin\gswin32c.exe" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -sDEVICE=epswrite "-sOutputFile=%o" -- "%i""/>
但是当我运行程序时,在命令提示符中出现以下错误:
Microsoft Windows XP [Version 5.1.2600]
(C) 版权所有 1985-2001 微软公司。
F:\Documents and Settings\Administrator>F:\ImageMagickTest\ImageMagick\convert.e
xe F:\ImageMagickTest\PDFs\Appointment.pdf F:\ImageMagickTest\ConvertedPDFs\Appo
intment.png
convert.exe: `%s' (%d) "F:/ImageMagickTest/ImageMagick/gs9.06/bin/gswin32c.exe"
-q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -d
EPSCrop -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -d
GraphicsAlphaBits=4 "-r72x72" "-sOutputFile=F:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/
magick-5996ZNQmVN7RFumY--0000001" "-fF:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-5
996r7pmg8XgvrNB" "-fF:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-5996yhTQgwoLswnn"
@ error/utility.c/SystemCommand/1890.
convert.exe: Postscript delegate failed `F:\ImageMagickTest\PDFs\Appointment.pdf
': No such file or directory @ error/pdf.c/ReadPDFImage/679.
convert.exe: no images defined `F:\ImageMagickTest\ConvertedPDFs\Appointment.png
' @ error/convert.c/ConvertImageCommand/3044.
在我看来,这似乎表明它没有找到文件“Appointment.pdf”。但是文件确实存在。我哪里理解有误?
为了好玩,这是从Windows资源管理器中获取的gs完整路径:
F:\ImageMagickTest\ImageMagick\gs\bin\gswin32c.exe
为了更有趣,这里有一个在Unity 3D应用程序中调用它的c#脚本(我没有收到任何错误):
string currDir = System.Environment.CurrentDirectory;
string convertPath = currDir + @"\ImageMagick\convert.exe";
string convertedDir = currDir + @"\ConvertedPDFs\";
string pdfFolder = currDir + @"\PDFs\";
string fileName = "Appointment";
string argumentForImageMagick;
argumentForImageMagick = pdfFolder + fileName + ".pdf" + " " + convertedDir + fileName + ".png";
ProcessStartInfo info = new ProcessStartInfo {Arguments = argumentForImageMagick , FileName = convertPath};
System.Diagnostics.Process.Start(info).WaitForInputIdle();
.....\bin\
。在Windows上,你要找的可执行文件名为gswin32c.exe
或gswin64c.exe
。 - Kurt Pfeifle@
字符,这些字符包围着你的路径。当你提供可执行文件的完整路径时,它不再是一个变量(就像@PSDeletage@
一样)。它应该读作... command=""F:\ImageMagickTest\ImageMagick\gs\bin\gswin32c.exe" ...
-- 此外,你肯定已经检查过这确实是你的Ghostscript可执行文件了吧? - Kurt Pfeifle