_is_buffering_output)) $request->buffer_output(false /*'nocompress'*/); $pagename = $request->getArg('pagename'); $dest = $request->getArg('dest'); $request->setArg('dest', false); $request->setArg('format', false); include_once 'lib/display.php'; include_once 'lib/loadsave.php'; array_unshift($pagelist->_pages, $request->_dbi->getPage($pagename)); require_once 'lib/WikiPluginCached.php'; $cache = new WikiPluginCached; $cache->newCache(); $tmpfile = $cache->tempnam(); $tmpdir = dirname($tmpfile); unlink($tmpfile); $WikiTheme->DUMP_MODE = 'PDFHTML'; _DumpHtmlToDir($tmpdir, new WikiDB_Array_generic_iter($pagelist->_pages), $request->getArg('exclude')); $WikiTheme->DUMP_MODE = false; return; } /* * Main action handler: action=pdf * TODO: inline cached content: /getimg.php? => image.png * Just use an external exe. */ function ConvertAndDisplayPdf(&$request) { global $WikiTheme; if (empty($request->_is_buffering_output)) $request->buffer_output(false /*'nocompress'*/); $pagename = $request->getArg('pagename'); $dest = $request->getArg('dest'); // Disable CACHE $WikiTheme->DUMP_MODE = true; include_once 'lib/display.php'; // TODO: urldecode pagename to get rid of %20 in filename.pdf displayPage($request, new Template('htmldump', $request)); $html = ob_get_contents(); $WikiTheme->DUMP_MODE = false; // check hook for external converters if (defined('USE_EXTERNAL_HTML2PDF') and USE_EXTERNAL_HTML2PDF ) { // See http://phpwiki.sourceforge.net/phpwiki/PhpWikiToDocBookAndPDF // htmldoc or ghostscript + html2ps or docbook (dbdoclet, xsltproc, fop) Header('Content-Type: application/pdf'); $request->discardOutput(); $request->buffer_output(false /*'nocompress'*/); require_once 'lib/WikiPluginCached.php'; $cache = new WikiPluginCached; $cache->newCache(); $tmpfile = $cache->tempnam('pdf.html'); $fp = fopen($tmpfile, "wb"); fwrite($fp, $html); fclose($fp); passthru(sprintf(USE_EXTERNAL_HTML2PDF, $tmpfile)); unlink($tmpfile); } // clean the hints errors global $ErrorManager; $ErrorManager->destroyPostponedErrors(); if (!empty($errormsg)) { $request->discardOutput(); } } // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: