extranet/application/controllers/PrintController.php
2013-10-18 05:25:24 +00:00

232 lines
6.2 KiB
PHP

<?php
class PrintController extends Zend_Controller_Action
{
public function init(){}
/**
* 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':
case 'dirigeant':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
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':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
$params['idAnn'] = $elements[4];
$params['vue'] = $elements[5];
$params['p'] = $elements[6];
break;
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;
case 'evaluation':
$params['siret'] = $elements[2];
$params['id'] = $elements[3];
break;
case 'giant':
$params['Pays'] = $elements[2];
$params['Type'] = $elements[3];
$params['CompanyId'] = $elements[4];
$params['Language'] = $elements[5];
break;
case 'surveillance':
switch($action){
case 'fichier':
$params['nomFic'] = $elements[2];
$params['filtre'] = $elements[3];
break;
}
break;
case 'worldcheck':
$params['matchIdentifier'] = $elements[2];
break;
default:
return false;
break;
}
return array(
'controller' => $controller,
'action' => $action,
'params' => $params
);
}
public function indexAction(){}
/**
* 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);
$c = Zend_Registry::get('config');
$file = $c->profil->path->pages.'/'.$fichier.'.html';
if (!file_exists($file))
{
echo 'Fichier introuvable';
exit;
}
$pdf = new Scores_Wkhtml_Pdf();
$pdf->setOptions('footer-right', 'Page [page] sur [toPage]');
$pdf->setOptions('header-right', date('d/m/Y H:i:s'));
$output_file = $pdf->exec($file);
//Envoi au navigateur
if(!file_exists($output_file))
{
echo 'Impossible de générer le fichier PDF';
exit;
}
$content_type = 'application/pdf';
$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;
}
}
/**
* 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();
$fichier = $request->getParam('fichier', '');
if (substr($fichier,-5)!='.html') {
echo 'Fichier incorrect';
exit;
}
$fichier = str_replace('.html', '', $fichier);
$elements = $this->pageParams($fichier);
if ($elements===false){
exit;
}
$this->view->assign('controller', $elements['controller']);
$this->view->assign('action', $elements['action']);
$this->view->assign('params', $elements['params']);
}
/**
* 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;
}
$c = Zend_Registry::get('config');
$file = $c->profil->path->files.'/'.$fichier;
if (!file_exists($file)){
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($file);
}
}