Я пытаюсь использовать ImageMagick в PHP для преобразования PDF в изображения.Инициализация конструктора дает мне «делегатскую ошибку, не удалось найти указанный файл».
Обратите внимание, что выполнение convert из командной строки работает.Он успешно конвертирует все страницы PDF в изображения на страницу.
Вещи, которые я пробовал:
Удаление ImageMagick и Ghostscript, перезагрузка, установка Ghostscript (32), перезагрузка, установка ImageMagick, перезагрузка
Добавление пути к папке Ghostscript в переменную PATH в Windows и перезагрузка (в настоящее время она добавляется, когда я проверяю)
Запуск точно такого же PHP-скрипта на сервере, где ImageMagick правильнонастроен, а ошибки нет - так что php-скрипт не должен быть проблемой?
Дайте мне знать, если есть дополнительная информация, которую я должен предоставить.Я искал решения в течение последних 2 часов, и все из идей сейчас.
Спасибо.
Кроме того, я работаю на Windows 10, XAMPP.
Delegates.xml в ImageMagick
<?xml version="1.0"?>
<!DOCTYPE delegatemap [
<!ELEMENT delegatemap (delegate)+>
<!ELEMENT delegate (#PCDATA)>
<!ATTLIST delegate decode CDATA #IMPLIED>
<!ATTLIST delegate encode CDATA #IMPLIED>
<!ATTLIST delegate mode CDATA #IMPLIED>
<!ATTLIST delegate spawn CDATA #IMPLIED>
<!ATTLIST delegate stealth CDATA #IMPLIED>
<!ATTLIST delegate thread-support CDATA #IMPLIED>
<!ATTLIST delegate command CDATA #REQUIRED>
]>
<!--
Delegate command file.
Commands which specify
decode="in_format" encode="out_format"
specify the rules for converting from in_format to out_format These
rules may be used to translate directly between formats.
Commands which specify only
decode="in_format"
specify the rules for converting from in_format to some format that
ImageMagick will automatically recognize. These rules are used to
decode formats.
Commands which specify only
encode="out_format"
specify the rules for an "encoder" which may accept any input format.
For delegates other than ps:alpha, ps:color, ps:mono, and mpeg-encode the
substitution rules are as follows:
%i input image filename
%o output image filename
%u unique temporary filename
%# input image signature
%b image file size
%c input image comment
%g image geometry
%h image rows (height)
%k input image number colors
%l image label
%m input image format
%p page number
%q input image depth
%s scene number
%w image columns (width)
%x input image x resolution
%y input image y resolution
-->
<delegatemap>
<delegate decode="bpg" command="cmd.exe /c ("bpgdec" -b 16 -o "%o.png" "%i") & (move "%o.png" "%o" >nul)"/>
<delegate decode="png" encode="bpg" command=""bpgenc" -b 12 -q %~ -o "%o" "%i""/>
<delegate decode="browse" stealth="True" spawn="True" command="cmd.exe /c start "" http://www.imagemagick.org/"/>
<delegate decode="dng:decode" stealth="True" command="dcraw.exe -6 -W -O "%u.ppm" "%i""/>
<delegate decode="dot" command="dot -Tps "%i" -o "%o""/>
<delegate decode="dvi" command="dvips -q -o "%o" "%i""/>
<delegate decode="edit" stealth="True" command="notepad "%o""/>
<delegate decode="eps" encode="pdf" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -sDEVICE=pdfwrite "-sOutputFile=%o" -- "%i""/>
<delegate decode="eps" encode="ps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=ps2write "-sOutputFile=%o" -- "%i""/>
<delegate decode="hpg" command="hp2xx -q -m eps -f "%o" "%i""/>
<delegate decode="hpgl" command="hp2xx -q -m eps -f "%o" "%i""/>
<delegate decode="htm" command="html2ps -U -o "%o" "%i""/>
<delegate decode="html" command="html2ps -U -o "%o" "%i""/>
<delegate decode="jxr" command="cmd.exe /c (move "%i" "%i.jxr" >nul) & ("JXRDecApp.exe" -i "%i.jxr" -o "%o.pnm") & (move "%i.jxr" "%i" >nul) & (move "%o.pnm" "%o" >nul)"/>
<delegate decode="mpeg:decode" command=""ffmpeg.exe" -nostdin -v -1 -i "%i" -vframes %S -vcodec pam -an -f rawvideo -y "%u.pam""/>
<delegate decode="pcl:cmyk" stealth="True" command=""pcl6.exe" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate decode="pcl:color" stealth="True" command=""pcl6.exe" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ppmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate decode="pcl:mono" stealth="True" command=""pcl6.exe" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pbmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate decode="pdf" encode="eps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -sDEVICE=eps2write -sPDFPassword="%a" "-sOutputFile=%o" -- "%i""/>
<delegate decode="pdf" encode="ps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=ps2write -sPDFPassword="%a" "-sOutputFile=%o" -- "%i""/>
<delegate decode="pgp" command="pgpv -fq "%i""/>
<delegate decode="png" encode="launch" spawn="True" mode="encode" command="imdisplay "%i"" />
<delegate decode="png" encode="show" spawn="True" mode="encode" command="imdisplay "%i"" />
<delegate decode="png" encode="win" spawn="True" mode="encode" command="imdisplay "%i"" />
<delegate decode="pnm" encode="ilbm" mode="encode" command="ppmtoilbm -24if "%i" > "%o""/>
<delegate decode="pnm" encode="jxr" command="cmd.exe /c (move "%i" "%i.pnm" >nul) & ("JXREncApp.exe" -i "%i.pnm" -o "%o.jxr") & (move "%i.pnm" "%i" >nul) & (move "%o.jxr" "%o" >nul)"/>
<delegate decode="pnm" encode="wdp" command="cmd.exe /c (move "%i" "%i.pnm" >nul) & ("JXREncApp.exe" -i "%i.pnm" -o "%o.jxr") & (move "%i.pnm" "%i" >nul) & (move "%o.jxr" "%o" >nul)"/>
<delegate decode="ps:alpha" stealth="True" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
<delegate decode="ps:cmyk" stealth="True" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
<delegate decode="ps:color" stealth="True" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pnmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
<delegate decode="ps" encode="eps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=eps2write "-sOutputFile=%o" -- "%i""/>
<delegate decode="ps" encode="pdf" mode="bi" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pdfwrite "-sOutputFile=%o" -- "%i""/>
<delegate decode="ps:mono" stealth="True" command=""@PSDelegate@" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pnmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
<delegate decode="shtml" command="html2ps -U -o "%o" "%i""/>
<delegate decode="svg" command=""rsvg-convert" -o "%o" "%i""/>
<!-- Remove the extra space in - -export in the line below when you want to use inkscape -->
<!--<delegate decode="svg:decode" stealth="True" command=""inkscape" "%s" - -export-eps="%s" - -export-dpi="%s" - -export-background="%s" - -export-background-opacity="%s" > "%s" 2>&1"/>-->
<delegate decode="wdp" command="cmd.exe /c (move "%i" "%i.jxr" >nul) & ("JXRDecApp.exe" -i "%i.jxr" -o "%o.pnm") & (move "%i.jxr" "%i" >nul) & (move "%o.pnm" "%o" >nul)"/>
<delegate decode="xps:cmyk" stealth="True" command=""gxps.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate decode="xps:color" stealth="True" command=""gxps.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pnmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate decode="xps:mono" stealth="True" command=""gxps.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pbmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
<delegate encode="mpeg:encode" stealth="True" command=""ffmpeg.exe" -nostdin -v -1 -i "%M%%d.jpg" "%u.%m""/>
</delegatemap>
Ошибка Получено:
object(ImagickException)#805 (7) {
["message":protected]=>
string(95) "PDFDelegateFailed `The system cannot find the file specified.
' @ error/pdf.c/ReadPDFImage/801"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(415)
["file":protected]=>
string(70) "D:\xampp\htdocs\pdfshare\wp-content\plugins\pdfshare\lib\class.pdf.php"
["line":protected]=>
int(57)
["trace":"Exception":private]=>
array(6) {
[0]=>
array(6) {
["file"]=>
string(70) "D:\xampp\htdocs\pdfshare\wp-content\plugins\pdfshare\lib\class.pdf.php"
["line"]=>
int(57)
["function"]=>
string(11) "__construct"
["class"]=>
string(7) "Imagick"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
string(62) "D:\xampp\htdocs\pdfshare\wp-content\uploads\2019\05\2А-74.pdf"
}
}
[1]=>
array(6) {
["file"]=>
string(65) "D:\xampp\htdocs\pdfshare\wp-content\plugins\pdfshare\inc\ajax.php"
["line"]=>
int(94)
["function"]=>
string(15) "generate_images"
["class"]=>
string(12) "PDFShare_PDF"
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[2]=>
array(4) {
["file"]=>
string(54) "D:\xampp\htdocs\pdfshare\wp-includes\class-wp-hook.php"
["line"]=>
int(286)
["function"]=>
string(30) "PDFShare\AJAX\upload_pdf_entry"
["args"]=>
array(1) {
[0]=>
string(0) ""
}
}
[3]=>
array(6) {
["file"]=>
string(54) "D:\xampp\htdocs\pdfshare\wp-includes\class-wp-hook.php"
["line"]=>
int(310)
["function"]=>
string(13) "apply_filters"
["class"]=>
string(7) "WP_Hook"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(0) ""
[1]=>
array(1) {
[0]=>
string(0) ""
}
}
}
[4]=>
array(6) {
["file"]=>
string(47) "D:\xampp\htdocs\pdfshare\wp-includes\plugin.php"
["line"]=>
int(465)
["function"]=>
string(9) "do_action"
["class"]=>
string(7) "WP_Hook"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
array(1) {
[0]=>
string(0) ""
}
}
}
[5]=>
array(4) {
["file"]=>
string(48) "D:\xampp\htdocs\pdfshare\wp-admin\admin-ajax.php"
["line"]=>
int(167)
["function"]=>
string(9) "do_action"
["args"]=>
array(1) {
[0]=>
string(33) "wp_ajax_pdfshare_upload_pdf_entry"
}
}
}
["previous":"Exception":private]=>
NULL
}