Es gibt viele großartige Drupal Module! Immer wieder bin ich erstaunt, wie viele Community Lösungen es bereits für Aufgaben gibt, für die ansonsten noch eine Lösung entwickelt werden müsste.
So auch im Falle einer PDF-Vorschau für ein PDF-Download (File-)Feld im Drupal CMS. Das Dateifeld sollte ausschließlich PDF-Dateien beinhalten von deren erster Seite jeweils ein Vorschaubild als Titel der Darstellung generiert werden sollte.
Nach kurzer Recherche stieß ich auf das Drupal Modul: pdfpreview.module
Es bietet einen entsprechenden Display Formatter für Dateifelder. Nach der Installation des Moduls (und seiner Abhängigkeiten) funktionierte auch fast alles auf Anhieb.
Inbetriebnahme
- Das Upload-Feld sollte auf pdf-Uploads eingeschränkt werden
- Die Feld-Anzeige ist auf den PDF Preview Formatter umzuschalten.
- Das ebenfalls benötigte imagemagick.module sollte ebenfalls konfiguriert werden, es muss aber nicht als Standard-Modul für die Bildverarbeitung gesetzt werden. Nach Anpassen der Einstellungen kann also z.B. wieder die GD-Lib gewählt werden.
Wenn nun serverseitig keine Hürden bestehen, wird die PDF-Vorschau bereits wie gewünscht angezeigt!
Allerdings gab es je nach Serverumgebung noch einige Herausforderungen zu bewältigen!
1. Convert-Befehl anpassen:
Die Darstellung der PDF-Dateivorschau war nicht gerade optimal. Da die PDFs teilweise transparenten Hintergrund hatten (was bei vielen Textdokumenten normal ist), habe ich den im Modul enthaltenen Convert-Befehl noch etwas modifiziert:
$args['background'] = '-background ' . escapeshellarg('white');
?>
return $output_dir . '/' . $file->fid . '-' . $filename . '.png';
?>
Das modifizierte Modul habe ich als Beispielimplementierung angehängt.
Zum Testen kann der convert-Befehl beispielsweise auch in der Linux Shell ausgeführt werden, das sieht dann so aus, wenn die PDF-Datei "my-source.pdf" heißt, sich im aktuellen Arbeitsverzeichnis befindet und das Ergebnis JPG in "my-preview.jpg" gespeichert werden soll:
convert my-source.pdf[0] -background white -flatten my-preview.jpg
2. Probleme mit I(mage)magick
Des weiteren gab es auf einigen Systemen ein Problem mit den nötigen Linux Bibliotheken. So benötigt Imagick zusätzlich ghostscript, um PDF-Dateien verarbeiten zu können und auch in den Konfigurationsangaben sind einige wichtige Tricks zu beachten. Da dies allerdings je nach System unterschiedlich ist, verweise ich hier auf die Beiträge, die mir beim Lösen dieser Probleme geholfen haben:
http://www.herikstad.net/2010/05/postscript-delegate-failed-for.html
http://stackoverflow.com/questions/12885200/imagick-issue-postscript-de…
Wenn Euch dieser Beitrag geholfen hat, freue mich mich auf Eure Beiträge. Wenn Ihr professionelle Unterstützung benötigt, wendet euch an die Drupal CMS Experten von DROWL.de.