load->model($models); $this->rootpath = $_SERVER['DOCUMENT_ROOT']; $this->phantomPath = FCPATH.'js_lib/phantom/pdfPrint.js'; } function get_pdf($data){ $data = $this->set_variables($data); $filename = $data['filename']; $data['filename'] = $this->get_filename($data['filename'], $data['timestamp']); $data['header'] = '';//$this->get_header($data['header']); $data['pagesize'] = $this->get_page_size($data['pagesize']); $data['margins'] = $this->get_margins($data['margins']); $data['orientation']= $this->get_orientation($data['orientation']); $this->make_pdf($data); $this->download_pdf($data['filename'], $filename); } private function set_variables($vars){ $data = array('url'=>$vars['url'], 'filename'=>$vars['filename']); if(!isset($vars['timestamp'])) $vars['timestamp'] = TRUE; if(!isset($vars['header'])) $vars['header'] = TRUE; if(!isset($vars['pagesize'])) $vars['pagesize'] = FALSE; if(!isset($vars['margins'])) $vars['margins'] = FALSE; if(!isset($vars['orientation'])) $vars['orientation']= FALSE; $data['timestamp'] = $vars['timestamp'] ; $data['header'] = $vars['header'] ; $data['pagesize'] = $vars['pagesize'] ; $data['margins'] = $vars['margins'] ; $data['orientation']= $vars['orientation']; return $data; } private function make_pdf($data){ // $strexec = $this->config->item('phantompath').'phantomjs '.$this->rootpath.$this->phantomPath.' '; $strexec = 'phantomjs --ssl-protocol=any '.$this->phantomPath.' '; // var_dump('strexec', $strexec); // die; // echo json_encode($data); $strexec.= "'".json_encode($data)."'"; // echo $strexec; // exit; exec($strexec); } private function download_pdf($filename, $downloadname){ $this->load->helper('download'); $data = file_get_contents($filename); // Read the file's contents force_download($downloadname, $data); chmod($filename, 0777); //var_dump('file name na download is ' , $filename); unlink($filename); } private function get_filename($filename, $timestamp){ if(strtoupper(substr($filename, -4))=='.PDF'){ $filename = substr($filename, 0, (strlen($filename)-4)); } if($timestamp){ date_default_timezone_set("UTC"); $date = new DateTime(); $filename.='_'.$date->format('U'); }else{ $filename; } return MYROOTPATH.$this->pdffolder.$filename.'.pdf'; } private function get_header($header){ if(!$header){ return FALSE; }elseif(strlen($header)<=1){ return $this->load->view('ijkpartituur/reports/default_header', '', TRUE); }else{ return $header; } } private function get_footer($header){ if(!$header){ return FALSE; }elseif(strlen($header)<=1){ return $this->load->view('reports/default_footer', '', TRUE); }else{ return $header; } } private function get_page_size($pagesize){ if(!$pagesize){ return $this->pagesize; }elseif(!in_array($pagesize, array('A3', 'A4', 'A5', 'Legal', 'Letter', 'Tabloid'))){ return $this->pagesize; }else{ return $pagesize; } } private function get_margins($margins){ $add=''; if(!$margins){ return $this->margins; }elseif(!is_array($margins)){ $margins = str_replace('cm', $margins); if(!is_numeric($margins)) return $this->margins; return array($margins.'cm',$margins.'cm',$margins.'cm',$margins.'cm'); }elseif(count($margins)==2){ $margin1 = str_replace('cm', $margins[0]); $margin2 = str_replace('cm', $margins[1]); if(!is_numeric($margin1) && !is_numeric($margins2)) return $this->margins; if(!is_numeric($margin1)){ return array($this->margins[0].'cm', $margins2.'cm', $this->margins[2].'cm', $margins2.'cm'); }elseif(!is_numeric($margin1)){ return array($margins1.'cm', $this->margins[1].'cm', $margins1.'cm', $this->margins[3].'cm'); }else{ return array($margins1.'cm', $margins2.'cm', $margins1.'cm', $margins2.'cm'); } }elseif(count($margins)==4){ for($i=0; $i<=3; $i++){ if(is_numeric(str_replace('cm', '',$margins[$i]))){ $newmargins[$i] = str_replace('cm', '',$margins[$i]). 'cm'; }else{ $newmargins[$i] = str_replace('cm', '',$this->margins[$i]). 'cm'; } } return $newmargins; }else{ return $this->margins; } } private function get_orientation($orientation){ if(in_array($orientation, array('portrait', 'landscape'))){ return $orientation; }else{ return $this->orientation; } } }