xref: /plugin/dw2pdf/renderer.php (revision aab792a5e90dcd5b25ce128eccdb1dd0d37a968f)
1a876b55bSAndreas Gohr<?php
2a876b55bSAndreas Gohr/**
3a876b55bSAndreas Gohr * DokuWiki Plugin dw2pdf (Renderer Component)
4a876b55bSAndreas Gohr *
5a876b55bSAndreas Gohr * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6a876b55bSAndreas Gohr * @author  Andreas Gohr <gohr@cosmocode.de>
7a876b55bSAndreas Gohr */
8a876b55bSAndreas Gohr
9a876b55bSAndreas Gohr// must be run within Dokuwiki
10a876b55bSAndreas Gohrif (!defined('DOKU_INC')) die();
11a876b55bSAndreas Gohr
12a876b55bSAndreas Gohrif (!defined('DOKU_LF')) define('DOKU_LF', "\n");
13a876b55bSAndreas Gohrif (!defined('DOKU_TAB')) define('DOKU_TAB', "\t");
14a876b55bSAndreas Gohrrequire_once DOKU_INC.'inc/parser/xhtml.php';
15a876b55bSAndreas Gohr
16a876b55bSAndreas Gohrclass renderer_plugin_dw2pdf extends Doku_Renderer_xhtml {
17a876b55bSAndreas Gohr
18a876b55bSAndreas Gohr    /**
19a876b55bSAndreas Gohr     * Make available as XHTML replacement renderer
20a876b55bSAndreas Gohr     */
21a876b55bSAndreas Gohr    public function canRender($format){
22a876b55bSAndreas Gohr        if($format == 'xhtml') return true;
23a876b55bSAndreas Gohr        return false;
24a876b55bSAndreas Gohr    }
25a876b55bSAndreas Gohr
26a876b55bSAndreas Gohr    // FIXME override any methods of Doku_Renderer_xhtml here
27a876b55bSAndreas Gohr
28a876b55bSAndreas Gohr
29a876b55bSAndreas Gohr    /**
30a876b55bSAndreas Gohr     * Simplified header printing with PDF bookmarks
31a876b55bSAndreas Gohr     */
32a876b55bSAndreas Gohr    function header($text, $level, $pos) {
33a876b55bSAndreas Gohr        if(!$text) return; //skip empty headlines
34a876b55bSAndreas Gohr
35a876b55bSAndreas Gohr        // add PDF bookmark
36a876b55bSAndreas Gohr        $bmlevel = $this->getConf('maxbookmarks');
37a876b55bSAndreas Gohr        if($bmlevel && $bmlevel >= $level){
38a876b55bSAndreas Gohr            $this->doc .= '<bookmark content="'.$this->_xmlEntities($text).'" level="'.($level-1).'" />';
39a876b55bSAndreas Gohr        }
40a876b55bSAndreas Gohr
41a876b55bSAndreas Gohr        // print header
42a876b55bSAndreas Gohr        $this->doc .= DOKU_LF."<h$level>";
43a876b55bSAndreas Gohr        $this->doc .= $this->_xmlEntities($text);
44a876b55bSAndreas Gohr        $this->doc .= "</h$level>".DOKU_LF;
45a876b55bSAndreas Gohr    }
46a876b55bSAndreas Gohr
47*aab792a5SAndreas Gohr    /**
48*aab792a5SAndreas Gohr     * Wrap centered media in a div to center it
49*aab792a5SAndreas Gohr     */
50*aab792a5SAndreas Gohr    function _media ($src, $title=NULL, $align=NULL, $width=NULL,
51*aab792a5SAndreas Gohr                      $height=NULL, $cache=NULL, $render = true) {
52*aab792a5SAndreas Gohr
53*aab792a5SAndreas Gohr        $out = '';
54*aab792a5SAndreas Gohr        if($align == 'center'){
55*aab792a5SAndreas Gohr            $out .= '<div align="center" style="text-align: center">';
56*aab792a5SAndreas Gohr        }
57*aab792a5SAndreas Gohr
58*aab792a5SAndreas Gohr        $out .= parent::_media ($src, $title, $align, $width, $height, $cache, $render);
59*aab792a5SAndreas Gohr
60*aab792a5SAndreas Gohr        if($align == 'center'){
61*aab792a5SAndreas Gohr            $out .= '</div>';
62*aab792a5SAndreas Gohr        }
63*aab792a5SAndreas Gohr
64*aab792a5SAndreas Gohr        return $out;
65*aab792a5SAndreas Gohr    }
66*aab792a5SAndreas Gohr
67a876b55bSAndreas Gohr}
68a876b55bSAndreas Gohr
69