Zum Inhalt springen

pdf mit GhostScript und GraphicsMagick

Erstellt am 19. Juni 2007 · 12 Antworten · letzte Antwort am 9. Februar 2011

Tags: Frage

knobocop ·

Hi,

ich habe ein sehr seltsames Problem mit GraphicsMagick 1.1.7 und GPL Ghostscript 8.57. Beide sind auf einem RedHat 3 Enterprise Linux System kompiliert und installiert und funktionieren. Nur das Typo3-Installtool behauptet vehement das Gegenteil. Es funktioniert das Verarbeiten aller Grafikformate bis auf pdf und ai.

Read PDF
There was no result from the ImageMagick operation
Below there's a dump of the ImageMagick commands executed:
/usr/local/bin/gm identify /var/www/html/typo3/sysext/install/imgs/pdf_from_imagemagick.pdf[0]

---

Read AI
There was no result from the ImageMagick operation
Below there's a dump of the ImageMagick commands executed:
/usr/local/bin/gm identify /var/www/html/typo3/sysext/install/imgs/typo3logotype.ai[0]

---

Gebe ich aber "/usr/local/bin/gm identify /var/www/html/typo3/sysext/install/imgs/pdf_from_imagemagick.pdf[0]" auf der Shell ein bekomme ich folgende Ausgabe:
/var/www/html/typo3/sysext/install/imgs/pdf_from_imagemagick.pdf PDF 595x842+0+0 DirectClass 8-bit 1.4m 0.010u 0:01

Und rufe ich "/usr/local/bin/gm convert -geometry 170x241! -colorspace RGB -quality 70 /var/www/html/typo3/sysext/install/imgs/pdf_from_imagemagick.pdf[0] /var/www/html/typo3temp/pics/install_read_pdf.jpg", habe ich in /var/www/html/typo3temp/pics/install_read_pdf.jpg das korrekte Ergebnisbild.

Wo kann nur das Problem liegen? GraphicsMagick selber läßt sich von Typo3 aus ja für alle anderen Grafikformate aufrufen und die Weitergabe von Befehlen von GraphicsMagick an Ghostscript funktioniert auf der Shell ja auch. Alle Ordner haben einen chmod von 777 und sind schreibbar. Getestet habe ich es mit Typo3 4.1.1 und 4.0.6.

Ich würde mich über jeden Hinweis freuen.

Und vor allem - warum wird bei ai und pdf "gm identify" aufgerufen und nicht "gm convert"?

Current configuration
GraphicsMagick enabled: 1
GraphicsMagick path: /usr/local/bin/ (1.1.7)
GraphicsMagick path/LZW: /usr/local/bin/ ()
Version 5/GraphicsMagick flag: gm

GDLib enabled: 1
GDLib using PNG: 0
GDLib 2 enabled: 1
IM5 effects enabled: -1 (Blurring/Sharpening with IM 5+)
Freetype DPI: 96 (Should be 96 for Freetype 2)
Mask invert: 0 (Should be set for some IM versions approx. 5.4+)

File Formats: gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai,eps
knobocop ·

In einer anderen Typo3-Installation mit ImageMagick und Ghostscript klappt das hervorragend. Das ganze läuft auf einem Strato Managed Server Linux. Allerdings hat das von vorne herein funktionert. Und wenn ich dort auf der Shell den identify Befehl aufrufe, kommt exakt dasselbe Ergebnis wie auf dem anderen Server.

Ich vermute mal, dass dem User unter dem der Apache Process läuft "apache" irgendein Recht irgendwo im System fehlt, so dass dieser ImageMagick nicht so nutzen kann, wie man es als root-User auf der Shell tut. Hier endet aber auch mein Linux-Wissen.

kuhbus ·

ich habe natürlich ghostscript installiert.

auf der kommandozeile gehts - im installtool kommt er nicht über das identify hinaus...

hm

habe einen PLESK server. kann das damit was zu tun haben?

knobocop ·

Plesk ist ein Administrations-Tools für Server und selber kein Server. Es sollte eigtl. nichts damit zu tun haben. Ich habe auf dem Server, wo das Problem auftritt kein Plesk.

sapiency ·

hat jemand eine andere Lösung gefunden als die beiden Formate aus der Liste zu löschen?

grüße

ps: das führt auch nur dazu, dass die Tests ausgelassen werden, die Meldung kommt trotzdem

sapiency ·

Problem gelöst,

ich hatte WITHOUTX11= yes eingestellt. Zuletzt hatte sich nur noch GTK20 geweigert neu zu kompilieren. Das lag daran, dass hierfür cairo mit x11 erforderlich war.

Da alle anderen Pakete (auch cairo, jedoch ohne x11) bereits aktualisiert waren gehe ich mal davon aus, dass das ganze an der fehlenden Unterstützung für X11 lag.

grüße

junges ·

Hi,

zusätzlich kannst Du mal prüfen, ob in der php.ini Einstellungen wie open_basedir gesetzt sind oder disable_functions gesetzt sind.

Gruß
junges

chrisisflat ·

Hallo zusammen,

ich reaktiviere mal diesen Thread, weil ich ein ähnliches Problem hatte und dafür auch eine Lösung finden konnte. Bei vielen Hostern (z.B. 1&1 Homepageserver) ist es nicht so ganz trivial ein eigenes GM oder IM dazu zu bewegen Ghostscript zu verwenden (zumindest bei 1&1 ist Ghostscript nicht drauf - IM mittlerweile schon), um PDFs und AIs zu lesen.

Dazu liest man überall das das nicht geht. Die typischen Screenshots auf denen im Installtool alles geht bis auf die letzten beiden Tests. Da ich für einen Kunden hinbekommen musste, das PDFs in der Dateiliste auch schön als Grafik im FE angezeigt werden, musste ich mir also etwas einfallen lassen.

Dazu muss man wissen, dass GM/IM Ghostscript verwenden, um PDF oder AI zu lesen. Schade also, dass der Provider kein Ghostscript auf den Server installiert hat. Die Hotline des Providers hat mir dann auch nur mitgeteilt, dass das nicht machbar ist - aber das war nicht die Antwort die ich brauchte.

Also hab ich mir erstmal ein statisch gelinktes graphicsmagick organisiert und auf dem Server entpackt, TYPO3 entsprechend konfiguriert, das es dieses verwendet anstelle des vorinstallierten IM. Im ersten Schritt hatte ich dann das gleiche Ergebnis, wie mit IM - die beiden letzten Tests scheitern. Wie ich dann in der Commandline festgestellt habe, findet GM das Ghostscript Executable GS nicht. Also ein Ghostscript heruntergesaugt, entpackt und mit ./configure und make gebaut, das Executable (gs) in das gleiche Verzeichnis wie gm kopiert und mit Ausführrechten für alle versehen. Tja leider auch kein Unterschied.
Also eine Date ~/.profile mit folgenden Inhalt erzeugt:

export PATH=${HOME}/tld.domain/graphicsmagick-1.1.6/bin:${PATH}

und siehe da, auf der Shell ging es nun ohne Probleme. Schade nur, dass der Webserver unter einem anderen Useraccount läuft, so das es in TYPO3 immernoch nicht ging. Den Pfad des Webserverusers zu ändern ist natürlich nicht möglich. Sackgasse? Provider sagt geht nicht, in vielen Foren steht geht nicht. Was nun?

Netterweise gibt es im Verzeichnis graphicsmagick-1.1.6/share/config eine Datei, die delegates.mgk heißt. Dort sind die Befehle hinterlegt für Aufrufe von externen Programmen, eben auch von Ghostscript. Allerdings geht gm davon aus, dass gs im Pfad ist, d.h. es wird immer nur "gs ....." aufgerufen. Ich habe sämtliche aufrufe mit kompletten Pfad versehen, also /mein/pfad/zu/gs - und siehe da, es fluppt.

Also zumindest auf einem 1&1 managed Server (und ich gehe mal davon aus, dass dieses Vorgehen auch bei anderen Providern funktioniert) ist es möglich auch PDFs und AIs von TYPO3 lesen zu lassen.

Vielleicht hilft das dem ein oder anderem von Euch....

Christian

knoob ·

Also ich hatte dasselbe Problem unter Windows 2008 (ja ich weiss bringt euch Linuxern nix) aber da man über die google suche als erstes auf diesen thread trifft, schreib ich es trotzdem für alle hin:

einzig bei den ghostscript-aktionen wird auf das C:\Windows\Temp verzeichnis zugegriffen (vom gm prozess, der die gs.dlls einbindet), der netzwerkdienst hat darauf aber keinen zugriff.

Jetzt könnte man entweder die Zugriffsrechte für den Netzwerkdienst anpassen, dafür sorgen, dass der Prozess unter einem anderen Account läuft, oder über eine Umgebungsvariable oder Konfigurationseinstellung dafür sorgen, dass C:\Temp und nicht C:\Windows\Temp verwendet wird.

et voilà!

tantebootsy ·

@chrisisflat: Vielen Dank für deinen Beitrag, hat mir sehr geholfen! Ich fasse die Vorgehensweise nochmals kurz zusammen:

1. Statisch gelinktes graphicsmagick (getestet mit 1.1.6) besorgen.
2. Im InstallTool dieses als zu verwendendes Bildverarbeitungsprogramm angeben.
3. Ghostscript besorgen (getestet mit 9.00).
4. In graphicsmagick-1.1.6/share/config die delegates.mgk alle Aufrufe mit "gs" mit absoluten Pfaden versehen.

Liebe Grüße,
Micha