From 95fc6d0e95250d932146a8c1e09fd76762e57be9 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Fri, 10 Dec 2010 14:30:41 +0000 Subject: [PATCH] --- inc/ws/DAO/class.ws.dao.book.php | 75 ++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/inc/ws/DAO/class.ws.dao.book.php b/inc/ws/DAO/class.ws.dao.book.php index 92d7364c7..49b6f5a94 100644 --- a/inc/ws/DAO/class.ws.dao.book.php +++ b/inc/ws/DAO/class.ws.dao.book.php @@ -457,19 +457,30 @@ class wsDAOBook extends extranetDAO { protected function fillIndexWithWords(&$index, $page, $ipage) { - $words = explode('\n', trim($ipage)); + $twords = explode("\n", trim($ipage)); - foreach($words as $worddatas) { - list($word, $count) = explode(',', $worddatas); + foreach($twords as $woadata) { + list($woa, $worddata) = explode(',', trim($woadata)); + list($total, $wordslist) = explode("\t", $worddata, 2); - if (!isset($index[$word])) { - $index[$word] = array('total' => 0, 'pages' => array()); + if (!isset($index[$woa])) { + $index[$woa] = array('total' => 0, 'words' => array()); } - if (!isset($index[$word]['pages'][$page])) { - $index[$word]['pages'][$page] = 0; + $index[$woa]['total'] += $total; + + $words = explode("\t", $wordslist); + + foreach($words as $word) { + list($wordwa, $count) = explode('$', $word, 2); + if (!isset($index[$woa]['words'][$wordwa])) { + $index[$woa]['words'][$wordwa] = array('total' => 0, 'pages' => array()); + } + if (!isset($index[$woa]['words'][$wordwa]['pages'][$page])) { + $index[$woa]['words'][$wordwa]['pages'][$page] = 0; + } + $index[$woa]['words'][$wordwa]['total'] += $count; + $index[$woa]['words'][$wordwa]['pages'][$page] += $count; } - $index[$word]['total'] += $count; - $index[$word]['pages'][$page] += $count; } } @@ -478,6 +489,45 @@ class wsDAOBook extends extranetDAO { $pages = $this->getPagesOfBook($book_id); } + public function compilePDF($book_id) + { + // Assemblage du pdf final + $document = $root . '/data/document.pdf'; + + $documents = array_unique($documents); + if (count($documents) == 1 && !$optimizepdf) { + copy($droot . '/' . $documents[0] . '/original.pdf', $document); + } else { + $liste = array(); + foreach($documents as $doc) { + $liste[] = $droot . '/' . $doc . '/original.pdf'; + } + $l = implode(' ', $liste); + $gs = new cubeCommandLine('gs', null, true); + $gs->setEnv('PATH', self::$path); + $gs->setEnv('GS_FONTPATH', '/home/typo/fonts'); + $gs->setArg('-dBATCH'); + $gs->setArg('-dNOPAUSE'); + $gs->setArg('-dNOPROMPT'); + $gs->setArg('-sOutputFile=' . $document); + $gs->setArg('-sDEVICE=pdfwrite'); + if ($optimizepdf) { + $gs->setArg('-dPDFSETTINGS=/ebook'); + $gs->setArg('-dColorConversionStrategy=/LeaveColorUnchanged'); + $gs->setArg('-dAutoRotatePages=/None'); + } else { + $gs->setArg('-dPDFSETTINGS=/default'); + } + $gs->setArg('f'); + $gs->setManualArg($l); + $gs->execute(); + // Si l'opération a échoué, on se contente de copier le premier fichier + if (!file_exists($document) || filesize($document) < 100 * 1024) { + copy($droot . '/' . $documents[0] . '/doc.pdf', $document); + } + } + } + public function compile($book_id, $version = 3, $complete = false) { if ($version == 3) { @@ -609,6 +659,13 @@ class wsDAOBook extends extranetDAO { } } + if ($book->parametres->pdf) { + // Si l'export PDF est activé, on compile le PDF + $this->compilePDF($book_id); + }else{ + // Sinon, on l'efface si il est présent + } + $this->touchCompile($book_id); return $res; -- 2.39.5