Bildkonvertierung mit ImageMagick reparieren

Seit Version 4.7 erstellt WordPress von einer hochgeladenen PDF-Datei einen Screenshot der ersten Seite. Hierzu muss ImageMagick sowie die zugehörige PHP-Extension installiert sein.

Auf einem Server mit Ubuntu 18 funktionierte es aber trotzdem noch nicht, obwohl beide Komponenten installiert waren. Daher habe ich zum Test versucht, eine Konvertierung direkt auf der Kommandozeile durchzuführen:

convert test-pdf.pdf test-pdf.png

Dabei bekam ich dann folgende Fehlermeldung angezeigt:

convert: not authorized `test-pdf.pdf' @ error/constitute.c/ReadImage/412.
convert: no images defined `test-pdf.png' @ error/convert.c/ConvertImageCommand/3210.

Nach etwas Recherche bin ich dann auf die Lösung für das Problem gestoßen. ImageMagick hat seit einigen Versionen eine Security-Policy umgesetzt, in der man einschränken kann, welche Dateiformat umgewandelt werden dürfen. Leider gehört PDF zu den Erweiterungen, die nicht standardmäßig unter Ubuntu 18 konvertiert werden können. Die Policies kann man aber in der Datei /etc/ImageMagick-6/policy.xml anpassen:

<policymap>
  <!-- ... -->
  <policy domain="path" rights="none" pattern="@*" />
  <!-- disable ghostscript format types -->
  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="none" pattern="PDF" />
  <policy domain="coder" rights="none" pattern="XPS" />
</policymap>

Hier kann man entweder die Zeile für das PDF-Format mit einem XML-Kommentar auskommentieren oder aber die rights auf read einstellen:

<policymap>
  <!-- ... -->
  <policy domain="path" rights="none" pattern="@*" />
  <!-- disable ghostscript format types -->
  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="read" pattern="PDF" />
  <policy domain="coder" rights="none" pattern="XPS" />
</policymap>

Nun kann man auf der Kommandozeile noch einmal testen, ob die Einstellung angenommen wurde (in diesem Fall gibt das convert Kommando keine Rückmeldung). Anschließend sollte die automatische Konvertierung beim Upload von PDF Dateien in die WordPress-Mediathek auch funktionieren.

Veröffentlicht von

Bernhard ist fest angestellter Webentwickler, entwickelt in seiner Freizeit Plugin, schreibt in seinem Blog über WordPress und andere Themen, treibt sich gerne bei den WP Meetups in Berlin und Potsdam herum und läuft nach Feierabend den ein oder anderen Halbmarathon.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.