]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/Api/PageExportApiController.php
Merge branch 'markdown-export' of https://github.com/nikhiljha/BookStack-1 into nikhi...
[bookstack] / app / Http / Controllers / Api / PageExportApiController.php
1 <?php namespace BookStack\Http\Controllers\Api;
2
3 use BookStack\Entities\Models\Page;
4 use BookStack\Entities\Tools\ExportFormatter;
5 use Throwable;
6
7 class PageExportApiController extends ApiController
8 {
9     protected $exportFormatter;
10
11     public function __construct(ExportFormatter $exportFormatter)
12     {
13         $this->exportFormatter = $exportFormatter;
14     }
15
16     /**
17      * Export a page as a PDF file.
18      * @throws Throwable
19      */
20     public function exportPdf(int $id)
21     {
22         $page = Page::visible()->findOrFail($id);
23         $pdfContent = $this->exportFormatter->pageToPdf($page);
24         return $this->downloadResponse($pdfContent, $page->slug . '.pdf');
25     }
26
27     /**
28      * Export a page as a contained HTML file.
29      * @throws Throwable
30      */
31     public function exportHtml(int $id)
32     {
33         $page = Page::visible()->findOrFail($id);
34         $htmlContent = $this->exportFormatter->pageToContainedHtml($page);
35         return $this->downloadResponse($htmlContent, $page->slug . '.html');
36     }
37
38     /**
39      * Export a page as a plain text file.
40      */
41     public function exportPlainText(int $id)
42     {
43         $page = Page::visible()->findOrFail($id);
44         $textContent = $this->exportFormatter->pageToPlainText($page);
45         return $this->downloadResponse($textContent, $page->slug . '.txt');
46     }
47 }