Pimcore\Document\Adapter\Ghostscript::getPdf PHP Method

getPdf() public method

public getPdf ( null $path = null ) : null | string
$path null
return null | string
    public function getPdf($path = null)
    {
        if ($path) {
            $path = $this->preparePath($path);
        }
        if (!$path && $this->path) {
            $path = $this->path;
        }
        if (preg_match("/\\.?pdf\$/", $path)) {
            // only PDF's are supported
            return $path;
        }
        $message = "Couldn't load document " . $path . " only PDF documents are currently supported";
        Logger::error($message);
        throw new \Exception($message);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * @param null $path
  * @return null|string|void
  * @throws \Exception
  */
 public function getPdf($path = null)
 {
     if ($path) {
         $path = $this->preparePath($path);
     }
     $pdfPath = null;
     if (!$path && $this->path) {
         $path = $this->path;
     }
     try {
         // if the document is already an PDF, delegate the call directly to parent::getPdf() (Ghostscript)
         $pdfPath = parent::getPdf($path);
         return $pdfPath;
     } catch (\Exception $e) {
         // nothing to do, delegate to libreoffice
     }
     $pdfFile = PIMCORE_TEMPORARY_DIRECTORY . "/document-pdf-cache/document_" . md5($path . filemtime($path)) . "__libreoffice.pdf";
     if (!is_dir(dirname($pdfFile))) {
         File::mkdir(dirname($pdfFile));
     }
     $lockKey = "soffice";
     if (!file_exists($pdfFile)) {
         // a list of all available filters is here:
         // http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/config/fragments/filters
         $cmd = self::getLibreOfficeCli() . " --headless --nologo --nofirststartwizard --norestore --convert-to pdf:writer_web_pdf_Export --outdir " . escapeshellarg(PIMCORE_SYSTEM_TEMP_DIRECTORY) . " " . escapeshellarg($path);
         Model\Tool\Lock::acquire($lockKey);
         // avoid parallel conversions
         $out = Console::exec($cmd, PIMCORE_LOG_DIRECTORY . "/libreoffice-pdf-convert.log", 240);
         Model\Tool\Lock::release($lockKey);
         Logger::debug("LibreOffice Output was: " . $out);
         $tmpName = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/" . preg_replace("/\\." . File::getFileExtension($path) . "\$/", ".pdf", basename($path));
         if (file_exists($tmpName)) {
             File::rename($tmpName, $pdfFile);
             $pdfPath = $pdfFile;
         } else {
             $message = "Couldn't convert document to PDF: " . $path . " with the command: '" . $cmd . "'";
             Logger::error($message);
             throw new \Exception($message);
         }
     } else {
         $pdfPath = $pdfFile;
     }
     return $pdfPath;
 }