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 */ 10*32ff69b6SAndreas Gohr 11*32ff69b6SAndreas Gohruse dokuwiki\plugin\dw2pdf\DokuImageProcessorDecorator; 12ca0441e7SGerrit Uitslag 130119ca25SAndreas Gohrrequire_once __DIR__ . '/vendor/autoload.php'; 141ef68647SAndreas Gohr 15ca0441e7SGerrit Uitslag/** 16ca0441e7SGerrit Uitslag * Class DokuPDF 17ca0441e7SGerrit Uitslag * Some DokuWiki specific extentions 18ca0441e7SGerrit Uitslag */ 19*32ff69b6SAndreas Gohrclass DokuPDF extends \Mpdf\Mpdf 20*32ff69b6SAndreas Gohr{ 211ef68647SAndreas Gohr 222bf2edefSGerrit Uitslag /** 232bf2edefSGerrit Uitslag * DokuPDF constructor. 242bf2edefSGerrit Uitslag * 252bf2edefSGerrit Uitslag * @param string $pagesize 262bf2edefSGerrit Uitslag * @param string $orientation 272bf2edefSGerrit Uitslag * @param int $fontsize 282bf2edefSGerrit Uitslag */ 29*32ff69b6SAndreas Gohr function __construct($pagesize = 'A4', $orientation = 'portrait', $fontsize = 11) 30*32ff69b6SAndreas Gohr { 315bd9be9cSGerrit Uitslag global $conf; 325bd9be9cSGerrit Uitslag 33*32ff69b6SAndreas Gohr if (!defined('_MPDF_TEMP_PATH')) define('_MPDF_TEMP_PATH', $conf['tmpdir'] . '/dwpdf/' . rand(1, 1000) . '/'); 341c9fae9eSAndreas Gohr io_mkdir_p(_MPDF_TEMP_PATH); 351ef68647SAndreas Gohr 366ea88a05SAndreas Gohr $format = $pagesize; 37acf3824dSGerrit Uitslag if ($orientation == 'landscape') { 38acf3824dSGerrit Uitslag $format .= '-L'; 39acf3824dSGerrit Uitslag } 406ea88a05SAndreas Gohr 415bd9be9cSGerrit Uitslag switch ($conf['lang']) { 425bd9be9cSGerrit Uitslag case 'zh': 435bd9be9cSGerrit Uitslag case 'zh-tw': 445bd9be9cSGerrit Uitslag case 'ja': 455bd9be9cSGerrit Uitslag case 'ko': 465bd9be9cSGerrit Uitslag $mode = '+aCJK'; 475bd9be9cSGerrit Uitslag break; 485bd9be9cSGerrit Uitslag default: 495bd9be9cSGerrit Uitslag $mode = 'UTF-8-s'; 505bd9be9cSGerrit Uitslag 515bd9be9cSGerrit Uitslag } 525bd9be9cSGerrit Uitslag 531ef68647SAndreas Gohr // we're always UTF-8 540119ca25SAndreas Gohr parent::__construct( 550119ca25SAndreas Gohr array( 560119ca25SAndreas Gohr 'mode' => $mode, 57f8f1ee5aSAndreas Gohr 'format' => $format, 580576bb86SMichael Große 'fontsize' => $fontsize, 590576bb86SMichael Große 'ImageProcessorClass' => DokuImageProcessorDecorator::class, 6098a938f1SGerrit Uitslag 'tempDir' => _MPDF_TEMP_PATH //$conf['tmpdir'] . '/tmp/dwpdf' 610119ca25SAndreas Gohr ) 620119ca25SAndreas Gohr ); 630576bb86SMichael Große 64c00b769aSLarsDW223 $this->autoScriptToLang = true; 65c00b769aSLarsDW223 $this->baseScript = 1; 66c00b769aSLarsDW223 $this->autoVietnamese = true; 67c00b769aSLarsDW223 $this->autoArabic = true; 68c00b769aSLarsDW223 $this->autoLangToFont = true; 69c00b769aSLarsDW223 701ef68647SAndreas Gohr $this->ignore_invalid_utf8 = true; 712585efdfSKlap-in $this->tabSpaces = 4; 721c9fae9eSAndreas Gohr } 731ef68647SAndreas Gohr 741c9fae9eSAndreas Gohr /** 751c9fae9eSAndreas Gohr * Cleanup temp dir 761c9fae9eSAndreas Gohr */ 77*32ff69b6SAndreas Gohr function __destruct() 78*32ff69b6SAndreas Gohr { 79acf3824dSGerrit Uitslag io_rmdir(_MPDF_TEMP_PATH, true); 801ef68647SAndreas Gohr } 811ef68647SAndreas Gohr 82a06728a6SAndreas Gohr /** 83a06728a6SAndreas Gohr * Decode all paths, since DokuWiki uses XHTML compliant URLs 842bf2edefSGerrit Uitslag * 852bf2edefSGerrit Uitslag * @param string $path 862bf2edefSGerrit Uitslag * @param string $basepath 87a06728a6SAndreas Gohr */ 88*32ff69b6SAndreas Gohr function GetFullPath(&$path, $basepath = '') 89*32ff69b6SAndreas Gohr { 90a06728a6SAndreas Gohr $path = htmlspecialchars_decode($path); 91a06728a6SAndreas Gohr parent::GetFullPath($path, $basepath); 92a06728a6SAndreas Gohr } 931ef68647SAndreas Gohr} 94