mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-13 13:54:23 +00:00
77 lines
2.2 KiB
PHP
77 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Chill\DocGeneratorBundle\Controller;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\HeaderUtils;
|
|
use Symfony\Component\Routing\Annotation\Route;
|
|
use ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlOpenstackGenerator;
|
|
use PhpOffice\PhpWord\TemplateProcessor;
|
|
|
|
/**
|
|
* Class DocGeneratorController
|
|
*
|
|
* @package Chill\DocGenerator\Controller
|
|
*/
|
|
class DocGeneratorController extends AbstractController
|
|
{
|
|
/**
|
|
* @Route(
|
|
* "{_locale}/doc/gen/test",
|
|
* name="chill_docgenerator_test"
|
|
* )
|
|
*
|
|
* @param Request $request
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function testAction()
|
|
{
|
|
return (new Response())
|
|
->setContent('Test');
|
|
}
|
|
|
|
/**
|
|
* @Route(
|
|
* "{_locale}/doc/gen/test",
|
|
* name="chill_docgenerator_test"
|
|
* )
|
|
*
|
|
* @param Request $request
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function getDoc(Request $request, TempUrlOpenstackGenerator $tempUrlGenerator)
|
|
{
|
|
$p = $tempUrlGenerator->generate(
|
|
'GET',
|
|
'FORMULAIRE_AEB.docx',
|
|
$request->query->has('expires_delay') ? $request->query->getInt('expires_delay', 0) : null
|
|
);
|
|
|
|
$tmpfname = tempnam(sys_get_temp_dir(), 'DOC_TEMPLATE');
|
|
file_put_contents($tmpfname, file_get_contents($p->{"url"}));
|
|
|
|
$templateProcessor = new TemplateProcessor($tmpfname);
|
|
$templateProcessor->setValues(array('firstname' => 'John', 'lastname' => 'Doe'));
|
|
|
|
$tmpfname2 = tempnam(sys_get_temp_dir(), 'DOC_GENERATED');
|
|
$templateProcessor->saveAs($tmpfname2);
|
|
|
|
unlink($tmpfname);
|
|
|
|
$fileContent = fopen($tmpfname2, 'r'); // the generated file content
|
|
$response = new Response(fread($fileContent, filesize($tmpfname2)));
|
|
|
|
$disposition = HeaderUtils::makeDisposition(
|
|
HeaderUtils::DISPOSITION_ATTACHMENT,
|
|
'foo.docx'
|
|
);
|
|
|
|
$response->headers->set('Content-Disposition', $disposition);
|
|
unlink($tmpfname2);
|
|
|
|
return $response;
|
|
}
|
|
}
|