Ich habe gerade die letzten drei Stunden damit verbracht, ImageMagick so zu spielen, dass es gut mit PHP für eine PDF-zu-JPG-Konvertierung funktioniert. Anstatt es selbst vor Ort zu dokumentieren, dachte ich mir, ich würde es hier aufschreiben, mit all den Schlagworten und Dingen, die ich vermasselt habe, so dass die nächsten Noobs etwas Zeit sparen können.
Getestet auf zwei Betriebssystemen, Windows 7 x64 und Vista x64, mit PHP 5.2.8 und Apache 2.2.11.
Sie werden Ghostscript und ImageMagick benötigen. Ich habe gs871w64.exe
und ImageMagick-6.6.3-0-Q16-windows-x64-dll.exe
.
Mache eine grundlegende Installation von ImageMagick (ich nenne es jetzt IM). Überprüfen Sie die Systempfadvariable, um sicherzustellen, dass Sie von überall aus IM-Nachrichten senden können. Es sollte auf das IM-Verzeichnis zeigen. Testen Sie die Installation mit dieser Zeile in cmd
: convert test.gif test.jpg
(vorausgesetzt, Sie haben test.gif
). Funktioniert OK.
Testen Sie eine PDF-Konvertierung ( convert test.pdf test.jpg
). Sie sollten eine (lange) Nachricht über "gswin32c.exe" und "Postscript-Delegat fehlgeschlagen" und "fehlenden Bilddateinamen" erhalten. Das bedeutet, dass IM keinen PDF-Übersetzer finden kann. Du brauchst Ghostscript.
Installiere Ghostscript (ich nenne es jetzt GS). Ich musste es aus irgendeinem Grund zweimal tun, bevor es dauerte. Fügen Sie der Systemvariablen die 'bin' Adresse im GS Ordner hinzu. Testen Sie die Installation mit gswin32 test.pdf
und Sie sehen, dass Ihre Datei im GS-Viewer angezeigt wird. Wichtiger Hinweis: gs funktioniert nicht in Windows ( 'gs' is not recognized as an internal or external command, operable program, or batch file.
). Sie müssen gswin32 verwenden.
Zurück zum IM-Test: convert test.pdf test.jpg
sollte jetzt funktionieren.
Nun zu PHP - schreibe dieses Script auf:
%Vor% Die 2>&1
verschiebt alle Fehler in die Standardausgabe Sie können Dinge besser diagnostizieren :). Nun kann Ihr PHP-Skript in der Eingabeaufforderung cmd ausgeführt werden, aber nichts passiert, wenn Sie es in einem Browser ausführen. Schlag deine Stirn und starte Apache neu.
pant Erschöpfend und wahrscheinlich elementar, ich weiß. Aber eine hoffentlich hilfreiche Zusammenfassung von ungefähr 20 Seiten halb hilfreicher Hinweise.
Steve hat bereits eine Anleitung zum Ausführen der -Befehlszeilen -Version von ImageMagick aus PHP bereitgestellt. Nachdem ich ähnliche Erfahrungen bei der Installation der Erweiterung -Version von ImageMagick gemacht habe, möchte ich ein wenig darauf eingehen, wie die verschiedenen Komponenten zusammenarbeiten.
Zuerst benötigen Sie die PHP-Erweiterung. Es ist im Grunde ein Adapter zwischen PHP und den ImageMagick-Funktionen.
php_imagick.dll
von der Erweiterung ZIP in das PHP-Erweiterungsverzeichnis Das ist jedoch nicht genug. Das php_imagick.dll
enthält keine ImageMagick-Funktionalität und die CORE_RL_...
DLLs, die mit der Erweiterung geliefert werden, sind nicht vollständig. Du wirst noch einige DLLs von einer ImageMagick-Version benötigen.
Theoretisch muss die Version nicht genau übereinstimmen, aber anscheinend wurde irgendwo zwischen ImageMagick 6.8.1 und 6.8.8 die Funktion MagickGetImageMatte
aus den DLLs entfernt, also ist der sicherste Weg, genau die gleiche ImageMagick Version zu finden dass die Imagick Erweiterung für:
Es ist nicht notwendig zu installieren ImageMagick. Wenn Sie in Ihrem PATH einen inkompatiblen ImageMagick haben, kann die PHP-Erweiterung fehlschlagen.
Dies gilt sowohl für die Befehlszeilenversion von ImageMagick ( convert
) als auch für die oben beschriebene PHP-Erweiterung.
Zum Lesen von Dateien der Postscript-Familie wird Ghostscript benötigt.
ImageMagick findet Ghostscript nach folgenden Schritten:
GS_DLL
-Eintrag vorhanden ist, der auf den Pfad von gswin32.dll
verweist, wird dieser verwendet und die Delegierten insgesamt ignoriert. delegates.xml
neben php5(n)ts.dll
bzw. convert.exe
oder in ~\.magick
. @PS_Delegate@
im Delegaten gefunden wird, wird sie durch gswin32c.exe
ersetzt und dann im PATH nach dieser EXE gesucht. Sie können diese Zeichenfolge durch den vollständigen Pfad zu gswin32c.exe
oder sogar gswin64c.exe
ersetzen, den ImageMagick aufrufen soll. Tags und Links 64bit pdf imagemagick ghostscript