if ($this->CropAndCut()) {\r
$this->getInfos($this->cropped, true);\r
}\r
- //$this->extractFonts();\r
$this->getLinksAndTexts();\r
}\r
\r
$fwstk->execute();\r
$this->addToLog($fwstk);\r
\r
- /*$fwstk = new cubeCommandLine('fwstk');\r
- $fwstk->setPath(CONVERTER_PATH);\r
- $fwstk->setArg('--input ' . $this->cropped);\r
- $fwstk->setArg('--layout ' . $this->html . 'p%d.layout');\r
- $fwstk->setArg('--cmaps ' . $this->html);\r
- $fwstk->setArg('--fonts' . $this->out . 'fonts/web/');\r
- $fwstk->execute();\r
- $this->addToLog($fwstk);*/\r
+ /* $fwstk = new cubeCommandLine('fwstk');\r
+ $fwstk->setPath(CONVERTER_PATH);\r
+ $fwstk->setArg('--input ' . $this->cropped);\r
+ $fwstk->setArg('--layout ' . $this->html . 'p%d.layout');\r
+ $fwstk->setArg('--cmaps ' . $this->html);\r
+ $fwstk->setArg('--fonts' . $this->out . 'fonts/web/');\r
+ $fwstk->execute();\r
+ $this->addToLog($fwstk); */\r
}\r
\r
public function makeMiniShot($page) {\r
$this->makeShotPNM($page, 'html/h' . $r . '-', $r, $q, 4, null, false);\r
$this->makeShotPNM($page, 'html/t' . $r . '-', $r, $q, 4, null, true);\r
}\r
+\r
+ $this->makeSVGFile($page);\r
+ }\r
+\r
+ public function makeSVGFile($page) {\r
+ $svgFile = $this->out . '/html/p' . $page . '.svg';\r
+ $svgzFile = $this->out . '/html/p' . $page . '.svgz';\r
+\r
+ $pdf2svg = new cubeCommandLine('pdf2svg');\r
+ $pdf2svg->setPath(CONVERTER_PATH);\r
+ $pdf2svg->setArg(null, $this->cropped);\r
+ $pdf2svg->setArg(null, $svgFile);\r
+ $pdf2svg->setArg(null, $page);\r
+ $pdf2svg->execute();\r
+ $this->addToLog($pdf2svg, true, $page);\r
+\r
+ $svg = new DOMDocument();\r
+ $svg->preserveWhiteSpace=false;\r
+ $svg->load($svgFile);\r
+\r
+ // Operations to delete \r
+ $xpath = new DOMXPath($svg);\r
+ $xpath->registerNamespace('svg', 'http://www.w3.org/2000/svg');\r
+ $xpath->registerNamespace('xlink', 'http://www.w3.org/1999/xlink');\r
+ $xpath->registerNamespace("php", "http://php.net/xpath");\r
+ $xpath->registerPhpFunctions('has_not_text');\r
+ $toDelete = array('//svg:defs/svg:clipPath',\r
+ '//svg:defs/svg:image',\r
+ '//svg:defs/svg:pattern',\r
+ '/svg:svg/svg:g/svg:g[not(svg:use[@xlink:href])]',\r
+ '/svg:svg/svg:g/svg:path'\r
+ );\r
+\r
+ global $svglog;\r
+ $svglog = array('XPATH : ' . print_r($xpath, true));\r
+ foreach ($toDelete as $q) {\r
+ $list = $xpath->query($q);\r
+ $svglog[] = "Evaluate xpath query " . $q;\r
+ $svglog[] = 'Give ' . $list->length . ' results';\r
+ $svglog[] = 'Deleting Nodes in ' . print_r($list, true);\r
+ foreach ($list as $node) {\r
+\r
+ /* @var $node DOMNode */\r
+ $parent = $node->parentNode;\r
+ $parent->removeChild($node);\r
+ }\r
+ }\r
+\r
+ $this->addToLog(implode("\n", $svglog), false, $page);\r
+ file_put_contents($svgFile, $svg->saveXML());\r
}\r
\r
protected function checkObjectsNumber($file, $maxObjects, $page) {\r
$pdf2swf->setArg('set jpegquality', $quality);\r
$pdf2swf->setArg('set disablelinks');\r
$pdf2swf->setArg('set dots');\r
- /*if(file_exists($this->rgb)){\r
- $pdf2swf->setArg(null, $this->rgb);\r
- }else{*/\r
- $pdf2swf->setArg(null, $this->cropped);\r
+ /* if(file_exists($this->rgb)){\r
+ $pdf2swf->setArg(null, $this->rgb);\r
+ }else{ */\r
+ $pdf2swf->setArg(null, $this->cropped);\r
//}\r
$pdf2swf->setArg('output', $this->out . $prefix . '%.swf');\r
$pdf2swf->execute();\r
protected $cssOneWidth;
protected $cssOneHeight;
protected $cssScale;
+ protected $cssSVGScale = 0.75;
protected $optimalWidth = 567;
protected $optimalHeight = 709;
protected $additionalConfig = array();
protected $fontScale = 1;
protected $cache = array();
protected $backgroundsPrefix = 'p';
+ protected $svg = true;
function __construct($book_id) {
global $core;
if ($this->book->parametres->mobileVersion == 'html5-images') {
$this->backgroundsPrefix = 't';
+ $this->svg = false;
}
$daoTheme = new wsDAOTheme($core->con);
$this->cssOneWidth = $this->width * $this->cssOneScale;
$this->cssOneHeight = $this->height * $this->cssOneScale;
- $this->scale = 10;
+ $this->scale = 1;
if ($this->book->parametres->zoomMode == 1) {
$this->multiply = $this->pdf2htmlRatio * $this->scale * $this->cssOneScale;
} else {
}
protected function writeImages() {
-
foreach (self::$resolutions as $r) {
mkdir($this->vdir . '/data/background/' . $r, 0777, true);
}
+ if ($this->backgroundsPrefix == 'p') {
+ $srcPrefix = 'h';
+ }
foreach ($this->pages as $page => $infos) {
+ if ($this->svg) {
+ $this->copy(WS_DOCS . '/' . $infos['document_id'] . '/html/p' . $infos['document_page'] . '.svg', $this->vdir . '/data/contents/p' . $page . '.svg');
+ }
foreach (self::$resolutions as $r) {
- $this->copy(WS_DOCS . '/' . $infos['document_id'] . '/html/' . $this->backgroundsPrefix . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/data/background/' . $r . '/' . $this->backgroundsPrefix . $page . '.jpg');
+ $this->copy(WS_DOCS . '/' . $infos['document_id'] . '/html/' . $srcPrefix . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/data/background/' . $r . '/' . $this->backgroundsPrefix . $page . '.jpg');
}
$this->copy(WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page'] . '.jpg', $this->vdir . '/data/thumbnails/p' . $page . '.jpg');
}
protected function copy($s, $t) {
if (!file_exists($s)) {
+ fb($s . ' dont exists');
return;
}
if (file_exists($t) && filemtime($t) >= filemtime($s) && filesize($s) == filesize($t)) {
$res[] = $br;
}
$texts = '.texts{' . $this->writeCSSUA('transform-origin', 'top left') . ';';
- $texts.=$this->writeCSSUA('transform', 'scale(' . round((1 / $this->multiply) * $cssScale, 2) . ')') . ';';
- $texts.='width:' . $wm . '; max-width:' . $wm . ';';
- $texts.='height:' . $hm . '; max-height:' . $hm . ';';
+ $texts.=$this->writeCSSUA('transform', 'scale(' . round((1 / $this->multiply) * $cssScale * $this->cssSVGScale, 2) . ')') . ';';
+ $texts.='width:' . ($wm/$this->cssSVGScale) . '; max-width:' . ($wm/$this->cssSVGScale). ';';
+ $texts.='height:' . ($hm/$this->cssSVGScale) . '; max-height:' . ($hm/$this->cssSVGScale) . ';';
$texts.='}';
$res[] = $texts;