extranet/includes/print/print.php
2009-08-31 16:52:24 +00:00

116 lines
2.8 KiB
PHP

<?php
/*
Le nom de la page est passé en paramètre
Comme par le fichier index.php
On démarre la recupération du contenu - ob_start()
On charge main.php avec page2 = nom de la page
Les informations sont générées - ob_get_contents()
On éteint la récupération du contenu sans l'afficher - ob_end_clean();
On ecrit le contenu dans un fichier html (quid du hash ??) - gestion avec le nom d'utilisateur
On génére un pdf à partir du fichier HTML générer (wkhtmltopdf - attention au lien symbolique)
Faire un batch qui supprime les fichiers de la journée et d'avant vers 20 heures
*/
/**
* Envoi la page à imprimer au navigateur
* @param $filename
* @param $type
* @param $page
* @return void
*/
function print_page($filename, $type = 'pdf'){
global $firephp;
$path = PATH_SITE.'/cache';
$file = $path.'/'.$filename.'.html';
print_write_content($file);
switch($type){
case 'pdf':
$output_file = print_pdf($file);
$content_type = 'application/pdf';
break;
default: exit; break;
}
//Envoi au navigateur
$firephp->log($output_file, 'fichier');
$firephp->log(file_exists($output_file), 'fichier_exist');
if(file_exists($output_file)){
header("Content-type: $content_type");
header("Content-disposition: filename=\"$output_file\"");
print file_get_contents($output_file);
}
}
/**
* Démarre la capture du contenu
* @return unknown_type
*/
function print_capture(){
if (ob_start()===FALSE){
//TODO : Gestion des erreurs
}
}
/**
* Ecrit le contenu capturé dans un fichier
* @param $file
* @return void
*/
function print_write_content($file){
$length = ob_get_length();
$content = ob_get_contents();
if($content !== FALSE){
if( !file_put_contents($file, $content))
{
//TODO : Gestion des erreurs
}
}
if(ob_end_clean()===FALSE){
//TODO : Gestion des erreurs
}
}
/**
* Impression en PDF
* @param $file
* @return unknown_type
*/
function print_pdf($file){
$method = 'wkhtmltopdf';
return $method($file);
}
/**
* Impression en HTML
* @param $file
* @return void
*/
function print_html($file){}
/**
* Imprime un fichier HTML en PDF avec l'utilitaire wkhtmltopdf
* @param $file
* @return unknown_type
*/
function wkhtmltopdf($file){
$output_file = str_replace('.html', '.pdf', $file);
/*
* -n, --disable-javascript Do not allow webpages to run javascript.
* --user-style-sheet <url> Specify a user style sheet, to load with every page.
* --print-media-type Use print media-type instead of screen.
*/
if(file_exists($output_file)){ unlink($output_file); }
$options = '-n';
if (stristr(PHP_OS, 'WIN')) {
exec(realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.'wkhtmltopdf-0.8.3.exe '.$options.' "'.$file.'" "'.$output_file.'"');
} else {
exec(realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.'wkhtmltopdf '.$options.' "'.$file.'" "'.$output_file.'"');
}
return $output_file;
}