No need to convert to PDF with LibreOffice, just convert to PNG

Exporting all pages of a document to a PDF is a waste of time. All we
need is a thumbnail of the first page anyway. Plus, reading that PDF
(even just the first page of it) into imagick is presumably much
slower than reading a simple PNG.

Signed-off-by: Tor Lillqvist <tml@collabora.com>
This commit is contained in:
Tor Lillqvist 2018-07-11 16:24:27 +03:00
parent e8bd72ebdc
commit 37c8ed4b5c
1 changed files with 9 additions and 9 deletions

View File

@ -43,24 +43,24 @@ abstract class Office extends Provider {
$tmpDir = \OC::$server->getTempManager()->getTempBaseDir(); $tmpDir = \OC::$server->getTempManager()->getTempBaseDir();
$defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId() . '/') . ' --headless --nologo --nofirststartwizard --invisible --norestore --convert-to pdf --outdir '; $defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId() . '/') . ' --headless --nologo --nofirststartwizard --invisible --norestore --convert-to png --outdir ';
$clParameters = \OC::$server->getConfig()->getSystemValue('preview_office_cl_parameters', $defaultParameters); $clParameters = \OC::$server->getConfig()->getSystemValue('preview_office_cl_parameters', $defaultParameters);
$exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath); $exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath);
shell_exec($exec); shell_exec($exec);
//create imagick object from pdf //create imagick object from png
$pdfPreview = null; $pngPreview = null;
try { try {
list($dirname, , , $filename) = array_values(pathinfo($absPath)); list($dirname, , , $filename) = array_values(pathinfo($absPath));
$pdfPreview = $dirname . '/' . $filename . '.pdf'; $pngPreview = $dirname . '/' . $filename . '.png';
$pdf = new \imagick($pdfPreview . '[0]'); $png = new \imagick($pngPreview . '[0]');
$pdf->setImageFormat('jpg'); $png->setImageFormat('jpg');
} catch (\Exception $e) { } catch (\Exception $e) {
unlink($absPath); unlink($absPath);
unlink($pdfPreview); unlink($pngPreview);
\OC::$server->getLogger()->logException($e, [ \OC::$server->getLogger()->logException($e, [
'level' => ILogger::ERROR, 'level' => ILogger::ERROR,
'app' => 'core', 'app' => 'core',
@ -69,10 +69,10 @@ abstract class Office extends Provider {
} }
$image = new \OC_Image(); $image = new \OC_Image();
$image->loadFromData($pdf); $image->loadFromData($png);
unlink($absPath); unlink($absPath);
unlink($pdfPreview); unlink($pngPreview);
if ($image->valid()) { if ($image->valid()) {
$image->scaleDownToFit($maxX, $maxY); $image->scaleDownToFit($maxX, $maxY);