首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhantomJS不使用代码点火器+ exec()

PhantomJS不使用代码点火器+ exec()
EN

Stack Overflow用户
提问于 2015-11-06 09:28:43
回答 1查看 580关注 0票数 0

我正在尝试创建一个使用Codeigniter、PhantomJS和Linux的pdf网页。我有一个带有exec()的phantom_helper文件。我从这里那里得到了一些密码。当我在phantomjs /var/www/PhantomJS/js/rasterize.js http://google.com /var/www/PhantomJS/pdf/Test.pdf终端窗口上运行时,我能够创建pdf文件。在这里我加入了我的密码,

控制器

代码语言:javascript
复制
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);
}

Phanthom_helper

代码语言:javascript
复制
 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;
        }
    }

Rasterize.js

代码语言:javascript
复制
var page = new WebPage();
if (phantom.args.length < 2 || phantom.args.length > 3) {
    console.log('Usage: rasterize.js URL filename');
    phantom.exit();
} else {
    address = phantom.args[0];

    output = phantom.args[1];
    page.viewportSize = { width: 600, height: 600 };
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('Unable to load the address!');
        } else {
            window.setTimeout(function () {
                page.render(output);
                phantom.exit();
            }, 200);
        }
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 03:36:45

我把问题解决了。这段代码实际上起作用了。问题在于我是使用Linux的,所以我必须为pdf保存文件夹设置文件夹权限。我已经设置了它& got pdf。Css问题也通过执行媒体查询@media print {....} Ty来解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33563465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档