$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;
public function produceEpub()
{
Tools::logm('Starting to produce ePub 3 file');
+
+ try {
+
$content_start =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n"
$bookEnd = "</body>\n</html>\n";
$log = new Logger("wallabag", TRUE);
- $fileDir = CACHE;
$book = new EPub(EPub::BOOK_VERSION_EPUB3, DEBUG_POCHE);
$log->logLine("new EPub()");
$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 = "<h1> " . $this->bookTitle . "</h1>\n";
$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());
+ }
}
}
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);
}
$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());
+ }
}
}
{
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();
$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 = '<h1>' . $item['title'] . '</h1>';
$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());
+ }
}
}