X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a6633642232efd164d4708967ab59e498fbff896..00eedafbfdf2e60c7ffebb7e7ccf2a65ffa75b51:/app/Http/Controllers/Api/PageExportApiController.php diff --git a/app/Http/Controllers/Api/PageExportApiController.php b/app/Http/Controllers/Api/PageExportApiController.php index 7563092cb..ce5700c79 100644 --- a/app/Http/Controllers/Api/PageExportApiController.php +++ b/app/Http/Controllers/Api/PageExportApiController.php @@ -1,4 +1,6 @@ -exportFormatter = $exportFormatter; + $this->middleware('can:content-export'); } /** * Export a page as a PDF file. + * * @throws Throwable */ public function exportPdf(int $id) { $page = Page::visible()->findOrFail($id); $pdfContent = $this->exportFormatter->pageToPdf($page); + return $this->downloadResponse($pdfContent, $page->slug . '.pdf'); } /** * Export a page as a contained HTML file. + * * @throws Throwable */ public function exportHtml(int $id) { $page = Page::visible()->findOrFail($id); $htmlContent = $this->exportFormatter->pageToContainedHtml($page); + return $this->downloadResponse($htmlContent, $page->slug . '.html'); } @@ -42,6 +49,18 @@ class PageExportApiController extends ApiController { $page = Page::visible()->findOrFail($id); $textContent = $this->exportFormatter->pageToPlainText($page); + return $this->downloadResponse($textContent, $page->slug . '.txt'); } + + /** + * Export a page as a markdown file. + */ + public function exportMarkdown(int $id) + { + $page = Page::visible()->findOrFail($id); + $markdown = $this->exportFormatter->pageToMarkdown($page); + + return $this->downloadResponse($markdown, $page->slug . '.md'); + } }