You are here

MediaPdfThumbnailImagickManager.php in Media PDF Thumbnail 8.4

File

src/Manager/MediaPdfThumbnailImagickManager.php
View source
<?php

namespace Drupal\media_pdf_thumbnail\Manager;

use Drupal\Core\File\FileSystemInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Spatie\PdfToImage\Pdf;

/**
 * Class MediaPdfThumbnailImagickManager.
 *
 * @package Drupal\media_pdf_thumbnail\Manager
 */
class MediaPdfThumbnailImagickManager {

  /**
   * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
   */
  protected $logger;

  /**
   * @var \Drupal\Core\File\FileSystemInterface
   */
  protected $fileSystem;

  /**
   * MediaPdfThumbnailImagickManager constructor.
   *
   * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $loggerChannel
   * @param \Drupal\Core\File\FileSystemInterface $fileSystem
   */
  public function __construct(LoggerChannelFactoryInterface $loggerChannel, FileSystemInterface $fileSystem) {
    $this->logger = $loggerChannel
      ->get('Media PDF Thumbnail');
    $this->fileSystem = $fileSystem;
  }

  /**
   * @param $source
   * @param $target
   *
   * @return mixed|null
   */
  public function generateImageFromPDF($source, $target) {
    $directory = dirname($target);
    $this->fileSystem
      ->prepareDirectory($directory, [
      FileSystemInterface::CREATE_DIRECTORY,
      FileSystemInterface::MODIFY_PERMISSIONS,
    ]);
    try {
      $pdf = new Pdf($this->fileSystem
        ->realpath($source));
      $pdf
        ->setPage(1);
      return $pdf
        ->saveImage($target) ? $target : NULL;
    } catch (\Exception $e) {
      $this->logger
        ->error($e
        ->getMessage());
      return NULL;
    }
  }

}

Classes

Namesort descending Description
MediaPdfThumbnailImagickManager Class MediaPdfThumbnailImagickManager.