PhantomJS无法使用codeigniter + exec()

时间:2015-11-06 09:28:44

标签: php linux codeigniter pdf-generation phantomjs

我正在尝试使用Codeigniter,PhantomJS创建网页的pdf,我正在使用Linux操作系统。我有一个带exec()的phantom_helper文件。我有一些来自here的代码。当我在 linux终端窗口上运行Welcome.php时,我能够创建pdf文件。我在这里添加了我的代码,

控制器

phantomjs /var/www/PhantomJS/js/rasterize.js http://google.com /var/www/PhantomJS/pdf/Test.pdf

Phanthom_helper

public function index()
{
    $this->load->helper('phantomjs');
    $this->load->helper('url');
    $viewbox['generationStatus'] = 'PDF Generation successful';
    $url = 'http://google.com';
    $filename = strtotime(date('Y-m-d H:i:s')).'.pdf';
    $resp = rasterize_wrapper($url,$filename);
    $viewbox['filename'] = $resp;
    if($resp == 0)
    {
        $viewbox['filename'] = '';
        $viewbox['generationStatus'] = 'PDF Generation failed';
    }
    $this->load->view('welcome_message',$viewbox);
}

Rasterize.js

 if ( ! function_exists('rasterize_wrapper'))
    {
        function rasterize_wrapper($url='', $output=''){
          if($url=='' || $output=='')
            {
              show_error('URL or Output file name not defined correctly');  
              log_message('error','rasterize_wrapper: not initialized');
              exit;
            }
            $url = escapeshellcmd($url);
            exec('phantomjs '.realpath('js/rasterize.js').' '.$url.' '.realpath('pdf').'/'.$output,$output_status, $return_status);
            if($return_status == '0'){ return $output;}
            return 0;
        }
    }

1 个答案:

答案 0 :(得分:0)

我解决了问题。这段代码实际上正在运行。问题是因为我使用Linux,所以我必须为pdf保存文件夹设置文件夹权限。我已经设定了&得到了pdf。通过MEDIA QUERY @media print {....} Ty。

解决了Css问题