Skip to content

Instantly share code, notes, and snippets.

@erikfrerejean
Created May 22, 2013 21:48
Show Gist options
  • Save erikfrerejean/5631220 to your computer and use it in GitHub Desktop.
Save erikfrerejean/5631220 to your computer and use it in GitHub Desktop.
<?php
if (!class_exists('CreateDocx')) {
require __DIR__ . '/phpdocx_free/classes/CreateDocx.inc';
}
$file = new splFileInfo(tempnam('/tmp/', 'atlas_toets_') . '.docx');
$docx = new CreateDocx($file->getExtension());
//-- Create the header and footer
$params = array(
'header' => array(
'font' => 'helvetica',
'jc' => 'right',
'textWrap' => 5,
),
'footer' => array(
'font' => 'helvetica',
'jc' => 'center',
'textWrap' => 5,
),
);
$docx->addHeader('Page header', $params['header']);
$docx->addFooter('Atlas', $params['footer']);
//-- Create the body
// Set the dummy data
$data = array(
array(
'title' => 'Lorem',
'content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec molestie, felis vitae dapibus commodo, mauris lorem viverra libero, non molestie justo lacus a dolor. Curabitur vehicula orci quis tellus vehicula ac dictum diam sollicitudin. Cras eget justo at felis pretium ullamcorper. Donec dignissim ante a urna interdum porta. Nulla sollicitudin, neque interdum tempus dictum, mauris orci aliquet tellus, vel accumsan ligula nisl nec quam. Sed lobortis viverra tincidunt. Phasellus porttitor, dui et condimentum pulvinar, neque mi porttitor nunc, eget vehicula ipsum massa suscipit leo. Sed fermentum placerat est in commodo. Suspendisse imperdiet ligula vitae leo feugiat ac pulvinar justo semper. Duis feugiat augue nec magna porttitor ornare. Sed pulvinar euismod purus, vitae tempus diam imperdiet nec.',
),
array(
'title' => 'In',
'content' =>'In ultricies quam at mauris iaculis sed ultrices lacus feugiat. Sed fermentum nibh eget mauris ornare suscipit. Nam quis mi mauris, nec rhoncus justo. In sed arcu risus. Nam porta porta lacus, sit amet consectetur eros gravida in. Ut molestie, purus et pharetra lobortis, arcu erat molestie tellus, quis interdum augue lorem non felis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris non dolor mi, at interdum tortor.',
),
array(
'title' => 'Morbi rutrum',
'content' =>'Morbi rutrum adipiscing magna, nec varius tellus varius eget. Donec justo libero, aliquet eget porttitor sit amet, molestie non nunc. Praesent lacinia accumsan nibh id sollicitudin. Nunc dui ante, mattis vel egestas non, porttitor nec neque. Aliquam dapibus, est at sodales laoreet, est libero vulputate felis, tempus convallis eros ligula non elit. Phasellus vehicula varius diam eu adipiscing. Pellentesque vel leo nisi. Suspendisse iaculis, arcu blandit condimentum pulvinar, tellus sem placerat ipsum, et scelerisque enim diam iaculis lectus. In sed nibh vitae diam auctor scelerisque ut sed nisl. Aliquam pellentesque dui id neque condimentum sodales.',
),
array(
'title' => 'Morbi consectetur',
'content' =>'Morbi consectetur vehicula nulla, at dignissim felis tristique varius. In rutrum vehicula purus ut consectetur. Fusce varius risus at mi lobortis imperdiet. Vivamus semper felis sit amet magna pellentesque a varius eros sagittis. Cras justo ligula, mattis ac tincidunt sit amet, pulvinar at felis. Fusce posuere egestas commodo. Donec velit eros, malesuada eu fermentum et, faucibus eget magna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque egestas gravida dolor, id faucibus magna sollicitudin ac.',
),
array(
'title' => 'Sed',
'content' =>'Sed dapibus, risus nec convallis egestas, mi erat hendrerit erat, a pellentesque felis metus sit amet nulla. Vestibulum venenatis accumsan convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In mollis magna vel lectus tempor sed ultricies arcu aliquam. Fusce aliquet, lacus id porta auctor, neque eros euismod dolor, id mollis est lorem non nulla. Maecenas id magna eget metus sagittis condimentum. Suspendisse hendrerit congue magna, ac blandit leo congue id. In hac habitasse platea dictumst. Suspendisse egestas massa et ante lacinia vulputate. Cras ante dui, ultricies sed sagittis at, laoreet id elit. Vestibulum at eros vel massa imperdiet fringilla.',
),
);
// Setup params
$headerParams = array(
'b' => 'single',
'color' => '000080',
'u' => 'double',
// Geen idee waarom, maar de library heeft dit nodig
'val' => true,
);
$contentParams = array(
'color' => '000000',
);
// Loop through the data and add the content
foreach ($data as $d) {
// Add Header
$docx->addTitle('HEADER: ' . $d['title'], $headerParams);
// Add Content
$docx->addText($d['content'], $contentParams);
// Add some whitespace
for ($i = 0; $i <= 5; $i++) {
$docx->addBreak('line');
}
}
$filename = $file->getBasename('.' . $file->getExtension());
$docx->createDocx($file->getPath() . '/' . $filename);
//-- Download it
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header("Content-Disposition: attachment; filename={$filename}");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
ob_clean();
flush();
echo readfile($file->getPathname());
unlink($file->getPathname());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment