Hallo,
ich habe mit Hilfe dieser Extension mein Modul erweitert. Da ich einige Probleme beim einrichten hatte, möchte ich gerne an dieser Stelle meine Erfahrungen mitteilen.
Zunächst habe ich die Extension Thumbnify im Contao Backend installiert.
Dann in das eigene Modul eingebunden:
system/modules/eigenesModul.php
PHP-Code:
/*... Generate content element
*/
protected function compile()
{
$this->import('Thumbnify');
$images = array();
//...
//...
//...
$strFile = TL_ROOT.'/'.$images[($i+$j)]['singleSRC'];
//hier überprüfe ich das File ob es ein PDF ist, sicher ist sicher
if (mime_content_type($strFile) == 'application/pdf')
{
$arrSize = unserialize($this->size);
if ($arrSize[0] > 0) {
$objCell->pdflink = $images[($i+$j)]['singleSRC'];
// Thumbnail für das PDF wird erstellt
$strTarget = '/system/html' ;
$objThumbni = $this->Thumbnify->getThumb($images[($i+$j)]['singleSRC'], $arrSize[0],$arrSize[1], 'resize');
$objCell->pdfThumb = $objThumbni;
}
}
Inhalte der Strings sehen so aus:
$strFile = /var/www/XXX/XXX/tl_files/music_academy/da/unterverzeichnis1/utoo.pdf
$arrSize = array([0] =>200[1] =>200[2] =>'crop')
$images[($i+$j)][singleSRC] = tl_files/music_academy/da/unterverzeichnis1/utoo.pdf
In meinem Fall konnte ich nun das entsprechende Template anpassen und auf das Thumbnail zugreifen:
PHP-Code:
<a href="<?php echo $col->pdflink; ?>" title="<?php echo $col->pdflink; ?>" target="_blank"><?php echo $col->pdflink; ?></a>
<img src="<?php echo $col->pdfThumb; ?>"/><?php echo $col->pdfThumb; ?></a>
Probleme bekam ich dann allerdings, wenn ich in dem Verzeichnisnamen oder im Dateinamen Sonderzeichen hinzugefügt habe. (ß, Ü, ä, Ö, etc.) Die Funktion getThumb erstellt dann leider nichts... Ich habe die Datei erweitert mit:
PHP-Code:
public function getThumb($strFile, $intWidth, $intHeight, $strMode = 'box', $strTarget = null)
{
setlocale(LC_CTYPE, "en_US.UTF-8");
if (file_exists(TL_ROOT . '/' . $strFile))
evtl. mag tril das in seiner nächsten version auch einbauen. 
Dann wollte ich gerne den Mode angeben (crop, box, etc.) und hatte erwartet das ich den in Form eines Strings der Methode GetThumb mit übergebe und diese könnte dies umsetzen. Leider funktioniert das bei PDFs nicht. Da habe ich dann die Funktion getThumb zusätzlich für meine Bedürfnisse erweitert:
PHP-Code:
// generate if file does not exists or file is outdated
if (!file_exists(TL_ROOT . '/' . $strTarget) || $objFile->mtime > filemtime(TL_ROOT . '/' . $strTarget))
{
if ($this->executeProc(
'convert',
TL_ROOT . '/' . $objFile->value . '[0]',
'-'.$strMode,
$intWidth . 'x' . $intHeight,
'-gravity', 'center', '-extent', $intWidth . 'x' . $intHeight,
TL_ROOT . '/' . $strTarget))
{
return $strTarget;
}
}
Es müsste noch mal genau unterschieden werden welcher Mode gesetzt wurde und was die Convertfunktion des Systems erwartet, sodass die Werte die an die Funktion executeProc übergeben werden im vorfeld generiert werden...
Hoffe das hilft dem ein oder anderen.
Schöne Grüße
cybernaut