11ef68647SAndreas Gohr<?php 25db42babSAndreas Gohr/** 35db42babSAndreas Gohr * Wrapper around the mpdf library class 45db42babSAndreas Gohr * 55db42babSAndreas Gohr * This class overrides some functions to make mpdf make use of DokuWiki' 65db42babSAndreas Gohr * standard tools instead of its own. 75db42babSAndreas Gohr * 85db42babSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 95db42babSAndreas Gohr */ 10c1acf1feSGerrit Uitslagglobal $conf; 111c9fae9eSAndreas Gohrif(!defined('_MPDF_TEMP_PATH')) define('_MPDF_TEMP_PATH', $conf['tmpdir'] . '/dwpdf/' . rand(1, 1000) . '/'); 12ca0441e7SGerrit Uitslag 130119ca25SAndreas Gohrrequire_once __DIR__ . '/vendor/autoload.php'; 140576bb86SMichael Großerequire __DIR__ . '/DokuImageProcessorDecorator.class.php'; 151ef68647SAndreas Gohr 16ca0441e7SGerrit Uitslag/** 17ca0441e7SGerrit Uitslag * Class DokuPDF 18ca0441e7SGerrit Uitslag * Some DokuWiki specific extentions 19ca0441e7SGerrit Uitslag */ 200119ca25SAndreas Gohrclass DokuPDF extends \Mpdf\Mpdf { 211ef68647SAndreas Gohr 22*2bf2edefSGerrit Uitslag /** 23*2bf2edefSGerrit Uitslag * DokuPDF constructor. 24*2bf2edefSGerrit Uitslag * 25*2bf2edefSGerrit Uitslag * @param string $pagesize 26*2bf2edefSGerrit Uitslag * @param string $orientation 27*2bf2edefSGerrit Uitslag * @param int $fontsize 28*2bf2edefSGerrit Uitslag */ 29f8f1ee5aSAndreas Gohr function __construct($pagesize = 'A4', $orientation = 'portrait', $fontsize = 11) { 305bd9be9cSGerrit Uitslag global $conf; 315bd9be9cSGerrit Uitslag 321c9fae9eSAndreas Gohr io_mkdir_p(_MPDF_TEMP_PATH); 331ef68647SAndreas Gohr 346ea88a05SAndreas Gohr $format = $pagesize; 35acf3824dSGerrit Uitslag if($orientation == 'landscape') { 36acf3824dSGerrit Uitslag $format .= '-L'; 37acf3824dSGerrit Uitslag } 386ea88a05SAndreas Gohr 395bd9be9cSGerrit Uitslag switch($conf['lang']) { 405bd9be9cSGerrit Uitslag case 'zh': 415bd9be9cSGerrit Uitslag case 'zh-tw': 425bd9be9cSGerrit Uitslag case 'ja': 435bd9be9cSGerrit Uitslag case 'ko': 445bd9be9cSGerrit Uitslag $mode = '+aCJK'; 455bd9be9cSGerrit Uitslag break; 465bd9be9cSGerrit Uitslag default: 475bd9be9cSGerrit Uitslag $mode = 'UTF-8-s'; 485bd9be9cSGerrit Uitslag 495bd9be9cSGerrit Uitslag } 505bd9be9cSGerrit Uitslag 511ef68647SAndreas Gohr // we're always UTF-8 520119ca25SAndreas Gohr parent::__construct( 530119ca25SAndreas Gohr array( 540119ca25SAndreas Gohr 'mode' => $mode, 55f8f1ee5aSAndreas Gohr 'format' => $format, 560576bb86SMichael Große 'fontsize' => $fontsize, 570576bb86SMichael Große 'ImageProcessorClass' => DokuImageProcessorDecorator::class, 5898a938f1SGerrit Uitslag 'tempDir' => _MPDF_TEMP_PATH //$conf['tmpdir'] . '/tmp/dwpdf' 590119ca25SAndreas Gohr ) 600119ca25SAndreas Gohr ); 610576bb86SMichael Große 62c00b769aSLarsDW223 $this->autoScriptToLang = true; 63c00b769aSLarsDW223 $this->baseScript = 1; 64c00b769aSLarsDW223 $this->autoVietnamese = true; 65c00b769aSLarsDW223 $this->autoArabic = true; 66c00b769aSLarsDW223 $this->autoLangToFont = true; 67c00b769aSLarsDW223 681ef68647SAndreas Gohr $this->ignore_invalid_utf8 = true; 692585efdfSKlap-in $this->tabSpaces = 4; 701c9fae9eSAndreas Gohr } 711ef68647SAndreas Gohr 721c9fae9eSAndreas Gohr /** 731c9fae9eSAndreas Gohr * Cleanup temp dir 741c9fae9eSAndreas Gohr */ 751c9fae9eSAndreas Gohr function __destruct() { 76acf3824dSGerrit Uitslag io_rmdir(_MPDF_TEMP_PATH, true); 771ef68647SAndreas Gohr } 781ef68647SAndreas Gohr 79a06728a6SAndreas Gohr /** 80a06728a6SAndreas Gohr * Decode all paths, since DokuWiki uses XHTML compliant URLs 81*2bf2edefSGerrit Uitslag * 82*2bf2edefSGerrit Uitslag * @param string $path 83*2bf2edefSGerrit Uitslag * @param string $basepath 84a06728a6SAndreas Gohr */ 85a06728a6SAndreas Gohr function GetFullPath(&$path, $basepath = '') { 86a06728a6SAndreas Gohr $path = htmlspecialchars_decode($path); 87a06728a6SAndreas Gohr parent::GetFullPath($path, $basepath); 88a06728a6SAndreas Gohr } 891ef68647SAndreas Gohr} 90