136 lines
4.5 KiB
PHP
136 lines
4.5 KiB
PHP
<?php
|
|
/**
|
|
* Header file
|
|
*/
|
|
error_reporting(E_ALL);
|
|
define('CLI', (PHP_SAPI == 'cli') ? true : false);
|
|
define('EOL', CLI ? PHP_EOL : '<br />');
|
|
define('SCRIPT_FILENAME', basename($_SERVER['SCRIPT_FILENAME'], '.php'));
|
|
define('IS_INDEX', SCRIPT_FILENAME == 'index');
|
|
|
|
require_once '../src/PhpWord/Autoloader.php';
|
|
\PhpOffice\PhpWord\Autoloader::register();
|
|
|
|
// Set writers
|
|
$writers = array('Word2007' => 'docx', 'ODText' => 'odt', 'RTF' => 'rtf', 'HTML' => 'html', 'PDF' => 'pdf');
|
|
|
|
// Set PDF renderer
|
|
$rendererName = \PhpOffice\PhpWord\Settings::PDF_RENDERER_DOMPDF;
|
|
$rendererLibraryPath = ''; // DomPDF library path
|
|
|
|
if (!\PhpOffice\PhpWord\Settings::setPdfRenderer($rendererName, $rendererLibraryPath)) {
|
|
$writers['PDF'] = null;
|
|
}
|
|
|
|
// Return to the caller script when runs by CLI
|
|
if (CLI) {
|
|
return;
|
|
}
|
|
|
|
// Set titles and names
|
|
$pageHeading = str_replace('_', ' ', SCRIPT_FILENAME);
|
|
$pageTitle = IS_INDEX ? 'Welcome to ' : "{$pageHeading} - ";
|
|
$pageTitle .= 'PHPWord';
|
|
$pageHeading = IS_INDEX ? '' : "<h1>{$pageHeading}</h1>";
|
|
|
|
// Populate samples
|
|
$files = '';
|
|
if ($handle = opendir('.')) {
|
|
while (false !== ($file = readdir($handle))) {
|
|
if (preg_match('/^Sample_\d+_/', $file)) {
|
|
$name = str_replace('_', ' ', preg_replace('/(Sample_|\.php)/', '', $file));
|
|
$files .= "<li><a href='{$file}'>{$name}</a></li>";
|
|
}
|
|
}
|
|
closedir($handle);
|
|
}
|
|
|
|
/**
|
|
* Get results
|
|
*
|
|
* @param \PhpOffice\PhpWord\PhpWord $phpWord
|
|
* @param string $filename
|
|
* @param array $writers
|
|
* @return string
|
|
*/
|
|
function write($phpWord, $filename, $writers)
|
|
{
|
|
$result = '';
|
|
|
|
// Write
|
|
foreach ($writers as $writer => $extension) {
|
|
$result .= date('H:i:s') . " Write to {$writer} format";
|
|
if (!is_null($extension)) {
|
|
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, $writer);
|
|
$xmlWriter->save("{$filename}.{$extension}");
|
|
rename("{$filename}.{$extension}", "results/{$filename}.{$extension}");
|
|
} else {
|
|
$result .= ' ... NOT DONE!';
|
|
}
|
|
$result .= EOL;
|
|
}
|
|
|
|
// Do not show execution time for index
|
|
if (!IS_INDEX) {
|
|
$result .= date('H:i:s') . " Done writing file(s)" . EOL;
|
|
$result .= date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" . EOL;
|
|
}
|
|
|
|
// Return
|
|
if (CLI) {
|
|
$result .= 'The results are stored in the "results" subdirectory.' . EOL;
|
|
} else {
|
|
if (!IS_INDEX) {
|
|
$types = array_values($writers);
|
|
$result .= '<p> </p>';
|
|
$result .= '<p>Results: ';
|
|
foreach ($types as $type) {
|
|
$resultFile = 'results/' . SCRIPT_FILENAME . '.' . $type;
|
|
if (file_exists($resultFile)) {
|
|
$result .= "<a href='{$resultFile}' class='btn btn-primary'>{$type}</a> ";
|
|
}
|
|
}
|
|
$result .= '</p>';
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
?>
|
|
<title><?php echo $pageTitle; ?></title>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
|
|
<link rel="stylesheet" href="bootstrap/css/phpword.css" />
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="navbar navbar-default" role="navigation">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="./">PHPWord</a>
|
|
</div>
|
|
<div class="navbar-collapse collapse">
|
|
<ul class="nav navbar-nav">
|
|
<li class="dropdown active">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Samples
|
|
<strong class="caret"></strong></a>
|
|
<ul class="dropdown-menu"><?php echo $files; ?></ul>
|
|
</li>
|
|
</ul>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li><a href="https://github.com/PHPOffice/PHPWord">Github</a></li>
|
|
<li><a href="http://phpword.readthedocs.org/en/develop/">Docs</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php echo $pageHeading; ?>
|