6

PC と OSX で ImageMagick を使用して PDF を PNG に変換しようとしていますが、ソフトウェアを使用するコンピュータに GhostScript を実際にインストールできません。

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="&quot;F:\ImageMagickTest\ImageMagick\gs\bin\gswin32c.exe&quot; -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -sDEVICE=epswrite &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>

しかし、プログラムを実行すると、cmd プロンプトに次のエラーが表示されます。

Microsoft Windows XP [Version 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.

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();
4

5 に答える 5

1

管理者権限のないコンピューターで ImageMagick と GhostScript を使用しようとすると、同じ問題が発生しました (両方のポータブル バージョンを使用)。delegates.xml 内で GhostScript へのパスを手動で設定しようとするとエラーが発生し、隠し PDF ファイルを TIFF にバッチ処理しようとしました。

私が見つけた解決策は、PDF 固有の行だけでなく、delegates.xml ファイル内のすべてのインスタンスを"@PSDelegate"フル パスに置き換えることでした。&quot;C:\<path_to_exec>\gswin32c.exe&quot;この後、うまくいきました。

これはおそらく、GhostScript が他の形式にも使用されているためであり"@PSDelegate"、PDF ファイルの変換時に delegates.xml ファイル内の他のインスタンスに依存している可能性があります。

于 2015-01-09T09:35:42.580 に答える
0

私は同じ問題を抱えていましたが、答えはどれも役に立ちませんでした。32 ビット バージョンの ImageMagick と 64 ビット バージョンの GhostScript がインストールされていて、うまく動作しないことが判明しました。そのため、64 ビットの GhostScript を削除し、代わりに 32 ビット バージョンをインストールしました。delegates.xml のパスを削除した後、問題なく動作しました。

于 2016-11-10T15:19:11.533 に答える