So installieren, testen, konvertieren und skalieren Sie PDF mit ImageMagick, Ghostscript, Windows Vista / 7 x64

8

Ich habe Probleme mit der Zusammenarbeit von ImageMagick und Ghostscript - alles scheint schwierig, von der Installation über das Testen bis hin zur tatsächlichen Verwendung der Software. Hat jemand irgendwelche Tipps?

    
Ben 14.07.2010, 04:19
quelle

2 Antworten

30

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.

    
Ben 30.11.2011, 04:30
quelle
6

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.

Imagick (die PHP-Erweiterung)

Zuerst benötigen Sie die PHP-Erweiterung. Es ist im Grunde ein Adapter zwischen PHP und den ImageMagick-Funktionen.

  • Wählen Sie eine Version von Ссылка
  • Laden Sie die Erweiterung herunter, die Ihrer PHP-Version in Architektur (wahrscheinlich 32-Bit), Thread-Sicherheit und Compiler (VC9 oder VC11) entspricht, siehe phpinfo
  • Kopieren Sie 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:

gebaut wurde
  • In Windows Explorer finden Sie unter Eigenschaften → Details der gebündelten CORE_RL_wand_.dll die Version von ImageMagick, für die diese Erweiterung erstellt wurde. (Sie sollten diese Informationen auch in phpinfo finden können.)
  • Laden Sie die genaue ImageMagick-Version herunter, zum Beispiel aus Ссылка (Danke an dieser Typ für den Link)
  • Kopieren Sie alle DLLs von ImageMagick ZIP in das gleiche Verzeichnis, in dem php5 (n) ts.dll (die PHP Engine für Apache)
  • ist

Es ist nicht notwendig zu installieren ImageMagick. Wenn Sie in Ihrem PATH einen inkompatiblen ImageMagick haben, kann die PHP-Erweiterung fehlschlagen.

Ghostscript

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:

  • Wenn in der Registrierung ein GS_DLL -Eintrag vorhanden ist, der auf den Pfad von gswin32.dll verweist, wird dieser verwendet und die Delegierten insgesamt ignoriert.
  • Ansonsten wird er seine "Delegierten" konsultieren. Es scheint ein hardcoded Fallback zu geben, aber Sie können es überschreiben, indem Sie delegates.xml neben php5(n)ts.dll bzw. convert.exe oder in ~\.magick .
  • setzen
  • Wenn die Zeichenfolge @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.
AndreKR 23.08.2015 05:56
quelle

Tags und Links