I'm trying to use ImageMagick in PHP to convert PDF to images. Initializing the constructor gives me a "delegate error, could not find the specified file".
Please note, running convert from command line does work. It successfully converts all pages of PDF into images per page.
Things I've tried:
Uninstalling ImageMagick and Ghostscript, rebooting, installing Ghostscript ( 32 ), rebooting, installing ImageMagick, rebooting
Adding path to Ghostscript folder to PATH variable in windows and reboot ( it's currently added when I check )
Running the same exact PHP script on a server where ImageMagick is properly configured and the error is not there - so the php script should not be the issue?
Let me know if there is more info I should provide. I've searched for solutions for the past 2 hours, all out of ideas now.
Thank you.
Also, I'm running on Windows 10, XAMPP.
delegates.xml in 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>
Error received:
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
}