download of document will alwasy return a pdf

This commit is contained in:
Uwe Steinmann 2022-12-13 16:28:28 +01:00
parent 51ff1e6c7c
commit fbecd128ce

View File

@ -520,6 +520,7 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
} /* }}} */ } /* }}} */
function documents_download($request, $response, $args) { /* {{{ */ function documents_download($request, $response, $args) { /* {{{ */
require_once "SeedDMS/Preview.php";
$dms = $this->container->dms; $dms = $this->container->dms;
$userobj = $this->container->userobj; $userobj = $this->container->userobj;
$settings = $this->container->config; $settings = $this->container->config;
@ -535,13 +536,36 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
if($document->getAccessMode($userobj) >= M_READ) { if($document->getAccessMode($userobj) >= M_READ) {
$lc = $document->getLatestContent(); $lc = $document->getLatestContent();
if($lc) { if($lc) {
if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) if($lc->getMimeType() == 'application/pdf') {
$filename = $document->getName(); if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType())
else $filename = $document->getName();
$filename = $document->getName().$lc->getFileType(); else
$file = $dms->contentDir . $lc->getPath(); $filename = $document->getName().$lc->getFileType();
if(!($fh = @fopen($file, 'rb'))) { $file = $dms->contentDir . $lc->getPath();
return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); if(!($fh = @fopen($file, 'rb'))) {
return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500);
}
$filesize = filesize($dms->contentDir . $lc->getPath());
} else {
$previewer = new SeedDMS_Preview_PdfPreviewer($settings->_cacheDir);
if($conversionmgr)
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters(isset($settings->_converters['pdf']) ? $settings->_converters['pdf'] : array());
if(!$previewer->hasPreview($lc))
$previewer->createPreview($lc);
if(!$previewer->hasPreview($lc)) {
$logger->log('Creating pdf preview failed', PEAR_LOG_ERR);
return $response->withJson('', 500);
} else {
$filename = $document->getName().".pdf";
$file = $previewer->getFileName($lc).".pdf";
$filesize = filesize($file);
if(!($fh = @fopen($file, 'rb'))) {
$logger->log('Creating pdf preview failed', PEAR_LOG_ERR);
return $response->withJson('', 500);
}
}
} }
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
@ -549,7 +573,7 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
->withHeader('Content-Description', 'File Transfer') ->withHeader('Content-Description', 'File Transfer')
->withHeader('Content-Transfer-Encoding', 'binary') ->withHeader('Content-Transfer-Encoding', 'binary')
->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"')
->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) ->withHeader('Content-Length', $filesize)
->withHeader('Expires', '0') ->withHeader('Expires', '0')
->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->withHeader('Pragma', 'no-cache') ->withHeader('Pragma', 'no-cache')