]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/Api/BookExportApiController.php
Added force option for update-url command
[bookstack] / app / Http / Controllers / Api / BookExportApiController.php
1 <?php
2
3 namespace BookStack\Http\Controllers\Api;
4
5 use BookStack\Entities\Models\Book;
6 use BookStack\Entities\Tools\ExportFormatter;
7 use Throwable;
8
9 class BookExportApiController extends ApiController
10 {
11     protected $exportFormatter;
12
13     public function __construct(ExportFormatter $exportFormatter)
14     {
15         $this->exportFormatter = $exportFormatter;
16         $this->middleware('can:content-export');
17     }
18
19     /**
20      * Export a book as a PDF file.
21      *
22      * @throws Throwable
23      */
24     public function exportPdf(int $id)
25     {
26         $book = Book::visible()->findOrFail($id);
27         $pdfContent = $this->exportFormatter->bookToPdf($book);
28
29         return $this->download()->directly($pdfContent, $book->slug . '.pdf');
30     }
31
32     /**
33      * Export a book as a contained HTML file.
34      *
35      * @throws Throwable
36      */
37     public function exportHtml(int $id)
38     {
39         $book = Book::visible()->findOrFail($id);
40         $htmlContent = $this->exportFormatter->bookToContainedHtml($book);
41
42         return $this->download()->directly($htmlContent, $book->slug . '.html');
43     }
44
45     /**
46      * Export a book as a plain text file.
47      */
48     public function exportPlainText(int $id)
49     {
50         $book = Book::visible()->findOrFail($id);
51         $textContent = $this->exportFormatter->bookToPlainText($book);
52
53         return $this->download()->directly($textContent, $book->slug . '.txt');
54     }
55
56     /**
57      * Export a book as a markdown file.
58      */
59     public function exportMarkdown(int $id)
60     {
61         $book = Book::visible()->findOrFail($id);
62         $markdown = $this->exportFormatter->bookToMarkdown($book);
63
64         return $this->download()->directly($markdown, $book->slug . '.md');
65     }
66 }