X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=inc%2Fpoche%2FWallabagEBooks.class.php;h=ec1e4b2719d6b3e6abb8e423b27e3f626602805b;hb=ddbb2308a3302e2d2d6ff89f4dd3235f85d335e1;hp=bc40990b1e2cd90694e57ddd6b71df2412538c65;hpb=dc69d3e8d895c87f9d26c2d1309e40d6090d4c8d;p=github%2Fwallabag%2Fwallabag.git diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index bc40990b..ec1e4b27 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -33,7 +33,7 @@ class WallabagEBooks $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); $this->entries = array($entry); $this->bookTitle = $entry['title']; - $this->bookFileName = substr($this->bookTitle, 0, 200); + $this->bookFileName = str_replace('/', '_', substr($this->bookTitle, 0, 200)); $this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part) Tools::logm('Producing ebook from article ' . $this->bookTitle); break; @@ -81,6 +81,9 @@ class WallabagEpub extends WallabagEBooks public function produceEpub() { Tools::logm('Starting to produce ePub 3 file'); + + try { + $content_start = "\n" . "\n" @@ -93,7 +96,6 @@ class WallabagEpub extends WallabagEBooks $bookEnd = "\n\n"; $log = new Logger("wallabag", TRUE); - $fileDir = CACHE; $book = new EPub(EPub::BOOK_VERSION_EPUB3, DEBUG_POCHE); $log->logLine("new EPub()"); @@ -118,8 +120,12 @@ class WallabagEpub extends WallabagEBooks $book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, "PHP"); $book->addDublinCoreMetadata(DublinCore::CONTRIBUTOR, "wallabag"); - $cssData = "body {\n margin-left: .5em;\n margin-right: .5em;\n text-align: justify;\n}\n\np {\n font-family: serif;\n font-size: 10pt;\n text-align: justify;\n text-indent: 1em;\n margin-top: 0px;\n margin-bottom: 1ex;\n}\n\nh1, h2 {\n font-family: sans-serif;\n font-style: italic;\n text-align: center;\n background-color: #6b879c;\n color: white;\n width: 100%;\n}\n\nh1 {\n margin-bottom: 2px;\n}\n\nh2 {\n margin-top: -2px;\n margin-bottom: 2px;\n}\n"; - + /* + * Line not used but planned to be used + * + *$cssData = "body {\n margin-left: .5em;\n margin-right: .5em;\n text-align: justify;\n}\n\np {\n font-family: serif;\n font-size: 10pt;\n text-align: justify;\n text-indent: 1em;\n margin-top: 0px;\n margin-bottom: 1ex;\n}\n\nh1, h2 {\n font-family: sans-serif;\n font-style: italic;\n text-align: center;\n background-color: #6b879c;\n color: white;\n width: 100%;\n}\n\nh1 {\n margin-bottom: 2px;\n}\n\nh2 {\n margin-top: -2px;\n margin-bottom: 2px;\n}\n"; + */ + $log->logLine("Add Cover"); $fullTitle = "

" . $this->bookTitle . "

\n"; @@ -155,6 +161,11 @@ class WallabagEpub extends WallabagEBooks $book->finalize(); $zipData = $book->sendBook($this->bookFileName); Tools::logm('Ebook produced'); + } + catch (Exception $e) { + Tools::logm('PHPePub has encountered an error : '.$e->getMessage()); + $this->wallabag->messages->add('e', $e->getMessage()); + } } } @@ -167,13 +178,11 @@ class WallabagMobi extends WallabagEBooks public function produceMobi() { - + try { Tools::logm('Starting to produce Mobi file'); $mobi = new MOBI(); $content = new MOBIFile(); - $messages = new Messages(); // for later - Tools::logm('Filling metadata for Mobi...'); $content->set("title", $this->bookTitle); @@ -194,9 +203,17 @@ class WallabagMobi extends WallabagEBooks } $mobi->setContentProvider($content); + // the browser inside Kindle Devices doesn't likes special caracters either, we limit to A-z/0-9 + $this->bookFileName = preg_replace('/[^A-Za-z0-9\-]/', '', $this->bookFileName); + // we offer file to download $mobi->download($this->bookFileName.'.mobi'); Tools::logm('Mobi file produced'); + } + catch (Exception $e) { + Tools::logm('PHPMobi has encountered an error : '.$e->getMessage()); + $this->wallabag->messages->add('e', $e->getMessage()); + } } } @@ -206,15 +223,16 @@ class WallabagPDF extends WallabagEbooks { Tools::logm('Starting to produce PDF file'); - + @define ('K_TCPDF_THROW_EXCEPTION_ERROR', TRUE); + try { $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); Tools::logm('Filling metadata for PDF...'); $pdf->SetCreator(PDF_CREATOR); - $pdf->SetAuthor(''); + $pdf->SetAuthor('wallabag'); $pdf->SetTitle($this->bookTitle); - $pdf->SetSubject('TCPDF Tutorial'); - $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); + $pdf->SetSubject('Articles via wallabag'); + $pdf->SetKeywords('wallabag'); Tools::logm('Adding introduction...'); $pdf->AddPage(); @@ -226,21 +244,28 @@ class WallabagPDF extends WallabagEbooks $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true); - $i = 1; Tools::logm('Adding actual content...'); foreach ($this->entries as $item) { + $tags = $this->wallabag->store->retrieveTagsByEntry($item['id']); + foreach ($tags as $tag) { + $pdf->SetKeywords($tag['value']); + } $pdf->AddPage(); $html = '

' . $item['title'] . '

'; $html .= $item['content']; $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); - $i = $i+1; } // set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - - $pdf->Output($this->bookFileName . '.pdf', 'FD'); + + $pdf->Output('cache/' . $this->bookFileName . '.pdf', 'FD'); + } + catch (Exception $e) { + Tools::logm('TCPDF has encountered an error : '.$e->getMessage()); + $this->wallabag->messages->add('e', $e->getMessage()); + } } }