/**
  * __toString
  *
  * @return string
  */
 public function __toString()
 {
     return $this->document->getName() . ' - ' . $this->metadata->getName();
 }
예제 #2
0
 /**
  * generateThumbnail
  *
  * @param DocumentInterface $document
  * @param array             $dimension
  *
  * @return array|null|string
  */
 public function generateThumbnail(DocumentInterface $document, $dimension)
 {
     list($width, $height) = array_map('intval', explode('x', $dimension));
     $cacheFile = sprintf('%s/%s/%s/%s.png', $this->options['cache_path'], $dimension, $document->getNode()->getSlug(), $document->getSlug());
     if (!is_file($cacheFile)) {
         $size = new Box($width, $height);
         $mode = ImageInterface::THUMBNAIL_INSET;
         $absPath = $this->options['storage_path'] . DIRECTORY_SEPARATOR . (null !== $document->getThumbnail() ? $document->getThumbnail() : $document->getFilename());
         if (!is_file($absPath) || filesize($absPath) >= 100000000) {
             $cacheFile = $this->mimeTypeManager->getMimetypeImage($absPath, max([$width, $height]));
         } else {
             try {
                 if (pathinfo($absPath, PATHINFO_EXTENSION) === 'pdf') {
                     $absPath .= '[0]';
                 }
                 $imagick = new \Imagick($absPath);
                 $imagick->setCompression(Imagick::COMPRESSION_LZW);
                 $imagick->setResolution(72, 72);
                 $imagick->setCompressionQuality(90);
                 $image = new Image($imagick, new RGB(), new MetadataBag());
                 if (!is_dir(dirname($cacheFile))) {
                     mkdir(dirname($cacheFile), 0777, true);
                 }
                 $image->thumbnail($size, $mode)->save($cacheFile, array('quality' => 90));
             } catch (\Exception $e) {
                 $cacheFile = $this->mimeTypeManager->getMimetypeImage($this->options['storage_path'] . DIRECTORY_SEPARATOR . $document->getFilename(), max([$width, $height]));
             }
         }
     }
     return $cacheFile;
 }
예제 #3
0
 /**
  * getSonataThumbUrl
  *
  * @param DocumentInterface $document
  * @param mixed             $dimension
  * @param bool              $absolute
  *
  * @return string
  */
 public function getSonataThumbUrl(DocumentInterface $document, $dimension, $absolute = false)
 {
     return $this->router->generate('admin_erichard_dms_document_preview', array('document' => $document->getSlug(), 'node' => $document->getNode()->getSlug(), 'dimension' => $dimension), $absolute);
 }