From 1cedeb681f84b2c9b17f4f8b88d4fffabb15d6c8 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Mon, 19 Jan 2015 23:19:09 +0100 Subject: (kind of) fix for #1011 and little corrections for PDF export --- inc/3rdparty/libraries/tcpdf/tcpdf.php | 10 +++++++-- inc/poche/WallabagEBooks.class.php | 38 +++++++++++++++++++++++++++------- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf.php b/inc/3rdparty/libraries/tcpdf/tcpdf.php index 78694a0e..70c1747a 100644 --- a/inc/3rdparty/libraries/tcpdf/tcpdf.php +++ b/inc/3rdparty/libraries/tcpdf/tcpdf.php @@ -2926,12 +2926,18 @@ class TCPDF { */ public function Error($msg) { // unset all class variables + $this->_destroy(true); + throw new Exception('TCPDF ERROR: '.$msg); + /* + + I had problems with the constants for some reason, so here we force + $this->_destroy(true); if (defined('K_TCPDF_THROW_EXCEPTION_ERROR') AND !K_TCPDF_THROW_EXCEPTION_ERROR) { die('TCPDF ERROR: '.$msg); } else { throw new Exception('TCPDF ERROR: '.$msg); - } + }*/ } /** @@ -6915,7 +6921,7 @@ class TCPDF { $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; $imsize = array($pw, $ph); } else { - $this->Error('[Image] Unable to get the size of the image: '.$file); + $this->Error('[Image] Unable to fetch image: '.$file); } } // file hash diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index bc40990b..d31939a1 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" @@ -155,6 +158,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,7 +175,7 @@ class WallabagMobi extends WallabagEBooks public function produceMobi() { - + try { Tools::logm('Starting to produce Mobi file'); $mobi = new MOBI(); $content = new MOBIFile(); @@ -197,6 +205,11 @@ class WallabagMobi extends WallabagEBooks // 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 +219,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(); @@ -229,18 +243,26 @@ class WallabagPDF extends WallabagEbooks $i = 1; Tools::logm('Adding actual content...'); foreach ($this->entries as $item) { + $tags = $this->wallabag->store->retrieveTagsByEntry($entry['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'); + } + catch (Exception $e) { + Tools::logm('TCPDF has encountered an error : '.$e->getMessage()); + $this->wallabag->messages->add('e', $e->getMessage()); + } } } -- cgit v1.2.3