echo 'error : ' . implode(', ', $error) . '<br />';
}
+ public static function getSVGPage($args) {
+
+ global $core;
+ $fluidbook = $args[0];
+ $page = $args[1];
+ $dao = new wsDAOBook($core->con);
+ $pages = $dao->getPagesOfBook($fluidbook);
+ $p = $pages[$page];
+ ob_clean();
+ header('Content-type: image/svg+xml');
+ $svg = wsDocument::getDir($p['document_id']) . '/html/p' . $p['document_page'] . '.svg';
+
+ $pdftocairo = new cubeCommandLine('pdftocairo');
+ $pdftocairo->setPath(CONVERTER_PATH);
+ $pdftocairo->setArg('f', $p['document_page']);
+ $pdftocairo->setArg('l', $p['document_page']);
+ $pdftocairo->setArg(null, '-svg');
+ //$pdftocairo->setArg(null, '-cropbox');
+ $pdftocairo->setArg(null, wsDocument::getDir($p['document_id']) . 'crop.pdf');
+ $pdftocairo->setArg(null, $svg);
+ $pdftocairo->execute();
+
+ wsDocument::cleanSVG($svg);
+
+ echo file_get_contents(wsDocument::getDir($p['document_id']) . '/html/p' . $p['document_page'] . '.svg');
+ exit;
+ }
+
}
$pdftocairo->setArg(null, $svgFile);
$pdftocairo->execute();
$this->addToLog($pdftocairo, true, $page);
- $this->_cleanSVG($svgFile);
+ $this->_cleanSVG($svgFile, $page);
$svgFile = $this->out . '/html/m' . $page . '.svg';
$mupdf->setArg('F', 'svg');
- $this->_cleanSVG($svgFile);
+ $this->_cleanSVG($svgFile, $page);
}
- protected function _cleanSVG($svgFile) {
+ public static function cleanSVG($svgFile) {
$svg = new DOMDocument();
$svg->preserveWhiteSpace = false;
$svg->load($svgFile);
$xpath->registerPhpFunctions('has_not_text');
$toDelete = array('//svg:defs/svg:clipPath',
'//svg:defs/svg:image',
+ '//svg:defs/svg:path',
'//svg:defs/svg:pattern',
+ '//svg:defs/svg:g[starts-with(@id, "surface")]//svg:path',
'/svg:svg/svg:g/svg:g[not(svg:use[@xlink:href])]',
+ //'/svg:svg/svg:g/svg:g[not(svg:use[starts-with(@xlink:href, "#glyph")])]',
'/svg:svg/svg:g/svg:path',
'/svg:svg/svg:g/svg:rect',
+ '//svg:use[starts-with(@xlink:href, "#image")]'
);
global $svglog;
}
}
}
+ file_put_contents($svgFile, $svg->saveXML());
+ return $svglog;
+ }
+
+ protected function _cleanSVG($svgFile, $page) {
+ $svglog = self::cleanSVG($svgFile);
$this->addToLog(implode("\n", $svglog), false, $page);
- file_put_contents($svgFile, $svg->saveXML());
+
}
protected function checkObjectsNumber($file, $maxObjects, $page) {
protected $additionalConfig = array();
protected $fontScale = 1;
protected $cache = array();
- protected $backgroundsPrefix = 'p';
+ protected $backgroundsPrefix = array();
protected $svg = true;
protected $config = array();
protected $assets = '';
$this->book = $this->daoBook->selectById($book_id);
$this->pages = $this->daoBook->getPagesOfBook($book_id);
- if ($this->book->parametres->mobileVersion == 'html5-images') {
- $this->backgroundsPrefix = 't';
- $this->svg = false;
+ switch ($this->book->parametres->mobileVersion) {
+ case 'html5-desktop':
+ $this->backgroundsPrefix = array('t', 'p');
+ $svg = true;
+ break;
+ case 'html5-images':
+ $this->backgroundsPrefix = array('t');
+ $svg = false;
+ break;
+ default:
+ $this->backgroundsPrefix = array('p');
+ $svg = true;
+ break;
}
$daoTheme = new wsDAOTheme($core->con);
foreach ($this->getResolutions() as $r) {
mkdir($this->vdir . '/data/background/' . $r, 0777, true);
}
- $srcPrefix = $this->backgroundsPrefix;
- if ($this->backgroundsPrefix == 'p') {
- $srcPrefix = 'h';
- }
+
$thumbs = array();
foreach ($this->pages as $page => $infos) {
$docdir = wsDocument::getDir($infos['document_id']);
}
foreach ($this->getResolutions() as $r) {
- $ok = $this->copy($docdir . 'html/' . $srcPrefix . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/data/background/' . $r . '/' . $this->backgroundsPrefix . $page . '.jpg');
+ foreach ($this->backgroundsPrefix as $backgroundsPrefix) {
+ $srcPrefix = $backgroundsPrefix;
+ if ($backgroundsPrefix == 'p') {
+ $srcPrefix = 'h';
+ }
+ $ok = $this->copy($docdir . 'html/' . $srcPrefix . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/data/background/' . $r . '/' . $backgroundsPrefix . $page . '.jpg');
if (!$ok && $r = 300) {
$this->maxRes = 150;
}
+ }
$this->copy(WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page'] . '.jpg', $this->vdir . '/data/thumbnails/p' . $page . '.jpg');
}