Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Automatisch generierte PDF-Thumbnails

  1. #1
    Contao-Nutzer
    Registriert seit
    06.04.2020.
    Beiträge
    116

    Standard Automatisch generierte PDF-Thumbnails

    Hallo liebe Community,

    mich würde es interessieren, ob es eine Möglichkeit bzw. EXT gibt, die aus der ersten Seite einer PDF automatisch ein Vorschaubild generiert.

    Ich habe gesehen, dass es früher für die 3.x solche Exts gab, aber für heutige Versionen scheint es das nicht zu geben... Oder habe ich nur nicht gut genug gesucht?

    LG
    Florin

  2. #2

  3. #3
    Contao-Nutzer
    Registriert seit
    06.04.2020.
    Beiträge
    116

    Standard

    Ah, an Imagick habe ich mich bisher noch nicht rangetraut...
    Na dann ist das ja die perfekte Gelegenheit!

    Danke für den Vorschlag!

  4. #4
    Contao-Nutzer
    Registriert seit
    06.04.2020.
    Beiträge
    116

    Standard

    Also @zonky, vielen Dank nochmal für den Vorschlag, mit Imagemagick lies sich das ohne größere Probleme umsetzen.

    Für den Fall, dass jemand nach dem Gleichen sucht:

    Da man das Thumbnail zuordnen können soll, habe ich die Ursprungsdatei um ein "thumb.jpg" ergänzt und habe das Thumb dann durch ein image-template eingesetzt.

    Code:
    $imagick = new Imagick();
    $imagick->readImage($this->singleSRC);
    $path = substr($this->singleSRC, 0, (strrpos($this->singleSRC,'/') + 1));
    $file = substr($this->link, 0, strrpos($this->link, '.')) . '-thumb.jpg';
    $filePath = $path . $file;
    $imagick->writeImages($filePath, false);
    
    
    $objImageTemplate = new stdClass();
    \Controller::addImageToTemplate($objImageTemplate, [
    'singleSRC' => $filePath,
    'size' => $this->size,
    'alt' => $this->alt,
    ],
    \Config::get('maxImageWidth'), null, $objHoverFile);
    $this->insert('image_download', (array) $objImageTemplate);
    Den Code zum einsetzen des Bildpfades habe ich aus einem Template genommen, in dem ich eine zweite BildID als Bild einfügen musste... Falls da jemand einen anderen Weg kennt, bin ich auch offen für Vorschläge. Auf jeden Fall tut es so

    LG
    Florin

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.713
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von FlorinvV Beitrag anzeigen
    Für den Fall, dass jemand nach dem Gleichen sucht:
    leider gibt es noch kein richtiges "Kochbuch-Samelsurium" - aber hier https://community.contao.org/de/foru...tige-Tutorials einen Link ad den Post verewigen wäre sicher prima...

  6. #6
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Auch auf die Gefahr dass ich mich lächerlich mache, aber ich verstehe nicht wo dieser Code hinein müsste und wie der Ablauf ist.
    Könnt ihr das bitte erklären.
    ALso die "dumme" Frage ist wo passiert was mit welchem Ziel?

  7. #7
    Contao-Nutzer
    Registriert seit
    06.04.2020.
    Beiträge
    116

    Standard

    Relativ simpel, wenn man ein sich da ein bisschen reingefuchst hat:

    Als erstes erstelle ich ein neues Imagick...-Element, nenn ichs jetzt mal, und lasse davon die Datei auslesen, die als Download-Quelle ausgewählt wurde. Eine kleine Korrektur meinerseits, mit der [0] am Ende wähle ich nur die erste Seite aus, ansonsten erstellt es von allen Seiten einer PDF Bilder.

    Code:
    $imagick = new Imagick();
    $imagick->readImage($this->singleSRC . '[0]');
    Danach erstelle ich aus dem Pfad der Quelldatei den Pfad und Namen des Thumbnails, damit man das Bild zuordnen kann. Der erstellte Pfad + Name wird dann von Imagick als Bild abgespeichert.

    Code:
    $path = substr($this->singleSRC, 0, (strrpos($this->singleSRC,'/') + 1));
    $file = substr($this->link, 0, strrpos($this->link, '.')) . '-thumb.jpg';
    $filePath = $path . $file;
    $imagick->writeImages($filePath, false);
    Ich habe die ganze Sache im normalen ce_download.html5 Template eingerichtet und das Imagick kann dabei einfach direkt unter dem block('content') stehen.

    Den Code, um das Bild dann mit dem image-template auszugeben habe ich so verstanden (Bitte korrigieren, wenn ich Unsinn schreibe)

    Hier füge ich die Daten von meinem Bild in einen Array. Ich habe per dca noch Bildgröße und Alt-Text zum Download-Element hinzugefügt.
    Code:
    $objImageTemplate = new stdClass();
    \Controller::addImageToTemplate($objImageTemplate, [
    'singleSRC' => $filePath,
    'size' => $this->size,
    'alt' => $this->alt,
    ],
    Über die obere Zeile bin ich nicht ganz sicher, ob man die hier braucht, muss ich ganz ehrlich sagen...
    In der zweiten Zeile füge ich auf jeden Fall den Array in das image-Template ein, hier bei mir image_download, weil ich das Bild ein bisschen anpassen musste, und gebe damit das Template auch direkt mit aus.
    Code:
    \Config::get('maxImageWidth'), null, $objHoverFile);
    $this->insert('image_download', (array) $objImageTemplate);
    Das setzt du einfach dahin, wo dein Bild sein soll.

    Mehr gibt es dazu eigentlich nicht zu sagen... Ich bin noch hingegangen und habe dem Downloadelement eine entsprechende Checkbox gegeben, mit dem man das Thumbnail und eine Subpalette mit den Bildeinstellungen öffnen kann, ist aber nicht Pflicht

    LG
    Florin

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •