extranet/application/controllers/PrintController.php

204 lines
5.5 KiB
PHP
Raw Normal View History

<?php
class PrintController extends Zend_Controller_Action
{
2011-05-10 07:25:07 +00:00
public function init(){}
2011-05-10 07:25:07 +00:00
/**
* Renvoie les paramètres pour l'impression
*/
protected function pageParams($fichierPart)
{
$elements = explode('-', $fichierPart);
$controller = $elements[0];
$action = $elements[1];
$params = array();
switch($controller){
case 'identite':
2011-07-13 10:06:39 +00:00
case 'dirigeant':
2011-05-10 07:25:07 +00:00
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
2011-07-13 10:06:39 +00:00
case 'finance':
switch($action){
case 'synthese':
case 'bilan':
$params['typeBilan'] = $elements[4];
break;
case 'ratios':
$params['typeBilan'] = $elements[4];
$params['mil'] = $elements[5];
break;
case 'liasse':
$params['unit'] = $elements[4];
$params['date'] = $elements[5];
break;
}
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
case 'juridique':
switch($action){
case 'annonces':
case 'infosreg':
case 'conventions':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
case 'competences':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
$params['type'] = $elements[4];
break;
case 'marques':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
$params['idObject'] = $elements[4];
break;
default:
return false;
break;
}
break;
2011-08-19 07:54:16 +00:00
case 'evaluation':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
2011-05-18 09:46:24 +00:00
default:
return false;
break;
2011-05-10 07:25:07 +00:00
}
return array(
'controller' => $controller,
'action' => $action,
'params' => $params
);
}
public function indexAction(){}
2011-05-10 07:25:07 +00:00
/**
* Imprime la page en PDF
* Par défaut, le contenu html a déjà été enregistré..
* Mais si ce n'est pas le cas retrouver le contenu
* Générer le PDF gràce à wkhtmltopdf
* Attention à bien retrouver les css spécifiques pour l'impression
* !! Cacher le menu display:none
*/
public function pdfAction()
{
$request = $this->getRequest();
$fichier = $request->getParam('fichier');
if (substr($fichier,-4)!='.pdf') {
echo 'Fichier incorrect';
exit;
}
$fichier = str_replace('.pdf', '', $fichier);
2011-05-18 09:46:24 +00:00
if (!file_exists(APPLICATION_PATH.'/../cache/pages/'.$fichier.'.html'))
{
echo 'Fichier introuvable';
exit;
}
require_once 'wkhtmltopdf/wkhtmltopdf.php';
$pdf = new wkhtmltopdf();
$output_file = $pdf->exec(APPLICATION_PATH.'/../cache/pages/'.$fichier.'.html');
2011-05-18 09:46:24 +00:00
//Envoi au navigateur
if(!file_exists($output_file))
{
echo 'Impossible de générer le fichier PDF';
exit;
}
2011-05-18 10:01:23 +00:00
$content_type = 'application/pdf';
2011-05-18 09:46:24 +00:00
$dest = 'I';
switch($dest)
{
case 'I': //Send to standard output
header('Content-type: '.$content_type.'');
header('Content-Length: '.filesize($output_file));
header('Content-MD5: '.base64_encode(md5_file($output_file)));
header('Content-Disposition: inline; filename="'.basename($output_file).'"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
echo file_get_contents($output_file);
exit; // nécessaire pour être certain de ne pas envoyer de fichier corrompu
break;
case 'D': //Download file
header('Content-Tranfer-Encoding: none');
header('Content-Length: '.filesize($output_file));
header('Content-MD5: '.base64_encode(md5_file($output_file)));
header('Content-Type: application/octetstream; name="'.basename($output_file).'"');
header('Content-Disposition: attachment; filename="'.basename($output_file).'"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
//header('Date: '.gmdate(DATE_RFC1123););
//header('Expires: '.gmdate(DATE_RFC1123, time()+1));
//header('Last-Modified: '.gmdate(DATE_RFC1123, filemtime($output_file)));
echo file_get_contents($output_file);
exit; // nécessaire pour être certain de ne pas envoyer de fichier corrompu
break;
}
}
2011-05-10 07:25:07 +00:00
/**
* Imprime la page en activant le javascript d'impression
* Il faut récupérer le controller et l'action du nom du fichier, ainsi que
* les paramètres
* Par exemple :
* identite-fiche-siret-id.html
*/
public function ecranAction()
{
$request = $this->getRequest();
2011-05-09 15:47:51 +00:00
$fichier = $request->getParam('fichier', '');
2011-05-10 07:25:07 +00:00
if (substr($fichier,-5)!='.html') {
echo 'Fichier incorrect';
exit;
}
2011-05-09 15:47:51 +00:00
$fichier = str_replace('.html', '', $fichier);
2011-05-10 07:25:07 +00:00
$elements = $this->pageParams($fichier);
2011-05-18 09:46:24 +00:00
if ($elements===false){
exit;
}
2011-05-10 07:25:07 +00:00
$this->view->assign('controller', $elements['controller']);
$this->view->assign('action', $elements['action']);
$this->view->assign('params', $elements['params']);
}
2011-05-24 06:25:58 +00:00
/**
* Envoi le fichier XML de l'objet sérialiser sur la sortie standard
*/
public function xmlAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$request = $this->getRequest();
$fichier = $request->getParam('fichier', '');
if (substr($fichier,-4)!='.xml') {
echo 'Fichier incorrect.';
exit;
}
if (!file_exists(APPLICATION_PATH.'/../cache/pagesxml/'.$fichier)){
2011-05-24 06:25:58 +00:00
echo "Erreur lors de la génération du fichier.";
exit;
}
header("Content-type: application/xml");
header("Content-Disposition: attachement; filename=\"$fichier\"");
flush();
echo file_get_contents(APPLICATION_PATH.'/../cache/pagesxml/'.$fichier);
2011-05-24 06:25:58 +00:00
}
}